python小工具开发专题:gpu监控工具

需求来源

在压测显卡时能看到gpu的波动情况,并输出波动的范围、gpu卡的index、显存占用、显存总量。
直接在linux 无gui的命令行展示上述信息

实现思路

使用nvitop的gpu信息接口获取信息
借助python的三方库asciichart画图

代码

import asciichartpy as acp
import argparse
import time
from nvitop import Device
import sys

parser = argparse.ArgumentParser()
parser.add_argument('-i', type=int, default=0, help="指定显卡的index")
args = parser.parse_args()

# 获取服务器上的Device信息,返回是一个list
devices = Device.all()
target_device = None
for device in devices:
    if device.index == args.i:
        target_device = device
        break

if target_device is None:
    print(f"找不到指定 ID 为 {args.i} 的设备")
    exit()
# 打印显卡的名称
print(f'  - device name :    {target_device.name()}')
# 打印显卡的序号
print(f'  - device index:    {args.i}')
# 打印显卡温度
print(f'  - Temperature :    {target_device.temperature()} \u2103')
# 打印显卡的显存大小
print(f'  - Total memory:    {target_device.memory_total_human()}')
# 打印显卡的显存占用大小
print(f'  - Used memory :    {target_device.memory_used_human()}')
print('-' * 120)

series = []

# 通过device.gpu_utilization 获取gpu利用率
try:
    while True:
        utilization = target_device.gpu_utilization()
        series.append(utilization)
        time.sleep(1)  # 每秒获取一次利用率
except KeyboardInterrupt:
    # plot gpu info
    print(acp.plot(series, {'height': 10, 'min': 0, 'max': 100, 'color': '\033[32m'}))
    # remove 0 from series
    series = [x for x in series if x != 0]
    # series = list(filter(lambda x: x != 0, series))
    if len(series) > 0:
        print("\n gpu useage range: {}%-{}%".format(min(series), max(series)))
    else:
        print("\n 检测到这张gpu上没有任务运行 \n gpu useage range: 0%-0%\n")
    sys.exit(0)

效果

开始测试gpu时,执行python plot_gpuinfo.py 运行脚本,测试结束时通过键盘ctrl+c退出监控

在这里插入图片描述

调研过的画图工具

asciichart:基于node js,也可以pip直接安装,无其他依赖
termplotlib:需要依赖gnuplot
bashplotlib:没有纵坐标的展示,只能画出散点图
plotille:体验不佳,每次刷新都重新绘图,图不直观,配置有点复杂
plotext:可以画图,纵坐标需要调整,图片样式有点突兀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/285703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis缓存雪崩:预防、应对和解决方案【redis问题 二】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Redis缓存雪崩:预防、应对和解决方案 前言缓存雪崩定义和原因定义:缓存雪崩的恐怖故事触发因素:缓存雪崩的元凶 缓存雪崩的影响系统表现:当缓存雪崩降临…

Kubernetes(k8s):Namespace详解

Kubernetes(k8s):Namespace详解 一、Namespace简介1.1 什么是Namespace1.2 Namespace的作用1.3 命名空间的分类 二、创建和管理Namespace2.1 创建Namespace2.2 管理Namespace 三、Namespace的实战应用3.1 部署多个项目3.2 环境隔离3.3 资源配…

vulnhub Loly: 1

靶机地址: https://www.vulnhub.com/entry/loly-1,538/ Kali IP:172.16.12.129 1.主机发现 Nmap -sP 172.16.12.0/24 2.端口扫描 nmap -P 172.16.12.130 3.访问 4.目录扫描 dirb http://172.16.12.130/ 扫描到/wordpress 5.爆破wordpress用户名和密码 wpscan…

【Bootstrap学习 day6】

Bootstrap5图像 圆角图片 通过.rounded类实现 <img src"avatar.png" alt"头像" style"width:200px" class"rounded">圆形 通过.rounded-circle类实现 <img src"avatar.png" alt"头像" style"wid…

Matlab技巧[绘画逻辑分析仪产生的数据]

绘画逻辑分析仪产生的数据 逻分上抓到了ADC数字信号,一共是10Bit,12MHZ的波形: 这里用并口协议已经解析出数据: 导出csv表格数据(这个数据为补码,所以要做数据转换): 现在要把这个数据绘制成波形,用Python和表格直接绘制速度太慢了,转了一圈发现MATLAB很好用,操作方法如下:…

【Bootstrap学习 day7】

Bootstrap按钮 按钮样式 使用.btn相关类实现 <button type"button" class"btn">基本按钮</button> <button type"button" class"btn btn-primary">主要按钮</button> <button type"button" cl…

2024年天津中德应用技术大学专升本专业考试准考证下载及考场安排

天津中德应用技术大学2024高职升本科专业考试准考证下载及考生通知 2023年1月2日&#xff0c;天津中德应用技术大学招生网公布了2024年高职升本科专业课考试 准考证下载及考生须知通知公布了2024年中德专升本专业课的准考证下载时间、方式以及注意事项也代表着2024年专业课考…

Java静态代理和动态代理(JDK)的简单实现

1. 静态代理 静态代理模拟角色分析&#xff1a; 抽象角色 : 一般使用接口或者抽象类来实现真实角色 : 被代理的角色代理角色 : 代理真实角色 ; 代理真实角色后 , 一般会做一些附属的操作客户: 使用代理角色来进行一些操作 代码模拟&#xff1a; Rent.java——>抽象角色 …

Wireshark 提示和技巧 | Time 时间分析那些事

前言 众所周知&#xff0c;Wireshark 中有很多关于 Time 的字段&#xff0c;譬如 Frame 中的 frame.time、frame.time_delta、frame.time_delta_displayed &#xff0c;TCP 中的 tcp.time_delta、tcp.time_relative &#xff0c;HTTP 中的 http.time&#xff0c;DNS 中的 dns.…

【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS &…

东信免驱系列身份证阅读器串口通讯协议解析示例,适用于单片机、ARM等系统开发集成使用

完整的一次读卡流程包括&#xff1a; 身份证寻卡 > 身份证选卡 > 身份证读卡&#xff0c;三个步骤 缺一不可&#xff08;见通讯协议&#xff09;。 寻卡&#xff1a;EA EB EC ED 04 00 B0 B4 BB 返回&#xff1a;EA EB EC ED 05 00 00 B0 B5 BB 选卡&#xff1a;EA …

抖音引流跳转到微信加好友?免费教你创建一个链接!

在抖音想要跳转到微信&#xff0c;现在常规的做法就是通过微信小程序的Url Scheme跳转到微信并打开小程序指定的页面&#xff0c;这个已经有非常成熟的方案。 为了降低大家的门槛&#xff0c;可以使用开源的【引流宝】快速创建一个链接&#xff0c;这个链接生成的二维码&#…

fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1&#xff09;二维矩阵代码 clear all clc% 定义目标函数 fun (x) sum(sum(x.^2));% 初始矩阵 x0 2 rand(2, 2);% 定义空的线性不等式约束 A []; b [];% 定义空的线性等式约束 Aeq []; beq [];% 定义变量的上下界 lb ones(2,2); ub [];% 使用 fmincon 求解 options …

yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理

综述 为了解决旋转目标检测问题&#xff0c;研究者们提出了多种方法和算法。以下是一些常见的旋转目标检测方法&#xff1a; 基于滑动窗口的方法&#xff1a;在图像上以不同的尺度和角度滑动窗口&#xff0c;通过分类器判断窗口中是否存在目标。这种方法简单直观&#xff0c;…

谷达冠楠:抖音小店到底要多久可以做起来

随着移动互联网的发展&#xff0c;短视频平台已经成为了人们日常生活中不可或缺的一部分。抖音作为国内最具影响力的短视频平台之一&#xff0c;吸引了大量的用户和商家。近年来&#xff0c;抖音小店逐渐成为了一种新型的电商模式&#xff0c;让许多创业者和商家看到了新的商机…

【华为机试】2023年真题B卷(python)-计算疫情扩散时间

一、题目 题目描述&#xff1a; 请根据给定的地图计算&#xff0c;多少天以后&#xff0c;全部区域都会被感染。 如果初始地图上所有区域全部都被感染&#xff0c;或者没有被感染区域&#xff0c;返回-1 二、输入输出 输入描述: 一行N*N个数字&#xff08;只包含0,1&#xff0c…

一文看懂Prometheus告警原理及过程

目录 1. 自定义告警规则 2. 告警规则编写 3. prometheus配置 4. 告警过程 5. 告警解除 5.1 对startsAt和endsAt的处理 5.2 Prometheus告警解除后持续多久重复推送告警解除通知&#xff1f;&#xff1f; 1. 自定义告警规则 基于规则告警是指利用已经采集的监控数据&…

【小沐学NLP】Python实现K-Means聚类算法(nltk、sklearn)

文章目录 1、简介1.1 机器学习1.2 K 均值聚类1.2.1 聚类定义1.2.2 K-Means定义1.2.3 K-Means优缺点1.2.4 K-Means算法步骤 2、测试2.1 K-Means&#xff08;Python&#xff09;2.2 K-Means&#xff08;Sklearn&#xff09;2.2.1 例子1&#xff1a;数组分类2.2.2 例子2&#xff1…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的&#xff0c;特别是儿童青少年眼睛还在发育的状态来说&#xff0c;光线是至关重要的&#xff0c;于是这次测评就不能马虎&#xff0c;必须要本着专业严谨的态度进行测评&#xff0c;这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

我的CSDN 512天创作者纪念日总结:高效、高现

文章目录 512天创作者纪念日&#xff1a;2023年的12月31日CSDN的512天消息提醒第一篇文章&#xff0c;最后一篇文章总计847篇文章&#xff0c;每月发文分布512天&#xff0c;各专栏文章统计512天&#xff0c;互动总成绩 512天创作者纪念日&#xff1a;2023年的12月31日 2023年…