最近一年负责运维的GPU主机越来越多,发现现有的监控项无法很好的了解GPU的性能和负载情况,研究了下官方文档,在此记录。
一、NVML和DCGM
NVML:https://developer.nvidia.com/nvidia-management-library-nvml
DCGM:https://developer.nvidia.com/dcgm
从网址就能看出,这两个工具都是nvidia官方推出的。都是用C/C++编写的底层库。
NVML的操作命令是nvidia-smi,DCGM的操作命令为dcgmi。安装驱动后,一般会自带nvidia-smi。而dcgmi需要单独安装。(这里指的linux系统下,windows不了解)
功能的区别:
按官网的说明,NVML是对GPU硬件的监控,可以查看GPU的温度、功率、风扇等信息。
而DCGM更倾向于对集群的监控管理,可以健康检查、配置策略、与k8s之类的工具集成。
二、nvidia-smi
用法参考:https://www.cnblogs.com/maxgongzuo/p/12582360.html
三、dcgmi
使用参考:https://devblogs.nvidia.com/nvidia-data-center-gpu-manager-cluster-administration/
监控参考:https://devblogs.nvidia.com/gpu-telemetry-nvidia-dcgm/
https://github.com/NVIDIA/gpu-monitoring-tools
这个也是nvidia的官方工具,介绍为“Tools for monitoring NVIDIA GPUs on Linux”。
是对NVML和DCGM的工具化封装。个人觉得由于使用GO语言编写,通用性比python的接口模块更好。
这个工具很久没有更新了,可能会对最新的NVML和DCGM支持不太好,编译报错可以查询官方的api文档修改代码解决。
我这里生产上使用的DCGM的restApi,编译时候有一个函数名报错,查官方文档发现是新版本名字变了,改过来后编译成功。
五、使用python(未测)
NVML的官方python模块,http://pypi.python.org/pypi/nvidia-ml-py/
DCGM的官方文档提到一个DcgmReader.py类,https://docs.nvidia.com/datacenter/dcgm/latest/dcgm-user-guide/integrating-with-dcgm.html#integrating-with-dcgm-reader