欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~
作者:李想
随着人工智能以及比特币的火热,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之外一些非标数据,也可以参考本文提供的方案自行编写上传模块来实现。

相关阅读


此文已由作者授权云加社区发布,转载请注明文章出处

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

  1. 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:黄文俊,腾讯云高级产品经理,曾经历过企业级存储.企业级容器平台等产品的架构与开发,对容器.微服务.无服务器.DevOps等都有浓厚兴趣. ...

  2. Prometheus客户端开发:腾讯云CLB

    一:简介 随着prometheus的使用人群逐渐扩大,官方定义的client exporter虽然能满足我们的大部分需求,但是很多监控还是需要我们自定义开发,以下内容就是基于腾讯云SDK,对腾讯云CL ...

  3. 基于腾讯云监控 API 的 Grafana App 插件开发

    Tencent Cloud Monitor App Grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch.graphite.influxdb 等众多的数据源,并以功能 ...

  4. 阿里云自定义监控tomcat进程数

    阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :c ...

  5. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器

    说明:大数据时代,传统运维向大数据运维升级换代很常见,也是个不错的机会.如果想系统学习大数据运维,个人比较推荐通信巨头运维大咖的分享课:https://url.cn/5HIqOOr,主要是实战强.含金 ...

  6. qGPU on TKE - 腾讯云发布下一代 GPU 容器共享技术

    背景 qGPU 是腾讯云推出的 GPU 共享技术,支持在多个容器间共享 GPU卡,并提供容器间显存.算力强隔离的能力,从而在更小粒度的使用 GPU 卡的基础上,保证业务安全,达到提高 GPU 使用率. ...

  7. 【转载】阿里云ECS服务器监控资源使用情况

    在阿里云Ecs服务器运维过程中,无论是Centos系统还是Windows系统,有时候我们需要监控分析最新的服务器资源利用率等运行情况,例如最近3个小时CPU使用率情况.内存使用率.网络流入带宽.网络流 ...

  8. zabbix的自动发现、自定义添加监控项目、配置邮件告警

    1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...

  9. 免费网站监控服务阿里云监控,DNSPod监控,监控宝,360云监控使用对比

    网站会因为各种原因而导致宕机,具体表现为服务器没有响应,用户打不开网页,域名解析出错,搜索引擎抓取页面失败,返回各种HTTP错误代码.网站宕机可能带来搜索引擎的惩罚,网站服务器不稳定与百度关系文章中就 ...

随机推荐

  1. springboot之fastjson

    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...

  2. Log4j扩展使用--自定义输出

    写在前面的话 log4j支持自定义的输出.所有的输出都实现了自Appender接口.一般来说,自定义输出值需要继承AppenderSkeleton类,并实现几个方法就可以了. 写这篇博客,我主要也是想 ...

  3. CentOS如何把deb转为rpm

    说明:可以转换,但不一定可用,可以根据报错提示,安装需要的依赖. 1 安装alien工具,下载地址http://ftp.de.debian.org/debian/pool/main/a/alien/ ...

  4. discuz数据库相关表

    discuz 数据表对照cdb_access               用户权限表      cdb_adminactions         管理动作表cdb_admingroups        ...

  5. js promise看这篇就够了

    一.背景 大家都知道nodejs很快,为什么会这么快呢,原因就是node采用异步回调的方式来处理需要等待的事件,使得代码会继续往下执行不用在某个地方等待着.但是也有一个不好的地方,当我们有很多回调的时 ...

  6. tomcat启动报错

    [toc]启动错误 does not exist or is not a readable directory 问题:tomcat启动报错:does not exist or is not a rea ...

  7. hibernate的cascade

    如果项目是针对一对多的,应该在"one"方设置cascade为delete,不能在"many"方设置cascade为delete .

  8. Android Studio打包APK时出现 is not translated in "en" (English) [MissingTranslation]

    错误信息: Error:(16) Error: "baidutieba_client_inavailable" is not translated in "en" ...

  9. JS获取滚动条距离顶部高度

    一.jQuery获取的相关方法 jquery 获取滚动条高度 获取浏览器显示区域的高度 : $(window).height(); 获取浏览器显示区域的宽度 : $(window).width(); ...

  10. redis info详解

    INFO 以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值. 通过给定可选的参数 section ,可以让命令只返回某一部分的信息: server 部分记 ...