【问题标题】:CPU Usage DisplayCPU 使用率显示
【发布时间】:2013-11-27 22:04:58
【问题描述】:

这里有几个关于如何监控 CPU 使用率的问题,但我无法让我的代码显示除 0 以外的任何内容。

有人可以看看,让我知道我做错了什么吗?

PerformanceCounter perform = new PerformanceCounter("Processor", "% Processor Time", "_Total");
public string cpuTime()
{
      return perform.NextValue() + "%";
}
public void cpuUtilization()
{
}
public String getCPUUtilization()
{
      return cpuTime();
}

【问题讨论】:

  • 您是否不止一次调用它? perform.NextValue() 需要两次调用。它给你的数字是number of cycles executed by process between calls/total cycles executed between calls 的结果。第一次调用它时,它会给你0,然后它开始给你准确的数字。请参阅this old answer of mine 了解更多信息
  • 另请注意,两次调用之间至少需要 100 毫秒才能使其工作,否则您将只能获得 0% 或 100% 的结果。

标签: c# monitoring cpu-usage


【解决方案1】:

处理器只做两件事。它要么执行代码,全速运行。或者它在找不到任何工作要做时被操作系统暂停,这是迄今为止最常见的情况。

因此,要达到百分比利用率,您需要了解它在一个时间间隔内做了什么。一秒钟是常见的选择。利用率现在是它运行的那一秒内的时间量与它停止的时间量。

间隔是您的代码中缺少的内容。调用 cpuTime() 方法后,必须等待,直到再次调用它。所以收集了足够的历史数据。这需要一个计时器。间隔越短,测量的可靠性就越低。让它太短,你只会得到 0 或 100%。您当前的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多