news 2026/6/23 18:02:43

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/15 16:05:14

es连接工具接入Kibana的完整示例

手把手教你打通 Kibana 与 Elasticsearch 的“任督二脉”你有没有遇到过这种情况:Kibana 启动了,页面也打开了,但一进去就提示“Unable to connect to Elasticsearch”?或者图表加载半天没反应,日志里一堆request time…

作者头像 李华
网站建设 2026/6/18 17:39:59

语音合成中的口音迁移可行性分析:GLM-TTS跨地域发音模拟

语音合成中的口音迁移可行性分析:GLM-TTS跨地域发音模拟 在虚拟主播能带货、AI配音可播新闻的今天,一个更“像人”的声音,早已不只是技术参数上的高保真。用户开始在意语气是否自然、语调有没有情绪起伏,甚至——这个声音是不是“…

作者头像 李华
网站建设 2026/6/19 9:42:18

模拟电子技术基础在振动传感器电荷放大中的实现路径

从微弱电荷到精准信号:如何用模拟电路“驯服”压电传感器工业现场的电机嗡鸣、桥梁在风中的轻微摆动、精密设备内部的微小振动……这些看似平静的现象背后,往往隐藏着关键的状态信息。要捕捉它们,离不开一种特殊的“耳朵”——压电式振动传感…

作者头像 李华
网站建设 2026/6/20 20:56:13

GLM-TTS能否支持手语同步生成?跨模态输出系统构想

GLM-TTS与手语同步生成:构建语音驱动的跨模态输出系统 在数字包容性日益受到重视的今天,听障群体的信息获取能力正成为衡量技术人文关怀的重要标尺。尽管AI语音合成已能生成媲美真人的自然语音,但对依赖视觉语言——手语的用户而言&#xff0…

作者头像 李华
网站建设 2026/6/19 23:26:02

⚡_延迟优化实战:从毫秒到微秒的性能突破[20260104164140]

作为一名专注于系统性能优化的工程师,我在过去十年中一直致力于降低Web应用的延迟。最近,我参与了一个对延迟要求极其严格的项目——金融交易系统。这个系统要求99.9%的请求延迟必须低于10ms,这个要求让我重新审视了Web框架在延迟优化方面的潜…

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

[特殊字符]_高并发场景下的框架选择:从性能数据看技术决策[20260104164650]

作为一名经历过无数生产环境考验的资深工程师,我深知在高并发场景下选择合适的技术栈是多么重要。最近我参与了一个日活千万级的电商平台重构项目,这个项目让我重新思考了Web框架在高并发环境下的表现。今天我要分享的是基于真实生产数据的框架性能分析&…

作者头像 李华