C#-按百分比获取GPU的总使用量

时间:2019-07-01 05:35:01

标签: c# gpu

我正在为程序添加一些新功能,这些功能目前通过串行连接将CPU使用率和RAM使用率发送给Arduino(请参阅this)。我正在尝试添加GPU和磁盘使用率。磁盘使用率不是问题,但是从Windows获取GPU使用率已成为真正的麻烦。

我尝试使用PerformanceCounter,但这似乎根本不起作用!请参见下面的代码。

PerformanceCounter gpuCounter = new PerformanceCounter("GPU Engine", "Utilization Percentage");
string gpuUsage = gpuCounter.NextValue()

我想要这样的百分比使用GPU:

  

GPU使用率:#。#%

我有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要为“ GPU引擎”创建PerformanceCounterCategory,然后在类别上调用GetInstanceNames()。然后,您可以在调用GetCounters(name)方法的名称字符串数组上进行迭代。

    public List<PerformanceCounter> Sample ()
    {
        var list = new List<PerformanceCounter> ();
        var category = new PerformanceCounterCategory ("GPU Engine");
        var names = category.GetInstanceNames ();
        foreach (var name in names)
            list.AddRange (category.GetCounters (name));
        return list;
    }

您的列表中将同时包含“运行时间”和“利用率百分比”计数器。您可以基于CounterName属性筛选GetCounters返回的计数器。