使用腾讯云“自定义监控”监控GPU使用率

2023-11-03

欢迎大家前往 云+社区 ,获取更多腾讯海量技术实践干货哦~
作者:李想
随着人工智能以及比特币的火热,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脚本来实现,脚本主要需要完成下面几个任务。
  1. 初始化NVML并调用nvmlDeviceGetCount()读取GPU个数。
  2. 计算Signature作为API接口校验和鉴权参数。需要注意数据上报接口跟一般腾讯云API接口不同,并且签名算法也有所不同,具体可参考官方文档
  3. 调用NVML接口nvmlDeviceGetUtilizationRates()读取GPU使用率。
  4. 将读取的数据进行封装并上传。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之外一些非标数据,也可以参考本文提供的方案自行编写上传模块来实现。

相关阅读

此文已由作者授权云加社区发布,转载请注明 文章出处
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用腾讯云“自定义监控”监控GPU使用率 的相关文章

随机推荐

  • 攻防演练场景中的加密流量检测技术

    lt 引言 gt 在对抗日益激烈 加密手段逐渐成为主流的今天 攻防演练场景中的加密流量也已逐渐成为主流 对加密流量检测的技术变得愈发重要 目前针对攻防演练场景的加密流量检测主要分为解密后检测和不解密检测两大类 传统的解密检测拥有可以直接将加
  • 文心一言#帮我生成一段1分钟的短视频AI脚本

    视频标题 旅行者的一天 视频类型 旅游 视频时长 1分钟 视频描述 这是一个关于一个旅行者一天的故事 他早上起床后 先去了一家当地的早餐店 品尝了美味的当地早餐 接着 他去了一家博物馆 了解了当地的历史和文化 中午 他去了一家当地的餐厅 品
  • ubuntu上redis安装启动和停止

    在 Ubuntu 上操作 Redis 可以按照以下步骤进行 安装 Redis 使用以下命令安装 Redis sudo apt get update sudo apt get install redis server 设置开机自动启动 使用以
  • OOM Killer 持续更新中

    虚拟地址空间的概念都门儿清 Linux 认为用户进程调用malloc申请了动态内存后不见得马上就会使用这段内存进行写读操作 Linux使用了拖到最后的分配机制 用时分配机制 但是 即使是用时分配 也不见得总有内存可分配 当进程太多 显得内存
  • kotlin与java实现混编基础看这篇就够了

    前几年一直关注安卓 想换个方向 奔着移动端大步向前 由于比较懒就一直停留在想法 这不今天勤快点 动手搞了一个基础的java和kotlin混编 和大家总结分享一下 首先需要了解什么事kotlin kotlin中文网上面有详细的讲解 比如入门教
  • 设计模式(二)- 代理模式

    代理模式 文章目录 代理模式 1 代理模式 1 1介绍 1 2 应用实例 1 3 静态代理 1 4 动态代理 1 4 1 Java lang reflect Proxy类可以直接生成一个代理对象 1 4 2 InvocationHandle
  • java 数组合并_数组与链表

    CPU L1缓存读写速度高出内存100倍左右 缓存在加载地址的时候 基于Locality of reference也会加载相邻的地址内容 如果一个地址被访问 那么它相邻的地址也极有可能之后被访问 数组 1 2 3 4 数组使用连续的内存来存
  • K-均值聚类算法(K-Means)

    简单介绍 k means聚类属于无监督学习的一种 在没有给与labels的情况下 将数据分成指定的K类 它将相似的对象归到一个簇中 将不相似的对象归到不同簇中 相似这一概念 取决于所选择的相似度计算方法 K means是发现给定数据集的K个
  • Windows安装使用Nacos并进行服务治理

    Nacos简介 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 帮助您快速实现动态服务发现 服务配置 服务元数据及流量管理 Nacos其实就是一个注册中心 用来管理和注册微服务 搭建Nacos环境 安
  • java list 按float属性排序

    前言 项目需要对一个类的对象的list按照其中的一个float属性进行排序 网上有很多关于关于对类的对象的列表的排序 但看到的大都是整型或字符串类型的属性才能排序 本文解决了按照float型属性排序的方法 但感觉尚不是最好的解决方案 故此记
  • 【GDB调试动态库】

    GDB调试动态库 动态库编译的时候已经添加了 g但是设置断点还是不生效报如下错误 动态库编译的时候已经添加了 g但是设置断点还是不生效报如下错误 warning Could not load shared library symbols f
  • 大模型LLM-微调经验分享&总结

    模型越大对显卡的要求越高 目前主流对大模型进行微调方法有三种 Freeze方法 P Tuning方法和Lora方法 笔者也通过这三种方法 在信息抽取任务上 对ChatGLM 6B大模型进行模型微调 liucongg ChatGLM Fine
  • zotero+better notes中markdown文本的快捷键及使用指南

    见 https zotero chinese feishu cn wiki wikcnqc4mSTM8rL98hErWSJOYT1
  • 搭建CloudStack4.12.0。ctdb测试实现nfs高可用

    测试cloudstack搭建 并不一定适用 供个人 复习使用 首先准备三台 机器 由于测试使用 就用VMware Workstation是创建的虚拟机 cloudsatck版本安装4 12 0 系统模板使用4 11 2 模板 gluster
  • 企望制造ERP系统 RCE漏洞复现

    声明 本文仅用于技术交流 请勿用于非法用途 由于传播 利用此文所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 文章作者不为此承担任何责任 简介 企望制造纸箱业erp系统由深知纸箱行业特点和业务流程的多位IT专家打造 将
  • NFS高可用部署

    NFS高可用目的 部署NFS双机热备高可用环境 用作K8S容器集群的远程存储 实现K8S数据持久化 NFS高可用思路 NFS Keepalived 实现高可用 防止单点故障 Rsync Inotify 实现主备间共享数据进行同步 技术要求
  • 苹果App,不用上传苹果商店,如何让其他人也能安装?

    转载自 https www oschina net question 2376332 237742 1 WeX5移动开发云 2015 05 28 11 46 谢谢关注 挪到博客里去了 原文 http my oschina net wex5
  • iOS开发实例

    相关文章 从零开始的iOS开发 00 Swift基础语法 上 从零开始的iOS开发 01 Swift基础语法 下 从零开始的iOS开发 10 如何构建一个APP 从零开始的iOS开发 20 计算器APP 目录 一 界面设计 二 实现 三 试
  • 2-3 java-jmu-m02-寻找包含密码的字符串 (25分)

    2 3 java jmu m02 寻找包含密码的字符串 25分 输入密码x与次数n 然后在若干行字符串中 以end为结尾 寻找包含指定密码 x 的字符串的 一旦找到就输出该字符串所在行数及该行字符串 最后输出包含密码x的字符串行数 在寻找过
  • 使用腾讯云“自定义监控”监控GPU使用率

    欢迎大家前往 云 社区 获取更多腾讯海量技术实践干货哦 作者 李想 随着人工智能以及比特币的火热 GPU云服务的使用场景是越来越广 在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行 目前腾讯云提供的GPU云服务器并未提供GP