0

システムを監視して、プログラムで使用されている合計 cpu とシステムの合計 cpu 使用率を確認する次のクラスがあります。問題は、GetHealthInformation メソッドを呼び出すと、プログラムの % CPU がシステムの % CPU よりも大きい場合があることです。これが私のコードです:

    public class MonitoringManager : AbstractComponent, IMonitoringManager, IStaticComponent {
    private static PerformanceCounter totalCpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); 
    private static PerformanceCounter cpuCounterMyProgram = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);
    private static DateTime lastUpdate = DateTime.UtcNow;

    public void Load() {
        cpuCounterMyProgram.NextValue();
        totalCpuCounter.NextValue();
    }

    public  HealthInfo GetHealthInformation(){
        var now = DateTime.UtcNow;
        if((now - lastUpdate).TotalMilliseconds <1000){
            Thread.Sleep(1000);
        }
        lastUpdate = now;
        return new HealthInfo(totalCpuCounter.NextValue(), cpuCounterMyProgram.NextValue() / Environment.ProcessorCount);

    }

}


    public class HealthInfo{

    [DataMember]
    public float CpuTotal { get; set; }

    [DataMember]
    public float CpuMyProgram { get; set; }


    public HealthInfo(float cpuTotal, float cpuMyProgram){
        CpuTotal = cpuTotal;
        CpuMyProgram = cpuMyProgram;           
    }

    #endregion IConstructors
}

}

なにが問題ですか?システムの合計 % CPU が 0% で、プログラムが 2% になることがあるのはなぜですか??

4

0 に答える 0