最近一年負責運維的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