性能计数器将 cpuUsage 保持在一定百分比 C#

Posted

技术标签:

【中文标题】性能计数器将 cpuUsage 保持在一定百分比 C#【英文标题】:Performance Counter Keeping cpuUsage under a certain percentage C# 【发布时间】:2013-08-02 14:52:32 【问题描述】:

所以我正在做一些检查,检查 CPU 使用率是否低于某个百分比,以免系统陷入困境。我有这个代码:

 static PerformanceCounter cpuUsage;

    public static void Main(string[] args)


    
        cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total");


        do
        

            Console.WriteLine(cpuUsage.NextValue() + " %");
            Thread.Sleep(1000);

            Console.WriteLine(cpuUsage.NextValue() + " %");
        

        while (cpuUsage.NextValue() < 50.00);

    

我最初的想法是使用这个 do while 循环来不断检查 CPU 使用率,直到它超过 50% 然后停止循环。但由于某种原因,即使 cpuUsage.NextValue 超过 50,它仍然不会退出循环。我猜这个值有问题。有什么建议吗?

【问题讨论】:

这也是我的输出:0% 4.6785% 0% 2.34375% 0% 4.6785% 0% 100% 0% 2.345% 知道为什么它总是返回一个 0 吗? 【参考方案1】:

我认为线索在 0% 输出中 - documentation recommends 您每秒只调用 NextValue 以便它有时间获取数据,但实际上您每秒调用 3 次。试试:

float usage;
do 
     Thread.Sleep(TimeSpan.FromSeconds(1));
     usage = cpuUsage.NextValue();
     Console.WriteLine(usage + " %");
 while (usage < 50.00);

【讨论】:

好的,我试试。非常感谢罗伯 Rob 代码运行良好。只需在循环之前声明 var 用法并在其中使用用法!非常感谢先生! 更改答案以便编译,谢谢。很高兴能帮上忙。

以上是关于性能计数器将 cpuUsage 保持在一定百分比 C#的主要内容,如果未能解决你的问题,请参考以下文章

% RT 检查时间

RawFraction 性能计数器即使在删除性能类别后仍保持其状态

如何使用Powershell脚本获取Azure VM来宾指标(性能计数器)

我可以将 div 高度编程为当前宽度的一定百分比吗? [复制]

使用硬件性能计数器是个好主意吗

OpenGL:如何获得 GPU 使用百分比?