【发布时间】:2020-06-19 05:19:00
【问题描述】:
我正在尝试使用 openhardwaremonitor 获取我的 GPU 的当前利用率 我使用 SensorType.Load 来获取 CPU 的利用率,但对于 GPU,它返回的是内存使用情况。我不确定该怎么做
if (hardware.HardwareType == HardwareType.GpuNvidia)
{
hardware.Update();
foreach (var sensors in hardware.Sensors)
{
if (sensors.SensorType == SensorType.Load)
{
tester.Text = sensors.Name + ": " + sensors.Value.GetValueOrDefault();
int gpuLoadInt = Convert.ToInt32(sensors.Value.GetValueOrDefault());
string gpuLoadString = Convert.ToString(Decimal.Round(gpuLoadInt));
gpuLoadGuage.Value = gpuLoadInt;
gpuLoadLabel.Text = gpuLoadString + "%";
}
}
}
【问题讨论】:
-
OpenHardwareMonitor 的可用文档在 IMO 中很糟糕。我能找到的只是一个显然是在 2010 年创建的 PDF。但是你能尝试使用
SensorType.Level吗?显然它与加载不同 -
你说得对,除了源代码之外,文档几乎不存在。遗憾的是,使用 .level 不会返回任何信息
-
您可以使用当前时钟和最大时钟将某些东西放在一起。传感器具有
Max的属性,但这只是 GPU 在监控期间达到的最大频率,而不是理论最大值。您也可以使用它并将其保存到磁盘并始终使用最高的数字。这将使您计算的Load百分比在开始时不太准确,但随着用户推动他们的 GPU,随着时间的推移越来越准确