jetson-headless-mode について
Jetson のヘッドレスモード向けスキルです。最新のメモリ監査を基に、ユーザー空間のメモリ削減策を計画し、可逆的な変更を適用します。変更前はドライランが既定です。
主な機能
- 01メモリ監査データから計画を作成
- 02対象を絞って systemd とデーモンを設定
- 03既定でドライランを実行
- 04元に戻せるコマンドを提示
活用シーン
- 01デスクトップなしの Jetson 推論機器を準備
- 02ヘッドレス化によるメモリ削減を確認
- 03承認済みの可逆的なサービス変更を適用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill jetson-headless-modeインストール後、Claude Code で/jetson-headless-modeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.jsonscripts/apply.shplan.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-auditJSON スナップショットを用意します。 - ユーザーがローカルデスクトップ、ディスプレイ出力、キオスク 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 でスクリプトを実行してください。
手順
scripts/plan.shを実行し、audit.json(jetson-memory-auditから取得)を読み込んで、safety: safeの設定項目(ターゲットの切り替え、ディスプレイマネージャー、オーディオ、印刷、モデムなど)のみを含む計画を出力します。- 計画をユーザーに提示し、承認を確認します。
- ドライランとして
scripts/apply.sh --plan plan.jsonを実行します。実際に適用するには、--applyを付けて再実行します。その後ページキャッシュをフラッシュするには--drop-cachesを、直ちに反映するには--rebootを追加します。 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-target | systemctl set-default multi-user.target | 最大865 MB | はい |
stop-gdm3 / gdm / lightdm / sddm / display-manager | systemctl disable --now <svc> | 約200 MB / サービス | はい |
stop-pulseaudio | オーディオデーモンを無効化 | 約8 MB | はい |
stop-bluetooth | Bluetooth スタックを無効化 | 約6 MB | はい |
stop-ModemManager | WWAN マネージャーを無効化 | 約4 MB | はい |
stop-cups / stop-cups-browsed | 印刷スタックを無効化 | 約5 / 約3 MB | はい |
stop-snapd | Snap デーモンを無効化 | 約30 MB | はい |
stop-whoopsie / kerneloops | クラッシュレポーターを無効化 | 約4 / 約2 MB | はい |
stop-avahi-daemon | mDNS を無効化 | 約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 も引き続きエクスポートします)、エージェントがサマリーで節約分を正しく帰属できるようにしますが、製品ラインによる分岐は行いません。