2013-01-10 58 views
2

我想測量每個處理器的CPU使用情況。如何獲得C#中每個處理器的CPU使用率?

當我運行下面的程序,我得到實例名2301_Total。我想我應該得到0,1,0,_Total,1,_Total

結果是什麼意思?如何獲得每個處理器的總CPU使用率。不是每個核心?

class PerfMonitor 
{ 
    static void Main() 
    { 
     var pc = new PerformanceCounter("Processor", "% Processor Time"); 
     var cat = new PerformanceCounterCategory("Processor"); 
     var instances = cat.GetInstanceNames(); 

     foreach (var s in instances) 
     { 
      pc.InstanceName = s; 
      Console.WriteLine("instance name is {0}", s); 
     } 
    } 
} 
+0

我不認爲操作系統的CPU打破下來 - 我見過的每一個系統監視器也只有選項看到每個核心或看到一切的一切。 – Bobson

+0

你有4個處理器核心,所以你得到了每個人的計數器和他們的總和。很難去猜測「0,_Total」的含義。 –

+0

也許你有一個雙核心英特爾機器,所以由於超線程可能會顯示4核心和每個核心的使用情況 – prthrokz

回答

1

結果是什麼意思?

你的結果是這樣的:

instance name is 2 
instance name is 3 
instance name is 0 
instance name is 1 
instance name is 6 
instance name is 7 
instance name is 4 
instance name is 5 
instance name is _Total 

每個實例是之處理(包括Hyper-V的邏輯一)除了最後一個是對所有處理器的累積實例的邏輯ID系統。

+0

在我看來,你有8個核心。 – ericyoung

+0

@ericyoung是的,這是我的,它是4個物理核心和4個邏輯核心。 – OmegaMan

0

下載OpenHardwareMonitor,它是開源的,幷包含一個DLL,您可以使用要做到這一點

相關問題