欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~
作者:李想
随着人工智能以及比特币的火热,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. Angular 4 自定义组件封装遇见的一些事儿

    你用Angular 吗? 一.介绍 说说封装Angular 组建过程中遇见的一些问题和感悟.用久了Angular,就会遇见很多坑,许多基于Angular开发的框架最喜欢做的事情就是封装组件,然后复用. ...

  2. java学习总结之文件操作--ByteArrayOutputStream的用法

    ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区, 然后利用ByteArrayOutputStream和ByteArrayInputStream ...

  3. BOM基础知识

    1.什么是BOM      BOM(Browser Object Document)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管 ...

  4. centos下配置sftp且限制用户访问目录[转]

    第一步:创建sftp服务用户组,创建sftp服务根目录 groupadd sftp #此目录及上级目录的所有者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp mkdir ...

  5. mybatis中@Param的用法和作用

    用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Ma ...

  6. Linux平台ORACLE INSTANT客户端安装

    下载安装文件 先去ORACLE官方网站下载所需版本的Instant Client Package 和 Instant Client Package - SQL*Plus安装包,(千万注意版本) htt ...

  7. 【SqlServer系列】浅谈SQL Server事务与锁(上篇)

    一  概述 在数据库方面,对于非DBA的程序员来说,事务与锁是一大难点,针对该难点,本篇文章视图采用图文的方式来与大家一起探讨. “浅谈SQL Server 事务与锁”这个专题共分两篇,上篇主讲事务及 ...

  8. 【转】AWK常用

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入 ...

  9. Git远程管理[五]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 相关命令 git clone https://github.com/guohongz ...

  10. 浅谈GlusterFS

    GlusterFS 标签(linux): 分布式文件系统 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 图片来自于官网:http://gluster.readt ...