歡迎大家前往雲+社區,獲取更多騰訊海量技術實踐干貨哦~
作者:李想
隨着人工智能以及比特幣的火熱,GPU雲服務的使用場景是越來越廣,在很多場景下我們也需要獲取GPU服務器的性能參數來優化程序的執行。目前騰訊雲提供的GPU雲服務器並未提供GPU方面的監控數據,本文旨在通過使用騰訊雲的“自定義監控”服務來自行實現對GPU服務器的GPU使用率的監控。
1.GPU雲服務創建
騰訊雲GPU雲服務器的創建可以參考下面官網的文檔,采用雲市場提供的GPU服務器專用鏡像可以免於自行安裝GPU驅動程序。
使用雲市場的鏡像創建的服務器,默認已經包含了NVML 管理庫(Nvidia Management Library)和 基於NVML的命令行工具nvidia-smi (NVIDIA System Management Interface)。
在服務器上執行nvidia-smi可以獲取當前服務器的GPU使用率。

除了nvidia-smi 命令行工具,Nvidia也提供了NVML的Python SDK供開發者使用,本文就基於NVML的python SDK用於讀取GPU使用率,並將數據上傳到騰訊雲自定義監控對應接口進行監控。
同時需要執行如下命令安裝NVML的Python庫:
pip install nvidia-ml-py
2.自定義監控配置
首先創建監控配置,命名空間是該監控的名字,維度用於定義每一個監控數據,由於一個服務器可能有多個GPU,所以我們這里定義兩個維度,server_name用於記錄GPU服務器名字,gpu_id用於記錄GPU序列號。如果還需監控GPU其他指標可以在監控指標里進行添加。

配置創建完畢需要創建指標統計方式,這里配置統計周期為5分鍾,並按照平均值進行統計。

3.數據上報
數據上報通過一個Python腳本來實現,腳本主要需要完成下面幾個任務。
-
初始化NVML並調用nvmlDeviceGetCount()讀取GPU個數。
-
計算Signature作為API接口校驗和鑒權參數。需要注意數據上報接口跟一般騰訊雲API接口不同,並且簽名算法也有所不同,具體可參考官方文檔
-
調用NVML接口nvmlDeviceGetUtilizationRates()讀取GPU使用率。
-
將讀取的數據進行封裝並上傳。dimensions需要指定每個維度的值,這里server_name指定為‘testserver’,gpu_id為讀取的GPU ID號。
核心部分的代碼如下:
nvmlInit() deviceCount = nvmlDeviceGetCount() while True: ts=int(time.time()) nonce=random.randint(10000,100000) text="GETreceiver.monitor.tencentyun.com/v2/index.php?Action=PutMonitorData&Nonce=%d&Region=%s&SecretId=%s&Timestamp=%d" % (nonce,region,secretId,ts) data['Timestamp']=ts data['Nonce']=nonce data['Signature']=hmac.new(secretKey,text,hashlib.sha1).digest().encode("base64").rstrip('\n') for i in range(deviceCount): handle = nvmlDeviceGetHandleByIndex(i) gpu_util = getGpuUtilization(handle) Data=[ { "dimensions": {"gpu_id": str(i) ,"server_name": 'testserver'}, "metricName": "gpu_util", "value": gpu_util, } ] data["Data"]=json.dumps(Data) xx = urllib.urlencode(data) sender.send_data(xx) time.sleep(20)
完整代碼可以參考如下的Github鏈接:
4.監控數據查看
登錄到自定義監控管理界面,可以查看采集到的數據。如果需要配置告警策略,可以在告警管理中進行配置。

另外,如果需要查看詳細的數據也可以在報表詳情中進行查看。

總結
本文主要講述了如何利用騰訊雲的自定義監控服務來監控GPU服務器的GPU使用率,為大家在實際應用中監控服務器的非標數據提供了解決思路,如果需要監控GPU的其他參數如GPU內存使用率,GPU功耗等也可以基於此做適當修改來實現。另外,如果大家需要監控GPU之外一些非標數據,也可以參考本文提供的方案自行編寫上傳模塊來實現。
相關閱讀
此文已由作者授權雲加社區發布,轉載請注明文章出處