Jetson设备诊断Skill jetson-diagnostic

Jetson设备诊断技能用于对Jetson设备进行只读健康快照,收集身份信息、内存、GPU、热、功耗、存储、服务与关键进程等数据,帮助用户了解设备状态、排查性能与内存问题。关键词:Jetson诊断、设备健康、GPU内存、tegrastats、nvmap、平台管理

平台管理与诊断 0 次安装 0 次浏览 更新于 9/6/2026
名称 jetson-diagnostic
描述 只读的Jetson健康快照,涵盖身份、内存、GPU、热、功耗、存储、服务及顶级进程。
版本 0.0.1
开源协议 “Apache-2.0” metadata:
作者 “Jetson Team” tags: [jetson, diagnostic, telemetry] languages: [bash] data-classification: public

Jetson 诊断

一个统一的、面向代理的正在运行的Jetson设备视图。无需再记住tegrastatsjtopprocrank/sys/kernel/debug/nvmapnvpmodelfreeswapondfsystemctl 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, or jetson-package and 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.shscripts/mem_summary.sh并总结返回的输出。否则,从仓库根目录使用bash运行脚本。

说明

  1. 运行scripts/snapshot.sh获取全能JSON视图(首选默认)。
  2. 如需快速的人类可读内存行,运行scripts/mem_summary.sh
  3. 要解释用户粘贴的单个tegrastats行,请参阅references/tegrastats-fields.md
  4. 要解释NvMap客户端输出,请参阅references/nvmap-clients.md

报告指南

在汇总设备状态之前运行匹配的辅助脚本,并且只报告该脚本返回的字段。如果直接执行被运行时阻止,请使用bash {baseDir}/scripts/<script-name>运行,而不是尝试chmod文件。

  • 对于“这是什么Jetson”的问题,引用product_modelskuvariantl4t_versionmem_total_gb
  • 对于“慢且热”的问题,运行snapshot.sh并总结症状的两个方面:thermal_c用于热,加上top_processesgpu_processesnvmap.top_clientsgpu_source用于负载。最后要具体交接,如jetson-memory-auditjetson-headless-modejetson-inference-mem-tune
  • 对于“哪个进程正在使用内存”的问题,运行snapshot.sh,并将首要进程命名为pid <number>cmd及其pss_kb/MiB值。如果NvMap GPU内存是相关信号,请同时引用gpu_source以及nvmap.top_clientsgpu_processes中的顶级条目。

如果你的代理运行时没有自动相对于此技能目录执行辅助脚本,请使用AgentSkills {baseDir}占位符解析脚本路径:

{baseDir}/scripts/snapshot.sh
{baseDir}/scripts/mem_summary.sh

除非运行时明确将技能注册为可调用工具,否则不要将jetson-diagnostic作为工具名称调用;Agent Skills通常是指令加文件,不是直接的工具功能。

所有脚本都引用位于skills/jetson-diagnostic/scripts/detect_jetson.sh的规范平台检测器(导出JETSON_SKUJETSON_GENERATIONJETSON_PRODUCT_LINEJETSON_VARIANTJETSON_MEM_GBJETSON_L4T_VERSIONJETSON_PRODUCT_MODEL)。其他技能可以引用此检测器,而不是复制Jetson识别逻辑。在非平台环境中以退出码2退出,并附带补救信息。

限制

  • 看到此技能文件并不保证可以访问Jetson主机硬件。如果在NemoClaw/OpenClaw沙箱中缺少/proc/device-tree/model/etc/nv_tegra_releasetegrastatsnvpmodelnvidia-smi/sys/kernel/debug/nvmap,请说明沙箱缺乏Jetson主机可见性,并要求用户在Jetson主机上运行或使用主机可见的沙箱配置文件重新启动。
  • NvMap debugfs通常需要root权限,因此非特权运行可能会报告gpu_source: "none"或不完整的nvmap字段。
  • 此技能仅报告观察到的状态。当工具缺失或不可访问时,不要伪造内存、GPU、热、服务或回收数据。

错误处理

  • 如果辅助脚本在非平台环境中退出,报告当前环境不是Jetson主机或缺乏主机可见性;不要替换为通用的Linux值。
  • 如果tegrastatsnvpmodelnvidia-smi或NvMap debugfs不可用,请保留JSON中相应的nullfalse或空字段,并说明哪个信号受限。
  • 如果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_processesgpu_processes / nvmapservices)的选项。

安全性

此技能是只读的。它不更改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的名称),当模型字符串通用时,回退到内存大小的启发式方法。