1. 程式人生 > >使用雲監控實現GPU雲服務器的GPU監控和報警(上) - 自定義監控

使用雲監控實現GPU雲服務器的GPU監控和報警(上) - 自定義監控

調度 相關數 圖片 size 語言 rontab end ces format

摘要: 本文將介紹如何利用阿裏雲雲監控服務提供的自定義監控實現GPU雲服務器的GPU監控和報警的可視化,從而達到對GPU使用情況實時掌握的目的。

技術分享圖片

1 背景
NVIDIA提供了nvidia-smi命令工具用於查詢和監控GPU的相關數據,但是對於使用者來說,每次手動查看很不方便,無法做到實時監控,而且也無法可視化,不直觀。
本文將會介紹如何利用阿裏雲雲監控服務提供的自定義監控功能來實現GPU雲服務器的GPU監控和報警的可視化。

2 自定義監控和報警
阿裏雲雲監控服務提供了自定義監控功能,用戶可以利用它實現自定義的數據監控和報警。
我們利用自定義監控提供的API或者SDK,可以將GPU雲主機內采集的GPU數據上報,在雲監控控制臺上添加相應的GPU監控項,就可以實現對指定GPU實例內指定GPU的相應數據進行監控,對相應監控項設置相應數據的報警規則,就能實現監控數據的自動報警。

比如可以對GPU利用率、顯存利用率、顯存占用、功率、溫度等關鍵信息進行監控和報警。
詳見:創建自定義監控項和報警規則

3 監控數據上報
自定義監控提供的SDK支持Python和bash,通過編寫腳本調用SDK的接口,可以實現相應監控數據的上報。
通過定時調度腳本,按創建監控項時定義的上報周期上報數據。Linux環境可以使用Crontab,Windows環境可以使用quartz.net。
詳見:監控數據上報

4 GPU數據采集
NVDIA驅動安裝時提供了NVIDIA Management Library (NVML),該庫提供了采集GPU數據的接口,並基於NVML提供了nvidia-smi命令用於采集GPU相關數據。NVML提供了Perl 和Python語言的官方支持,考慮到自定義監控上報SDK支持Python,我們可以下載NVML的Python bindings,編寫Python腳本采集GPU數據。

5 示例
5.1 創建自定義監控項
在雲監控控制臺創建自定義監控項,如下圖:
技術分享圖片

5.2 查看監控項數據
在雲監控控制臺查看監控項,如下圖:
某實例GPU 0的GPU利用率(單位:Persent):
技術分享圖片

某實例GPU 0的顯存利用率(單位:Persent):
技術分享圖片
某實例GPU 0的內存占用量(單位:Megabytes):
技術分享圖片

某實例GPU 1的功率(單位:Watt):
技術分享圖片

某實例GPU 1 的溫度(單位:攝氏度):
技術分享圖片

5.3 設置報警規則
在溫度監控項上點擊報警管理:
技術分享圖片

設置溫度報警規則:
技術分享圖片

設置通知對象:
技術分享圖片

完成設置:
技術分享圖片

6 參考代碼
數據采集:

def get_gpu_information():
    nvmlInit()

    deviceCount = nvmlDeviceGetCount()

    util_list = []

    for i in range(0, deviceCount):
        handle = nvmlDeviceGetHandleByIndex(i)
        util_list.append(nvmlDeviceGetUtilizationRates(handle))

    nvmlShutdown()
    return deviceCount, util_list

信息上報:

 for i in range(0, GPU_Count):
        gpuid = i

        cms_post.post(userid,"GPUUtilization",util_list[i].gpu,"Percent",s.format(ecsid=ecsid, gpuid=gpuid))

原文鏈接

本文為雲棲社區原創內容,未經允許不得轉載。

使用雲監控實現GPU雲服務器的GPU監控和報警(上) - 自定義監控