Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

インストール

必要条件

  • Linux または WSL
  • cargo を含む Rust toolchain
  • daemon を自動管理したい場合は systemd --user
  • GPU の自動検出を使いたい場合は nvidia-smi

リポジトリを clone する

git clone https://github.com/ymgaq/slotd.git
cd slotd

付属スクリプトによるインストール

リポジトリルートで実行します。

./scripts/install.sh

デフォルトでは次を行います。

  • slotd を release ビルドする
  • slotd~/.local/bin にインストールする
  • sbatchsqueue などのコマンド alias を作成する
  • ~/.local/share/slotd に runtime root を作成する
  • ~/.config/slotd/slotd.env を生成する
  • systemd --user service をインストールして起動する

インストーラのオプション

オプション説明デフォルト
--repo-root PATH別のリポジトリルートからビルドする現在の repo
--profile NAME使用する Cargo profilerelease
--install-bin-dir PATHバイナリと alias のインストール先~/.local/bin
--runtime-root PATHSLOTD_ROOT として使う runtime root~/.local/share/slotd
--config-dir PATH設定ディレクトリ~/.config/slotd
--systemd-user-dir PATHuser unit ディレクトリ~/.config/systemd/user
--cpu-partitions VALUESLOTD_CPU_PARTITIONS に書く値cpu
--gpu-partitions VALUESLOTD_GPU_PARTITIONS に書く値gpu
--features VALUESLOTD_FEATURES に書く値未設定
--notify-cmd VALUESLOTD_NOTIFY_CMD に書く値未設定
--cgroup-base PATHSLOTD_CGROUP_BASE に書く値未設定
--skip-build既存のビルド成果物を再利用するoff
--skip-systemduser service をインストール・起動しないoff
--uninstallインストール済みの構成を削除するoff
--purge-runtimeuninstall 時に永続データも削除するoff

例:

./scripts/install.sh \
 --features cpu,gpu \
  --notify-cmd 'notify-send "slotd" "$SLOTD_JOB_ID $SLOTD_JOB_STATE"'

--cgroup-base を使う場合は、writable な cgroup v2 subtree を指定してください。 未設定のままなら CPU とメモリは予約量ベースのままです。

アンインストール

インストール済み構成を削除します。

./scripts/install.sh --uninstall

インストール済み構成と runtime state を両方削除します。

./scripts/install.sh --uninstall --purge-runtime

手動セットアップ

インストーラを使わない場合でも、直接ビルドして実行できます。

cargo build --release
SLOTD_ROOT="$HOME/.local/share/slotd" ./target/release/slotd daemon

別シェルでは同じ SLOTD_ROOT を使います。

SLOTD_ROOT="$HOME/.local/share/slotd" ./target/release/slotd sbatch --wrap 'echo hello'

Runtime Files

デフォルトの runtime root は次です。

~/.local/share/slotd

重要なファイルとディレクトリ:

  • run/slotd.sock
  • lib/state.db
  • lib/jobs/<job_id>/

client と daemon は必ず同じ SLOTD_ROOT を使う必要があります。