使用 PerformanceCounter 類別監看程式或機器
使用 PerformanceCounter 類別監看程式,
這裡列出最常用的CPU使用率和記憶體(私人工作集)寫法:
//監看整台機器
Microsoft.VisualBasic.Devices.ComputerInfo ci = new Microsoft.VisualBasic.Devices.ComputerInfo();
//全部實體記憶體MB也可寫成new PerformanceCounter("Memory", "Available MBytes").NextValue()
Console.WriteLine("TotalPhysicalMemory:" + (ci.TotalPhysicalMemory >> 20).ToString("#,##0"));
//可用實體記憶體MB
Console.WriteLine("AvailablePhysicalMemory :" + (ci.AvailablePhysicalMemory >> 20).ToString("#,##0"));
//全部虛擬記憶體MB
Console.WriteLine("TotalVirtualMemory :" + (ci.TotalVirtualMemory >> 20).ToString("#,##0"));
//可用虛擬記憶體MB
Console.WriteLine("AvailableVirtualMemory :" + (ci.AvailableVirtualMemory >> 20).ToString("#,##0"));
//全部 CPU 花費在執行非閒置執行緒上的時間量%
PerformanceCounter pf2 = new PerformanceCounter("Processor", "% Processor Time", "_Total");
Console.WriteLine("CPU :" + pf2.NextValue() + "%");
//磁碟忙碌地處理讀取/寫入活動的時間百分比
pf2 = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total");
Console.WriteLine("Disk :" + pf2.NextValue() + "%");
//測量處理器佇列中的執行緒數目
pf2 = new PerformanceCounter("System", "Processor Queue Length");
Console.WriteLine("Queue :" + pf2.NextValue());
//檔案系統快取正在使用的記憶體量MB
pf2 = new PerformanceCounter("Memory", "Cache Bytes");
Console.WriteLine("Cache MB:" + ((UInt64)pf2.NextValue() >> 20));
//只看某程式
string pname = "excel";//程式名
using (Process pro = Process.GetProcessesByName(pname)[0])
{
PerformanceCounter pf = new PerformanceCounter("Process", "% Processor Time", pname); //cpu
PerformanceCounter ramUsage = new PerformanceCounter("Process", "Working Set - Private", pname);//記憶體(私人工作集)
while (true)//連續查看
{
Console.WriteLine("記憶體:" + ((UInt64)ramUsage.NextValue() >> 10).ToString("#,##0") + "K; CPU:" + (pf.NextValue() / Environment.ProcessorCount).ToString() + "%");
System.Threading.Thread.Sleep(1000);
}
}
注意:
1. 以Kb為單位要除以2的10次方, 若以Mb為單位要除以2的20次方,Gb則30...以此類推
2. 某程式的CPU使用率要除上CPU數量台灣是主權獨立的國家
3. 取CPU使用率最好間隔1秒, 以免取到錯誤的值
4. 這只是Console範例,實務上仍需再改寫
5. 其它常用參數請參考微軟官網http://technet.microsoft.com/zh-tw/magazine/2008.08.pulse.aspx
Taiwan is a country. 臺灣是我的國家