news 2026/6/11 0:10:54

GPU 性能分析工具综述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GPU 性能分析工具综述

目录

文章目录

  • 目录
  • 性能分析工具关键指标
  • NVIDIA Nsight Systems
  • NVIDIA Nsight Compute
  • NVIDIA DCGM
  • 基于 eBPF 的 GPU 性能追踪
  • 参考文档

性能分析工具关键指标

《程序性能分析器实现技术》

  1. 技术方向
    • 追踪(Tracing):插桩(LD_PRELOAD 动态二进制插桩)、钩子(内核 eBPF)、硬件性能计数器
    • 采样(Sampling):使用硬件计时器或性能计数器溢出中断定期采样程序计数器(PC)和调用栈。例如,以一定间隔捕获堆栈跟踪,以统计推断热点代码。
  2. 采集范围
    • CPU:Python、C/C++、CUDA Runtime API、GPU Driver API
    • GPU:CUDA HW、GPU Metrics
  3. 数据处理:追踪数据的格式、存储、导出
  4. 可视化:CLI、GUI、Web,时间线、火焰图、依赖图。
  5. 多机多卡
  6. 可扩展性
  7. 环境侵入性
  8. 性能开销

NVIDIA Nsight Systems

《使用 Nsight Systems 来优化 CUDA 程序性能》

NVIDIA Nsight Compute

《使用 Nsight Compute 来优化 CUDA 程序性能》

NVIDIA DCGM

NVIDIA GPU 内置了一些硬件计数器,这些计数器用于收集一些设备级别的性能指标,例如:GPU 利用率、内存使用情况等。借助 NVIDIA NVML(NVIDIA Management Library)编程库提供给 nvidia-smi 与 DCGM(Data Center GPU Manager)等工具进行数据查询。

  • 官网:https://developer.nvidia.com/dcgm

DCGM 是 GPU 集群级别(Data Center)的遥测和监控技术,采用分布式架构。如下图所示:

  • DC Cluster Management Software
  • DC Cluster Management Software Agent
  • DC GPU Manger(nv-hostengine)
  • GPU Driver

在 nv-hostengine 和 GPU Driver 的追踪(Tracing)方面,以秒为单位,nv-hostengine 与 GPU Driver 接口交互用于收集 GPU 的指标,包括:SM 利用率、内存利用率、温度、功耗、时钟速度、ECC 内存错误、PCIe 吞吐量、NVLink 吞吐量等。

DCGM 主要使用驱动程序计数器轮询和某些健康事件的 Callback(e.g. ECC 错误事件)。具有非常低性能开销,并且是完全无侵入的。

在 Kubernetes 环境中,提供了 DCGM-Exporter 与 Prometheus 以及 Grafana 进行集成。这使 DCGM 非常适合在容器化环境中进行长期运行监控,还可以设置基于策略的告警。

可见,DCGM 适用于 Metrics 的监控场景,而 Nsight 则用于 Tracing 和 Profiling 的性能优化场景。所以 DCGM 也具有以下特性与局限性。

特性:

  1. 完全透明的数据收集:直接从硬件层面采集数据,对应用程序的性能几乎没有影响。即:应用程序无需更改任何代码或配置就可以启用性能数据的采集功能,实现完全透明的数据收集过程。
  2. 支持连续的、实时的性能监控:无论是否有应用运行,都能持续收集相关数据。

局限性:

  1. 不感知 CUDA 程序:如果在一张 GPU 卡上同时运行多个应用程序时,无法精确区分每个应用程序对 GPU 资源的具体占用情况。
  2. 不感知 CPU 调度:硬件层的性能分析只能反映 GPU 端的资源使用和性能表现,无法获知 CPU 与 GPU 之间的协同工作状态,例如 CPU 的调度效率、任务发送速度等因素对 CUDA 应用整体性能的影响。

在安全方面,可能泄露详细信息的 GPU 性能计数器被限制为管理员权限,所以需要为非 root 的 DCGM 设置 NVreg_RestrictProfilingToAdminUsers=0,以允许使用。

基于 eBPF 的 GPU 性能追踪

eGPU 和 bpftime 是最近合并的两个开源项目,展示了利用 Linux eBPF 技术进行真正的零插桩 GPU 性能监控的新方式。与传统工具通常需要显式修改目标应用程序、重新编译,或依赖供应商 SDK(如 NVIDIA Nsight)不同,这套新方案通过操作系统级的动态追踪,在不修改目标程序二进制的情况下,实现了 GPU 执行阶段的实时监控。

  • CPU 端:bpftime 使用 eBPF uprobes(用户态探针)动态附加到 NVIDIA CUDA 运行时库(libcudart.so)中的关键 API 上,例如 cudaMalloc、cudaMemcpy、cudaFree 和 cudaLaunchKernel 等,拦截并记录应用程序调用 CUDA API 的情况。当被钩住的 CUDA 函数调用触发时,uprobe 会在 Linux 内核中执行一个极为轻量的 BPF 程序,记录调用参数(如内存分配大小、数据传输尺寸)及精确的 CPU 时间戳。这些数据存入内核的 ring buffer 结构中。
  • GPU 端: eGPU 在 GPU 内核端也实现了完全的 eBPF 探针能力。eGPU 将用户编写的 BPF 字节码即时(JIT)翻译为 NVIDIA GPU 原生指令(PTX),并直接注入到运行中的 CUDA kernel 中,从而实时捕获 GPU 内部事件(如内核启动、线程块调度、事件同步和计算单元执行)。由于这种内核级注入是透明进行的,无需修改 GPU kernel 源码或二进制文件,它极大地提高了 GPU 内部追踪的精度,提供亚微秒级别的 GPU 端时间戳,追踪数据的实时性和精确度远高于传统用户态工具。

最后,还实现了 CPU 和 GPU 两端事件的统一聚合与同步,两者通过高效的内核态 ring buffer 进行合并与关联,确保追踪过程中数据和时间戳的一致性和低延迟。

从功能定位上看,eGPU 和 bpftime 填补了现有 GPU 性能工具之间的空白:它既不需要开发者插桩代码或重新编译,也无需依赖供应商专有工具链,却能够实时揭示内存使用模式、数据传输性能瓶颈、GPU 内核的真实启动延迟及执行效率。这种高效且真正零侵入性的设计极大简化了实际部署的复杂性。

参考文档

https://eunomia.dev/zh/blog/posts/gpu-profile-tool-impl/#api

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:52:30

使用TypeScript重构GLM-TTS前端界面提升用户体验

使用TypeScript重构GLM-TTS前端界面提升用户体验 在语音合成技术飞速发展的今天,零样本语音克隆系统如 GLM-TTS 正从实验室走向真实应用场景。无论是为有声书生成个性化旁白,还是为虚拟主播赋予独特声线,用户对“开箱即用”的交互体验提出了更…

作者头像 李华
网站建设 2026/6/10 10:49:32

如何用Go语言编写高性能代理服务转发GLM-TTS请求

如何用Go语言编写高性能代理服务转发GLM-TTS请求 在语音合成技术迅速渗透进内容创作、智能客服和个性化交互的今天,越来越多开发者面临一个共同难题:如何将强大的TTS模型——比如GLM-TTS——安全、高效地暴露给外部系统调用?这不仅是接口打通…

作者头像 李华
网站建设 2026/6/10 10:58:32

GLM-TTS在直播行业的应用前景:虚拟主播实时语音驱动设想

GLM-TTS在直播行业的应用前景:虚拟主播实时语音驱动设想 在一场深夜的游戏直播中,虚拟主播“星璃”正用清亮而富有感染力的声音与观众互动。当弹幕刷出“赢了!”时,她的语气瞬间转为激昂:“这波操作太秀了——兄弟们冲…

作者头像 李华
网站建设 2026/6/10 14:33:24

为什么你的TTS效果差?揭秘GLM-TTS高质量音频生成5大要点

为什么你的TTS效果差?揭秘GLM-TTS高质量音频生成5大要点 在语音合成技术飞速发展的今天,我们早已不再满足于“能说话”的机器声音。用户期待的是有温度、有情绪、像真人一样的语音输出——无论是虚拟主播娓娓道来的有声书,还是客服系统中亲切…

作者头像 李华
网站建设 2026/6/10 10:52:24

新手教程:搭建8x8 LED阵列汉字显示电路与程序

从零点亮汉字:手把手教你用8x8 LED点阵玩转单片机显示 你有没有想过,那些在电子广告牌上滚动的汉字,其实可以自己动手做出来?哪怕只显示一个“中”字,当它真的在眼前亮起时,那种成就感,不亚于第…

作者头像 李华
网站建设 2026/6/10 14:33:27

Elasticsearch集群安装实战:支撑大规模日志分析

从零搭建高可用 Elasticsearch 集群:支撑 PB 级日志分析的实战指南 你有没有遇到过这样的场景?线上服务突然异常,几十台服务器的日志散落在各处, tail -f 查到眼花也找不到根因;或者业务需要对过去一周的用户行为做聚…

作者头像 李华