mcpField
L
linux-cgroups

linux-cgroups

github.com/alphaonedevクラウド・DevOps48 回インストール
リポジトリ

linux-cgroups について

linux-cgroupsは、Linux cgroups v2を使って複数のOpenClawインスタンスを管理するためのスキルです。メモリとCPUの制限、OOM保護、systemdスライスによるプロセス管理を扱います。

主な機能

  1. 01メモリ上限の設定
  2. 02CPUクォータの設定
  3. 03OOM保護の有効化
  4. 04systemdスライスによるプロセス分類
  5. 05cgroup内でのプロセス起動

活用シーン

  1. 01OpenClawインスタンスのメモリ制限
  2. 02複数インスタンス間のCPU配分
  3. 03共有ホストでのリソース枯渇防止
  4. 04本番環境でのプロセスリソース分離

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill linux-cgroups

インストール後、Claude Code で/linux-cgroupsを入力して読み込まれたか確認します。

詳細

linux-cgroups

目的

このスキルは、Linux cgroups v2 を使用して OpenClaw インスタンスのリソースを正確に管理します。メモリ制限、CPU クォータ、OOM(メモリ不足)保護、systemd スライスに重点を置き、マルチプロセスシステムでのリソース枯渇を防ぎ、パフォーマンスを最適化します。

使用するタイミング

Linux サーバーで複数の OpenClaw インスタンスを実行し、リソースを分離したり、負荷の高いタスクに制限を適用したり、本番環境での OOM による強制終了を防いだりする場合に、このスキルを使用します。コンテナーや仮想化環境など、ホストを共有するシナリオで適用し、CPU とメモリを公平に割り当てます。

主な機能

  • メモリ制限を設定して、OpenClaw インスタンスごとの使用量を上限以下に抑えます。たとえば、スワップを防ぐために memory.max を使用します。
  • cpu.max を使用して CPU クォータを適用し、CPU 帯域幅を制御して CPU 時間の割り当てを制限します。
  • memory.oom.group による OOM 保護を有効にして、プロセスに優先順位を付け、突然の終了を防ぎます。
  • systemd スライスを管理して階層的にリソースをグループ化し、複雑な構成で cgroups を入れ子にできるようにします。

使用パターン

cgroups を適用するには、cgroup 階層を作成し、制限を設定して、プロセスを割り当てます。必ず root または十分な権限を持つユーザーとして実行してください。OpenClaw では、インスタンスの起動を cgroup コンテキストでラップし、インスタンスごとの制限を適用します。例として、OpenClaw 用のスライスを作成し、プロセスを割り当てます。自動化には Bash スクリプトを使用し、v2 の cgroup パスが /sys/fs/cgroup/ 以下にあることを確認します。

主なコマンド/API

CLI ツール、またはファイルシステムを直接操作して cgroups を管理します。API キーは不要です。システムレベルのアクセスを使用します。

  • CLI コマンド:
    • cgroup を作成します:sudo cgcreate -g memory,cpu:/openclaw_slice
    • メモリ制限を設定します:sudo cgset -r memory.max=512M /openclaw_slice(512 MB に制限)
    • CPU クォータを設定します:sudo cgset -r cpu.max=100000 50000 /openclaw_slice(CPU コア 1 個の使用率を 50% に制限)
    • cgroup 内でプロセスを実行します:sudo cgexec -g memory,cpu:/openclaw_slice openclaw --run task
  • コードスニペット(Bash または Python):
    # Bash example to set and apply memory limit
    sudo cgcreate -g memory:/openclaw
    sudo cgset -r memory.max=1G /openclaw
    sudo cgexec -g memory:/openclaw openclaw --instance id1
    
    # Python snippet using subprocess (requires root)
    import subprocess
    subprocess.run(['cgcreate', '-g', 'memory:/openclaw'])
    subprocess.run(['cgset', '-r', 'memory.max=1G', '/openclaw'])
    subprocess.run(['cgexec', '-g', 'memory:/openclaw', 'openclaw', '--instance', 'id1'])
    
  • 設定形式:cgroup ファイルを直接編集します。たとえば、/sys/fs/cgroup/your_slice/memory.max に値を echo します。systemd の場合は、[Slice]\nMemoryMax=512M のように、/etc/systemd/system/ 以下の .slice ファイルでスライスを定義します。

統合に関する注意

コマンドを cgroup 内で実行するようにラップして OpenClaw と統合します。たとえば、起動スクリプトを変更して cgexec を含めます。ホストで cgroups v2 が使用されていることを確認してください(stat /sys/fs/cgroup/unified で確認できます)。v1 の場合は、systemctl を使用して移行します。複数インスタンスの構成では、OPENCLAW_CGROUP_PATH=/openclaw_slice などの環境変数を使用して cgroup の情報を渡します。systemd-cgtop または cat /sys/fs/cgroup/your_slice/memory.current で使用状況を監視します。

エラー処理

よくあるエラーには、権限拒否(sudo で解決)、無効な cgroup パス(ls /sys/fs/cgroup/ で確認)、OOM イベント(dmesg | grep -i oom でログを確認)などがあります。次のように対処します。

  • スクリプトで戻り値を確認します:if [ $? -ne 0 ]; then echo "Cgroup creation failed"; fi
  • メモリプレッシャーを監視します:cat /sys/fs/cgroup/your_slice/memory.oom_control を使用し、OOM が発生した場合にアラートを出します。
  • デバッグ:systemd スライスの場合は systemctl status your_slice を実行します。次のようなコード内のエラーを解析します:
    try:
        subprocess.run(['cgset', '-r', 'memory.max=1G', '/openclaw'], check=True)
    except subprocess.CalledProcessError as e:
        print(f"Error: {e.returncode} - {e.output}")
    

具体的な使用例

  1. 単一の OpenClaw インスタンスのメモリを制限する:cgroup スライスを作成し、メモリ上限を 2GB に設定して、インスタンスを実行します。コマンドの実行順:sudo cgcreate -g memory:/openclaw_inst1; sudo cgset -r memory.max=2G /openclaw_inst1; sudo cgexec -g memory:/openclaw_inst1 openclaw --instance inst1 --task process_data。これにより、インスタンスのメモリ使用量が 2GB を超えないようにし、ほかのプロセスの OOM を防ぎます。
  2. 複数のインスタンスに CPU クォータを適用する:OpenClaw タスクのグループに CPU 制限を設定します。例:sudo cgcreate -g cpu:/openclaw_group; sudo cgset -r cpu.max=200000 100000 /openclaw_group; sudo cgexec -g cpu:/openclaw_group openclaw --instance inst2 --task compute_loop。これにより、CPU コア 2 個分のクォータを、それぞれ 50% の使用率で適用し、インスタンス間のパフォーマンスのバランスを確保します。

グラフの関係性

  • 関連項目:linux(クラスター)。Linux のコアとなるリソース管理を基盤としているためです。
  • タグによる関連:cgroups(直接)、memory(機能)、limits(特徴)、performance(結果)。
  • 他のスキルへのリンク:cpu-management(より詳細な CPU 制御)、oom-handler(高度な OOM 戦略)。

コメント