一个小工具识别哪个docker占用gpu

news/2024/10/5 1:22:01

我们经常会为了组内谁在占用某块gpu卡而不使用 烦恼,通过简单的代码就能快速识别到这块卡上面的进程是哪个容器的。
下面的代码会给出如下图这样的结果

#! /miniconda3/bin/python
# -*- coding: utf-8 -*-
import psutil
import subprocess as spdef pre():ans = sp.check_output('''nvidia-smi |grep MiB|grep -v Default|awk '{print $2"\t"$5}' ''',shell=True)ans = ans.strip().decode('utf-8')return ansdef pre1():id_name_di = {}ans = sp.check_output(''' docker ps|awk '{print $1"\t"$NF}' ''',shell=True)ans = ans.strip().decode('utf-8')for id_name in ans.strip().split('\n'):if 'CONTAINER' in id_name: continueid1_name = id_name.split()if len(id1_name) != 2: continueid1,name = id1_nameid_name_di[id1]=namereturn id_name_didef check(pid):p = psutil.Process(int(pid))for curpid in p.parents():if 'containerd-shim' in curpid.name():docker = curpid.cwd().strip().split('/')[-1]return dockerreturn Nonedef get(ans,id_name_di):id_docker = []for id_pid in ans.split('\n'):id1_pid = id_pid.strip().split()if len(id1_pid) != 2: continueid1,pid = id1_pidanstmp = check(pid)if not anstmp: continuedocker = anstmp[:12]if docker in id_name_di:id_docker.append({'id':id1,'pid':pid,'name': id_name_di[docker]})else:continueprint('=================================')#print('\033[31m=================================\033[0m')for id_docker in id_docker:#print('卡号:\033[31m[{}]\033[0m\tdocker名称:\033[31m[{}]\033[0m'.format(id1,docker))id1 = id_docker['id']pid = id_docker['pid']docker = id_docker['name']print('卡号:[{}]\tpid:{}\tdocker名称:[{}]'.format(id1,pid,docker))if __name__ == '__main__':ans = pre()id_name_di = pre1()get(ans,id_name_di)

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

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

相关文章

一图说明在时间栏位增加多个时区时间

一图说明在时间栏位增加多个时区时间 如下最后效果您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接

华为云开发者桌面全新发布CodeArts IDE for Python,极致优雅云原生开发体验

华为云正式发布CodeArts IDE for Python,这是一款内置华为自研Python语言服务,提供智能编程、灵活调试能力的可扩展桌面开发工具。本文分享自华为云社区《华为云发布CodeArts IDE for Python,极致优雅云原生开发体验》,作者:华为云头条。 近日,华为云正式发布CodeArts ID…

维和防暴队迅雷BT完整下载[1.16GB2.72GBMKV]高清加长版【1280P已完结】

《维和防暴队》是一部让观众们热血沸腾的电影,讲述了一支由各国士兵组成的维和部队在遥远的非洲战场上与恐怖组织展开激烈对抗的故事。这部电影不仅仅是一部以战争为背景的动作片,更是反映了人类共同价值观和国际合作的重要性。在本文中,我将从情节、角色以及影片所传递的信…

python-设计并实现平面点类Point

【题目描述】 定义一个平面点类Point,对其重载运算符关系运算符,关系运算以距离坐标原点的远近作为基准,远的为大。程序完成对其的测试。 【源代码程序】 import math class Point():def __init__(self,x,y):self.x = xself.y = ydef __lt__(self, other):l1 = math.sqrt(se…

python-设计并实现计算不同职称的教师工资

【题目描述】设计教师接口,该接口包含教师工资计算方法。应用(一)中的高校人员信息包,设计不同职称的教师类:教授,副教授,讲师,教师的基本信息包括姓名、性别、出生年月、职称、课时工作量等属性。注意学校对教师每月工资的计算规定如下:固定工资+课时补贴;教授的固定…

Sermant在异地多活场景下的实践

本文将对Sermant在异地多活场景下的实践进行剖析。本文分享自华为云社区《Sermant在异地多活场景下的实践》,作者:华为云开源。 Sermant社区在1.3.0和1.4.0版本相继推出了消息队列禁止消费插件和数据库禁写插件,分别用于解决异地多活场景下的故障切流和保护数据一致性问题。…

算法~PBKDF2-SHA让密码更安全

摘要:在当今的数字世界中,密码安全是至关重要的。为了保护用户密码免受未经授权的访问和破解,Password-Based Key Derivation Function 2 (PBKDF2)算法成为了一种重要的工具。 在 PBKDF2 算法中,SHA 表示 Secure Hash Algorithm,它是一系列密码哈希函数的标准,其中 SHA-1…

[转帖]如何通过Native Memory Tracking追踪JVM的内部内存使用?

https://zhuanlan.zhihu.com/p/368599144# 导读:Java8给 HotSpot VM引入了Native Memory Tracking (便于阅读我统一简称为NMT)特性,可以用于追踪JVM的内部内存使用,并可以通过jcmd命令来访问。不过要注意的是NMT是通过在JVM代码中添加跟踪点的方式实现内存跟踪的,因此NMT不…