首页 > 其他分享 >快速查看显卡使用情况和占用用户

快速查看显卡使用情况和占用用户

时间:2024-01-12 14:22:10浏览次数:24  
标签:tmp info processes 查看 process 占用 list gpu 显卡

这是一个转载博客

转载于:

https://zinglix.xyz/2021/11/17/gpu-user/

 

pip install xmltodict

import subprocess
import xmltodict, pwd, json

UID = 1
EUID = 2


def owner(pid):
    """Return username of UID of process pid"""
    for ln in open("/proc/{}/status".format(pid)):
        if ln.startswith("Uid:"):
            uid = int(ln.split()[UID])
            return pwd.getpwuid(uid).pw_name


def add_user(process):
    tmp = []
    for p in process:
        p["user"] = owner(p["pid"])
        tmp.append(p)
    return tmp


def simplify(gpu):
    tmp = {}
    for k in gpu.keys():
        if k in [
            "@id",
            "product_name",
            "fan_speed",
            "fb_memory_usage",
            "utilization",
            "temperature",
            "processes",
        ]:
            tmp[k] = gpu[k]
    return tmp


def get_gpu_info():
    sp = subprocess.Popen(
        ["nvidia-smi", "-q", "-x"],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    out_str = sp.communicate()
    out_str = out_str[0].decode("utf-8")
    o = xmltodict.parse(out_str)["nvidia_smi_log"]
    o = json.loads(json.dumps(o))
    gpu_list = []
    if not isinstance(o["gpu"], list):
        o["gpu"] = [o["gpu"]]
    for gpu in o["gpu"]:
        if gpu["processes"] is None:
            gpu["processes"] = {}
            gpu["processes"]["process_info"] = []
        process = gpu["processes"]["process_info"]
        if not isinstance(process, list):
            process = [process]
        process = add_user(process)
        gpu["processes"]["process_info"] = process

        gpu = simplify(gpu)
        gpu_list.append(gpu)
    o["gpu"] = gpu_list
    return o


gpu = get_gpu_info()
print()
print(
    "    {: <13}\t{: <8}\t{: <20}\t{}".format(
        "user", "pid", "used_memory", "process_name"
    )
)
print(
    "---------------------------------------------------------"
)
for i, g in enumerate(gpu["gpu"]):
    print(
        "{} {} ({}):".format(
            i,
            g["product_name"],
            g["utilization"]["gpu_util"],
        )
    )
    total = int(g["fb_memory_usage"]["total"].split(" ")[0])
    for p in g["processes"]["process_info"]:
        used = int(p["used_memory"].split(" ")[0])
        print(
            "    {: <13}\t{: <8}\t{: <20}\t{}".format(
                p["user"],
                p["pid"],
                "{: <10} ({:5.2f}%)".format(
                    p["used_memory"], 100 * used / total
                ),
                p["process_name"],
            )
        )
    print(
        "---------------------------------------------------------"
    )
print()

 

标签:tmp,info,processes,查看,process,占用,list,gpu,显卡
From: https://www.cnblogs.com/yongy1030/p/17960685

相关文章

  • 虚拟化(7) windows虚拟机的显卡模式
    以前,我的启动参数是kvm。略。-vgaqxl进入windows虚拟机后,感觉鼠标滑动有点迟钝。查看设备管理器里,显卡模式是vga然后,下载了virtio-win-0.1.208.iso,启动参数用--cdromiso路径。进入windows打开光驱,运行Msi文件,提示这个版本要求win8及server2012以上。所以又下载了低版本virtio-......
  • 7.deployment扩容以及查看pod使用的CPU
    官方文档:https://kubernetes.io/zh-cn/docs/tasks/run-application/scale-stateful-set/题目1:将名为loadbalancer的deployment资源的Pod的副本数扩容为6个。解答1:扩容,如果是缩容为3个就把6改为3kubectlscale--replicas=6deployment/loadbalancer查看:kubectlgetdeploymen......
  • virt-top 命令查看kvm虚拟机的资源使用情况
    命令介绍virt-top:a'top'-likeutilityforvirtualizationSUMMARYvirt-top[-options]OPTIONS-1StartbydisplayingpCPUs(default:tasks)-2Startbydisplayingnetworkinterfaces-3Startb......
  • GDB调试之变量查看与修改
    一、查看函数参数调试代码下载地址使用命令"p 参数名称"可以查看指定参数的值,如果想一次性查看函数的所有参数,可以使用命令"infoargs"或者"iargs"即可。代码中有一个test_work函数,在这个函数处设置一个断点,然后查看此函数的参数信息:二、查看变量的值三、设置字符串的显......
  • Typora结合Layer放大查看图片
    Typora结合Layer放大查看图片下载最新Layui组件库Layui官网Layui2.9.3下载拷贝文件将layui目录拷贝到Typora的安装目录下。安装目录的resources\app文件夹下,新建了extend文件夹,用来存放扩展插件的。修改window.html文件位置:Typora安装目录\resources\app\window.html(这个......
  • 【K8S系列】如何高效查看 k8s日志
     序言你只管努力,其他交给时间,时间会证明一切。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法希望这篇文章......
  • k8s集群Node节点管理:节点信息查看及节点label标签管理
    k8s集群Node节点管理:节点信息查看及节点label标签管理Kubernetes集群Node管理一、查看集群信息[root@k8s-master1~]#kubectlcluster-infoKubernetescontrolplaneisrunningathttps://192.168.10.100:6443CoreDNSisrunningathttps://192.168.10.100:6443/api/v1......
  • 使用tcpdump抓取网络包,在wareshark查看对应请求及响应的最终报文
    tcpdump是Linux环境的抓包工具,可以使用此工具抓取指定host的所有网络包,在wareshark工具中进行查看。tcpdumphost  [IP或域名]   -w [文件名]示例如下:1、执行命令,抓取server端对webxml.com.cn站点的网络报文;2、在server端执行对webxml的SOAP请求;3、ctrl+c 终止抓取;4......
  • Java字节码文件查看常用工具​
    04.字节码常用工具javap-v命令javap是JDK自带的反编译工具,可以通过控制台查看字节码文件的内容。适合在服务器上查看字节码文件内容。直接输入javap查看所有参数。输入javap-v字节码文件名称查看具体的字节码信息。(如果是jar包需要先使用jar-xvf命令解压)jclasslib的idea插件j......
  • 关闭被占用的端口
    打开cmd输入netstat-anonetstat-ano找到端口所对应的PID,然后打开任务管理器-详细信息根据刚刚的PID找到对应的进程选中结束任务就可以......