| 名称 | jetson-diagnostic |
| 描述 | 只读的Jetson健康快照,涵盖身份、内存、GPU、热、功耗、存储、服务及顶级进程。 |
| 版本 | 0.0.1 |
| 开源协议 | “Apache-2.0” metadata: |
| 作者 | “Jetson Team” tags: [jetson, diagnostic, telemetry] languages: [bash] data-classification: public |
Jetson 诊断
一个统一的、面向代理的正在运行的Jetson设备视图。无需再记住tegrastats、jtop、procrank、/sys/kernel/debug/nvmap、nvpmodel、free、swapon、df和systemctl list-units中哪一个提供哪一部分的真相。
用途
从Jetson主机捕获只读健康快照,以便代理能够使用实时数据而非猜测回答设备身份、内存、GPU、热、功耗、存储和服务状态问题。
使用时机
当用户询问以下内容时激活:
- “What is this Jetson? What SKU? How much memory?”
- “What’s running on this Jetson right now?”
- “Why is my Jetson slow / hot / out of memory?”
- “Give me a snapshot of GPU / CPU / power usage.”
- “What does my tegrastats output mean?”
- “Which services are running that I could turn off?”
- The user has installed
jetson-memory-audit,jetson-headless-mode,jetson-inference-mem-tune,jetson-llm-benchmark,jetson-llm-serve, orjetson-packageand needs a baseline measurement before running them.
不要使用此技能更改电源模式、删除缓存、停止服务、安装软件包、提供模型服务或调整推理标志。报告观察到的状态,然后移交给面向操作的技能。
前提条件
- 在Jetson主机上运行,或在具有主机可见的Jetson系统路径和进程数据的沙箱/容器中运行。
可用脚本
| Script | Purpose | Arguments |
|---|---|---|
scripts/snapshot.sh |
发出包含身份、内存、GPU、热、功耗、磁盘、顶级进程和候选服务的全能JSON快照。 | --human, --tegra-secs N, --top-procs N. |
scripts/mem_summary.sh |
发出简洁的人类可读的RAM/GPU/swap摘要。 | --short, --watch, --interval N. |
scripts/detect_jetson.sh |
导出或打印此仓库的规范Jetson SKU/代次/产品线字段。 | 无参数。 |
如果你的代理运行时支持run_script,请使用它运行scripts/snapshot.sh或scripts/mem_summary.sh并总结返回的输出。否则,从仓库根目录使用bash运行脚本。
说明
- 运行
scripts/snapshot.sh获取全能JSON视图(首选默认)。 - 如需快速的人类可读内存行,运行
scripts/mem_summary.sh。 - 要解释用户粘贴的单个tegrastats行,请参阅
references/tegrastats-fields.md。 - 要解释NvMap客户端输出,请参阅
references/nvmap-clients.md。
报告指南
在汇总设备状态之前运行匹配的辅助脚本,并且只报告该脚本返回的字段。如果直接执行被运行时阻止,请使用bash {baseDir}/scripts/<script-name>运行,而不是尝试chmod文件。
- 对于“这是什么Jetson”的问题,引用
product_model或sku、variant、l4t_version和mem_total_gb。 - 对于“慢且热”的问题,运行
snapshot.sh并总结症状的两个方面:thermal_c用于热,加上top_processes、gpu_processes、nvmap.top_clients或gpu_source用于负载。最后要具体交接,如jetson-memory-audit、jetson-headless-mode或jetson-inference-mem-tune。 - 对于“哪个进程正在使用内存”的问题,运行
snapshot.sh,并将首要进程命名为pid <number>、cmd及其pss_kb/MiB值。如果NvMap GPU内存是相关信号,请同时引用gpu_source以及nvmap.top_clients或gpu_processes中的顶级条目。
如果你的代理运行时没有自动相对于此技能目录执行辅助脚本,请使用AgentSkills {baseDir}占位符解析脚本路径:
{baseDir}/scripts/snapshot.sh
{baseDir}/scripts/mem_summary.sh
除非运行时明确将技能注册为可调用工具,否则不要将jetson-diagnostic作为工具名称调用;Agent Skills通常是指令加文件,不是直接的工具功能。
所有脚本都引用位于skills/jetson-diagnostic/scripts/detect_jetson.sh的规范平台检测器(导出JETSON_SKU、JETSON_GENERATION、JETSON_PRODUCT_LINE、JETSON_VARIANT、JETSON_MEM_GB、JETSON_L4T_VERSION、JETSON_PRODUCT_MODEL)。其他技能可以引用此检测器,而不是复制Jetson识别逻辑。在非平台环境中以退出码2退出,并附带补救信息。
限制
- 看到此技能文件并不保证可以访问Jetson主机硬件。如果在NemoClaw/OpenClaw沙箱中缺少
/proc/device-tree/model、/etc/nv_tegra_release、tegrastats、nvpmodel、nvidia-smi或/sys/kernel/debug/nvmap,请说明沙箱缺乏Jetson主机可见性,并要求用户在Jetson主机上运行或使用主机可见的沙箱配置文件重新启动。 - NvMap debugfs通常需要root权限,因此非特权运行可能会报告
gpu_source: "none"或不完整的nvmap字段。 - 此技能仅报告观察到的状态。当工具缺失或不可访问时,不要伪造内存、GPU、热、服务或回收数据。
错误处理
- 如果辅助脚本在非平台环境中退出,报告当前环境不是Jetson主机或缺乏主机可见性;不要替换为通用的Linux值。
- 如果
tegrastats、nvpmodel、nvidia-smi或NvMap debugfs不可用,请保留JSON中相应的null、false或空字段,并说明哪个信号受限。 - 如果
snapshot.sh输出格式错误的JSON,请报告原始失败并在修复辅助脚本输出后重新运行;不要手工编辑合成的设备快照。
snapshot.sh的输出约定
{
"sku": "orin-nano",
"generation": "orin",
"product_line": "orin-nano",
"variant": "orin-nano-8gb",
"mem_total_gb": 8,
"l4t_version": "36.4.0",
"product_model": "nvidia jetson orin nano developer kit",
"memory_kb": { "total": 8123456, "available": 4123456, "swap_total": 0, "swap_free": 0, "cached": 1234567 },
"tegrastats_sample": "RAM 4011/8138MB (lfb 8x4MB) ...",
"thermal_c": { "CPU": 52.3, "GPU": 49.0, "AO": 47.0 },
"power": { "nvpmodel_id": 0, "nvpmodel_name": "MAXN" },
"disk": [ { "mount": "/", "used_pct": 41 } ],
"gpu_source": "nvmap:iovmm-clients",
"gpu_devices": [],
"gpu_processes": [],
"nvmap": {
"readable": true,
"total_kb": 654321,
"stats_total_bytes": 669985280,
"top_clients": [ { "pid": 1234, "cmd": "vlm-server", "kb": 524288 } ]
},
"top_processes": [ { "pid": 4321, "cmd": "vllm", "pss_kb": 4000000 } ],
"candidate_services": { "gdm3": { "active": "inactive", "enabled": "disabled" } }
}
gpu_source命名技能用于归因每进程GPU内存的具体数据项,以便调用者确切知道数字代表什么:
"nvidia-smi:compute-apps"— 来自nvidia-smi --query-compute-apps的每进程used_memory值。用于统一的nvidia.ko堆栈(目前为Thor系列)。注意:在此堆栈上,某些BSP上nvidia-smi的设备级memory.used查询返回[N/A],因此技能会对每进程列表求和,而不是读取顶层总数。求和后的总数出现在gpu_processes[*].used_mib中。"nvmap:iovmm-clients"— 来自/sys/kernel/debug/nvmap/iovmm/clients的每进程大小。用于nvgpu堆栈(目前为Orin系列),其中nvidia-smi是一个存根,对于每个计算/内存查询都返回[N/A]。每进程条目出现在nvmap.top_clients中;内核端总数在nvmap.total_kb中,并且(当可读时)nvmap.stats_total_bytes中。"none"— 无法访问权威来源。通常发生在非特权运行于nvgpu堆栈Jetson上(/sys/kernel/debug/nvmap下的debugfs需要sudo);使用sudo重新运行以填充nvmap字段。
代理应将显著部分呈现给用户(SKU、可用内存、按gpu_source的顶级GPU消费者、最热区域、电源模式),并提供深入查看细节(top_processes、gpu_processes / nvmap、services)的选项。
安全性
此技能是只读的。它不更改nvpmodel,不运行jetson_clocks,不修改服务。要根据发现采取行动,请移交给:
jetson-memory-audit— 聚焦内存快照 + drop_caches 验证循环jetson-headless-mode— 禁用GUI + 辅助守护程序(安全,可逆)jetson-inference-mem-tune— 选择运行时 + 内存标志(vLLM / SGLang / llama.cpp / TensorRT Edge-LLM)jetson-llm-serve— 带有Jetson默认配置的vLLM和相关GHCR镜像jetson-llm-benchmark— 可复现的延迟/吞吐量基准测试jetson-package— GHCR + Jetson AI Lab PyPI索引 vs 通用ARM轮子
跨平台行为
| 系列 | 技能可识别的变体 | tegrastats |
nvidia-smi |
nvpmodel |
NvMap debugfs |
|---|---|---|---|---|---|
| Jetson Thor | thor-t5000, thor-t4000 |
是 | 是(完整) | 是 | 是(root) |
| Jetson AGX Orin | orin-agx-64gb, orin-agx-32gb, orin-agx-industrial |
是 | 是(存根,nvgpu)* |
是 | 是(root) |
| Jetson Orin NX | orin-nx-16gb, orin-nx-8gb |
是 | 是(存根,nvgpu)* |
是 | 是(root) |
| Jetson Orin Nano | orin-nano-8gb, orin-nano-4gb |
是 | 是(存根,nvgpu)* |
是 | 是(root) |
* 在GPU由树内nvgpu内核驱动程序驱动的Jetson上,nvidia-smi二进制文件存在,但大多数字段(Memory-Usage、功耗、利用率、计算进程表)报告Not Supported / N/A。为了在运行时决定信任哪个来源,脚本会进行一次能力探测 — nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits — 并且仅当该查询返回真实整数时,才使用nvidia-smi用于每进程GPU内存。如果查询无效,脚本回退到/sys/kernel/debug/nvmap/iovmm/clients,在nvgpu堆栈Jetson上,该文件是权威的每进程GPU内存来源。
脚本优雅地处理每个工具的存在性,并且对无法访问的工具报告null / false(通常当代理未以/sys/kernel/debug所需的权限运行时)。变体检测首先使用/proc/device-tree/model字符串(识别类似T5000 / T4000的名称),当模型字符串通用时,回退到内存大小的启发式方法。