mcpField
J
jetson-headless-mode

jetson-headless-mode

github.com/nvidiaクラウド・DevOps3.8k1.2k 回インストール今日更新
リポジトリ

jetson-headless-mode について

Jetson のヘッドレスモード向けスキルです。最新のメモリ監査を基に、ユーザー空間のメモリ削減策を計画し、可逆的な変更を適用します。変更前はドライランが既定です。

主な機能

  1. 01メモリ監査データから計画を作成
  2. 02対象を絞って systemd とデーモンを設定
  3. 03既定でドライランを実行
  4. 04元に戻せるコマンドを提示

活用シーン

  1. 01デスクトップなしの Jetson 推論機器を準備
  2. 02ヘッドレス化によるメモリ削減を確認
  3. 03承認済みの可逆的なサービス変更を適用

インストール

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

$npx skills add https://github.com/nvidia/skills --skill jetson-headless-mode

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
scripts/
apply.sh
plan.sh

詳細

Jetson ヘッドレスモード

安全で元に戻せるユーザー空間のメモリ回収を、計画してから適用します。デフォルトの systemd ターゲットを graphical.target から切り替え、厳選した必須ではないデーモンを無効にします。これは Jetson でメモリを最も大きく、最も低リスクで節約できる方法です。

目的

実行中の監査データに基づいて、ユーザーが承認したヘッドレスモードの計画を作成し、デスクトップとデーモンのメモリ使用量を減らす、安全で元に戻せるユーザー空間の変更のみを Jetson に適用します。

使用する場合

  • 「GUI は不要なので、できるだけ多くのメモリを解放してください。」
  • 「この Jetson を推論用アプライアンス/エッジノードとして出荷します。」
  • jetson-memory-audit で default_systemd_target=graphical.target が示された場合、またはユーザーがヘッドレスと説明しているシステムで gdm3/lightdm/sddm がアクティブと示された場合。

使用しない場合

  • ユーザーがローカルデスクトップ、ディスプレイ出力、キオスク UI、または X/Wayland セッションを必要としている場合。この場合、グラフィカルターゲットやディスプレイマネージャーの無効化を推奨せず、読み取り専用の確認には jetson-memory-audit を使用し、代わりに GUI 以外のメモリ節約方法を提案してください。
  • 最新の監査データがない場合。変更を提案したり、削減量を見積もったりする前に、jetson-memory-audit を実行するか、その出力をユーザーに求めてください。

実機のデータを正確な情報源として使用してください。Jetson のファミリー、SKU/バリアント、メモリの合計、アクティブなディスプレイサービス、削減量の見積もりは、jetson-diagnostic/scripts/detect_jetson.sh、audit.json、または新たに実行した jetson-memory-audit から取得してください。値が入手できない場合は、推測せず不明と伝えてください。以下の削減量は上限値です。実際の差分は、変更前後の監査で報告される値です。

前提条件

  • 最新の jetson-memory-audit JSON スナップショットを用意します。
  • ユーザーがローカルデスクトップ、ディスプレイ出力、キオスク UI、または X/Wayland セッションを必要としていないことを確認します。
  • 変更には sudo とユーザーの明示的な承認が必要です。同じプロンプトですでに承認されている場合を除き、先にドライランを実行してください。
  • Jetson ホスト上、または systemd の状態にアクセスできるホスト可視のサンドボックス内で実行します。

利用可能なスクリプト

スクリプト目的引数
scripts/plan.shメモリ監査 JSON を読み込み、安全で元に戻せる推奨事項を含む計画を出力します。--audit PATH または --audit -、および --human。
scripts/apply.sh計画 JSON に含まれる安全なコマンドを表示または適用します。デフォルトはドライランです。--plan PATH または --plan -、--apply、--reboot、--drop-caches。

エージェントの実行環境が run_script に対応している場合は、これを使って scripts/plan.sh と scripts/apply.sh を実行し、出力の概要を説明してください。それ以外の場合は、リポジトリのルートから bash でスクリプトを実行してください。

手順

  1. scripts/plan.sh を実行し、audit.json(jetson-memory-audit から取得)を読み込んで、safety: safe の設定項目(ターゲットの切り替え、ディスプレイマネージャー、オーディオ、印刷、モデムなど)のみを含む計画を出力します。
  2. 計画をユーザーに提示し、承認を確認します。
  3. ドライランとして scripts/apply.sh --plan plan.json を実行します。実際に適用するには、--apply を付けて再実行します。その後ページキャッシュをフラッシュするには --drop-caches を、直ちに反映するには --reboot を追加します。
  4. jetson-memory-audit/scripts/audit.sh を再実行し、実際の差分を確認します。

想定ワークフロー

推定と適用にはスクリプトを使用し、静的な上限表だけでなく、現在のデバイスの状態に基づいて推奨事項を提示してください。

  • 「ヘッドレス化でどれくらい節約できるか」「推定」「計画」または本番環境の計画に関するプロンプトでは、scripts/plan.sh --audit <audit.json> を実行し、estimated_total_savings_mb、上位の recommendations[*].knob、ディスプレイマネージャーまたは graphical.target がアクティブかどうかを報告してください。apply.sh は実行しないでください。
  • ユーザーが今すぐヘッドレスモードを適用するよう明示したプロンプトでは、まずドライランとして scripts/apply.sh --plan <plan.json> を1回実行してください。同じプロンプト内ですでに変更の承認を得ている場合は、同じコマンドを --apply 付きでもう一度実行し、元に戻すコマンドも伝えてください。
  • エージェントの実行環境で直接実行に失敗した場合は、bash {baseDir}/scripts/<script-name> ... でスクリプトを呼び出してください。インストール済みのスキルファイルに対して chmod を試みないでください。

plan / apply の仕様

  • plan.sh は、jetson-inference-mem-tune/scripts/recommend.py と同じ JSON 形式を出力します。recommendations の配列には、{layer, knob, estimated_savings_mb, safety, command, reversible_command, rationale} が含まれます。
  • apply.sh は、safety == "safe" かつ command が空でない項目だけをフィルタリングし、実行前にシェルループ内でフィルタリング後の安全マーカーを再確認します。カーネルコマンドラインの変更、デバイスツリーの変更、精度とのトレードオフなど、それ以外の項目はこのスキルの対象外です。
  • デフォルトのモードはドライランです。システムを変更するには --apply が必要です。

対象となる調整項目

調整項目操作節約量の推定元に戻せるか
disable-graphical-targetsystemctl set-default multi-user.target最大865 MBはい
stop-gdm3 / gdm / lightdm / sddm / display-managersystemctl disable --now <svc>約200 MB / サービスはい
stop-pulseaudioオーディオデーモンを無効化約8 MBはい
stop-bluetoothBluetooth スタックを無効化約6 MBはい
stop-ModemManagerWWAN マネージャーを無効化約4 MBはい
stop-cups / stop-cups-browsed印刷スタックを無効化約5 / 約3 MBはい
stop-snapdSnap デーモンを無効化約30 MBはい
stop-whoopsie / kerneloopsクラッシュレポーターを無効化約4 / 約2 MBはい
stop-avahi-daemonmDNS を無効化約3 MBはい
stop-unattended-upgrades / packagekitバックグラウンドのパッケージ処理を無効化約6 / 約8 MBはい

無効にしてはいけないサービス

  • nvargus-daemon — libargus カメラパイプラインには必須です。
  • nvgetty.service — シリアルコンソールです。無効にすると、復旧時にアクセスできなくなる可能性があります。
  • nvpmodel — 電力モードサービスです。クロックや電力の調整に必要です。
  • containerd / docker — コンテナーを実行する場合は有効なままにしてください(ほとんどの推論ワークロードで使用されます)。
  • nvfb / nvdisplay 関連のカーネルサービス — 起動時のディスプレイ設定に関連しているため、このスキルでは変更しません。

安全性

  • /boot/extlinux/extlinux.conf、デバイスツリー、起動時のメモリー予約領域は編集しません。
  • 明示的なエントリーがないサービスは無効にしません(許可リストにないものを一括して無効にすることはありません)。
  • 適用した変更にはすべて、文書化された reversible_command があります。元に戻すコマンドを指定してプランを再実行すれば、変更を復元できます。
  • デフォルトはドライランです。変更を適用するには --apply が必要です。
  • ライブ検出または監査の出力から得られたデバイス情報と節約量のみを報告してください。

クロスプラットフォームでの動作

上記のマトリックスに記載されたすべての Jetson ファミリーに、同じノブのセットが適用されます。スクリプトは jetson-diagnostic/scripts/detect_jetson.sh から JETSON_GENERATION / JETSON_PRODUCT_LINE / JETSON_VARIANT を読み取り(従来の JETSON_SKU も引き続きエクスポートします)、エージェントがサマリーで節約分を正しく帰属できるようにしますが、製品ラインによる分岐は行いません。

コメント