C#使用PerformanceCounter獲取CPU和內存利用率
PerformanceCounter
PerformanceCounter表示Windows NT性能計數器組件,位於System.Diagnostics。
最常用的PerformanceCounter的構造函數:public PerformanceCounter (string categoryName, string counterName, string instanceName);
,該構造函數初始化PerformanceCounter類的新的只讀實例,並將其與本地計算機上指定的系統性能計數器或自定義性能計數器及類別實例關聯。其中:
- categoryName:此性能計數器關聯的性能計數器類別(PerformanceCounterCategory)的名稱。
- counterName:性能計數器的名稱。
- instanceName:性能計數器類別實例的名稱,或者為空字符串 ("")(如果該類別包含單個實例)。
使用PowerShell獲取所有的PerformanceCounterCategory的名字:
PS F:\Workspace> [System.Diagnostics.PerformanceCounterCategory]::GetCategories() | ForEach-Object { '{0}: {1}' -f $_.CategoryName,$_.CategoryHelp }
結果:
TCPv4: TCP performance object 包含衡量使用 TCP 協議發送和接收 TCP Segment 速率的計數器變量。它包含監督在每個 TCP 連接狀態下的 TCP 連接數目的計數器變量。
NBT Connection: NBT Connection performance object 包括衡量用 NBT 連接在一台本地計算機和一台遠程計算機之間發送和接收字節的速率的計數器。該連接用遠程計算機的名稱來識別。
PacketDirect Transmit Counters: NDIS PacketDirect 傳輸計數器已設置。
RemoteFX Network: 這是每個會話 RemoteFX 網絡計數器的計數器集
IPsec AuthIP IPv4: IPsec AuthIP IPv4 是一組 Internet 協議安全(IPsec)身份驗證 IP (AuthIP)計數器,適用於使用 Internet 協議版本 4 的流量和連接。
Terminal Services: 終端服務摘要信息
Authorization Manager Applications: 授權管理器應用程序對象的計數器集
HTTP Service: HTTP 服務計數器集
SynchronizationNuma: 同步性能對象由用於內核同步的計數器組成。同步對象將每個處理器表示為該對象的實例。計數器根據系統 NUMA 拓撲進行累計。
SMSvcHost 3.0.0.0: SMSvcHost 3.0.0.0 性能計數器
Thread: Thread performance object 包括衡量線程行為方面的計數器。一個線程是在一台處理器上執行指令的基本對象。所有運行的處理至少有一個線程。
Per Processor Network Interface Card Activity: Per Processor Network Interface Card Activity 計數器集度量每個處理器的網絡接口卡的網絡活動。
.NET CLR Data: .Net CLR 數據
Search Indexer: 索引器插件統計信息
PacketDirect Queue Depth: NDIS PacketDirect 隊列深度計數器集。
.NET CLR Interop: CLR interop 的統計信息。
ServiceModelOperation 4.0.0.0: ServiceModelOperation 4.0.0.0 性能計數器
Offline Files: 用於脫機文件的性能計數器
Hyper-V Hypervisor Logical Processor: 有關邏輯處理器的信息。
Database: 數據庫通過使用 ESE 高性能嵌入數據庫管理系統,為每個進程提供了性能統計數據。
SMB Direct Connection: SMB 直通連接性能計數器集由測量連接活動的計數器組成。一台計算機可以建立多個 SMB 直通連接。SMB 直通連接計數器集以一對 IP 地址和端口表示每個連接,其中第一個 IP 地址/端口表示該連接的本地終結點,第二個 IP 地址/端口表示該連接的遠程終結點。
Bluetooth Radio: 與本地藍牙無線收發器相關的計數器
RAS Total: RAS Object Type 處理你的系統上的 RAS 設備的混合的端口
Netlogon: 衡量 Netlogon 性能的計數器。
IPsec IKEv1 IPv4: IPsec IKEv1 IPv4 是一組 Internet 協議安全(IPsec) Internet 密鑰交換版本 1 (IKEv1)計數器,適用於使用 Internet 協議版本 4 的流量和連接。
Peer Name Resolution Protocol: 對等名解析協議(PNRP)性能對象由監視每個可用的 PNRP 群的計數器組成。這些計數器監視本地 PNRP 緩存並測量發送和接收 PNRP 協議消息的速率。
MSDTC Bridge 4.0.0.0: MSDTC Bridge 4.0.0.0 性能計數器
IPsec IKEv1 IPv6: IPsec IKEv1 IPv6 是一組 Internet 協議安全(IPsec) Internet 密鑰交換版本 1 (IKEv1)計數器,適用於使用 Internet 協議版本 6 的流量和連接。
ServiceModelEndpoint 4.0.0.0: 終結點的 ServiceModel 性能計數器
RAS Port: RAS Object Type 處理你的系統上的 RAS 設備的個別端口。
IPsec IKEv2 IPv6: IPsec IKEv2 IPv6 是一組 Internet 協議安全(IPsec) Internet 密鑰交換版本 2 (IKEv2)計數器,適用於使用 Internet 協議版本 6 的流量和連接。
DNS64 Global: 此計算機上 DNS64 的統計信息。
IPsec AuthIP IPv6: IPsec AuthIP IPv6 是一組 Internet 協議安全(IPsec)身份驗證 IP (AuthIP)計數器,適用於使用 Internet 協議版本 6 的流量和連接。
Hyper-V Hypervisor: 有關虛擬機監控程序的信息。
IPsec IKEv2 IPv4: IPsec IKEv2 IPv4 是一組 Internet 協議安全(IPsec) Internet 密鑰交換版本 2 (IKEv2)計數器,適用於使用 Internet 協議版本 4 的流量和連接。
Memory: Memory performance object 由描述計算機上的物理和虛擬內存行為的計數器組成。物理內存指計算機上的隨機存取存儲器的數量。虛擬內存由物理內存和磁盤上的空間組成。許多內存計數器監視頁面調度(指磁盤與物理內存之的代碼和數據頁的移動)。過多的頁面調度(內存不 足的一種表現)可引起拖延,會影響整個系統處理效率。
Storage Spaces Write Cache: 存儲空間寫入緩存性能對象包含一些計數器,這些計數器顯示有關存儲空間寫入緩存的信息。
WSMan Quota Statistics: 顯示 WS-Management 進程的配額使用率和沖突信息。
SMSvcHost 4.0.0.0: SMSvcHost 4.0.0.0 性能計數器
XHCI Interrupter: 由用於測量 xHCI 控制器中斷程序的各方面的計數器組成。
UDPv6: UDP performance object 包含衡量使用 UDP 協議發送和接收 UDP 數據報的速率的計數器。它包括監督 UDP 協議錯誤的計數器。
CCM Endpoint: The CCM Endpoint object consists of endpoints currently loaded by the SMS Agent Host service
USB: USB I/O 計數器
System: 該系統性能對象包含應用於計算機上多個組件處理器實例的計數器。
IPHTTPS Global: 此計算機上 IPHTTPS 服務器的統計信息。
Database ==> Instances: 此進程中的實例
FileSystem Disk Activity: FileSystem 磁盤活動性能計數器集由測量 FileSystem 的 IO 活動的若干計數器所組成。該計數器集可測量 FileSystem 從磁盤驅動器讀取或寫入到其中的字節數。
Windows Workflow Foundation: Windows Workflow Foundation 性能計數器
ServiceModelService 4.0.0.0: 服務的 ServiceModel 性能計數器
Paging File: Paging File performance object 包括監督在計算機上的分頁文件的計數器。分頁文件指為備份計算機上已用物理內存而保留的磁盤空間。
WF (System.Workflow) 4.0.0.0: Windows Workflow Foundation 性能計數器
Job Object Details: % Job object Detail 顯示有關作業對象中的活動處理的詳細的操作信息。
Event Tracing for Windows: 此集合中的計數器是指有關 Windows 子系統的事件跟蹤性能的系統范圍躍點數。
ICMP: ICMP performance object 包括衡量用 ICMP 協議發送和接收消息的速度的計數器。它還包括監督 ICMP 協議錯誤的計數器。
Teredo Server: 此計算機上承載的 Teredo 服務器的統計信息。
MSDTC Bridge 3.0.0.0: MSDTC Bridge 3.0.0.0 性能計數器
.NET CLR Loading: CLR 類加載程序的統計信息。
Process: Process performance object 包含監視運行中應用程序和系統處理的計數器。所有在一個處理中的線程均共享同一個地址空間並可以訪問同樣的數據。
TCPIP Performance Diagnostics: 此計數器集可以測量各種 TCPIP 活動以診斷性能。
.NET Data Provider for SqlServer: 用於 System.Data.SqlClient 的計數器
IPHTTPS Session: 此 IPHTTPS 服務器上每個會話的統計信息。
Database ==> TableClasses: 按表類進行的 ESE 高性能嵌入式數據庫管理系統的統計。
Hyper-V Dynamic Memory Integration Service: 此計數器集表示動態內存集成服務的統計信息
HTTP Service Url Groups: URL 組特有計數器集
.NET CLR LocksAndThreads: CLR 鎖和線程的統計信息。
IPv6: IP performance object 包括衡量使用 IP 協議發送和接收的 IP 數據報速度的計數器。它還包含監督 IP 協議錯誤計數器。
PacketDirect Receive Counters: NDIS PacketDirect 直接接收計數器已設置。
LogicalDisk: Logical Disk performance object 包含監視一個硬盤或固定磁盤驅動器的邏輯分區的計數器。Performance Monitor 用邏輯磁盤的驅動器號(如: C)來識別邏輯磁盤。
Teredo Relay: 此計算機上承載的 Teredo 中繼的統計信息。
IPv4: IP performance object 包括衡量使用 IP 協議發送和接收的 IP 數據報速度的計數器。它還包含監督 IP 協議錯誤計數器。
Client Side Caching: 用於 SMB BranchCache 的性能計數器,用於減少帶寬消耗
.NET CLR Jit: CLR Jit 的統計信息。
ICMPv6: ICMP performance object 包括衡量用 ICMP 協議發送和接收消息的速度的計數器。它還包括監督 ICMP 協議錯誤的計數器。
Hyper-V Hypervisor Root Partition: 有關虛擬機的信息
Thermal Zone Information: Thermal Zone Information 性能計數器集合是由對系統中每個熱區域各方面性能進行測量的計數器組成。
IPsec Driver: IPsec Driver 是應用於 Internet 協議版本 4 和 Internet 協議版本 6 的流量的 Internet 協議安全(IPsec)驅動程序計數器集。
PacketDirect EC Utilization: NDIS PacketDirect 執行上下文利用率計數器已設置。
Hyper-V VM Vid Partition: 這些是 VID 分區對象的性能計數器。
WFPv4: WFPv4 是應用於 Internet 協議版本 4 的流量和連接的 Windows 篩選平台計數器集。
Event Tracing for Windows Session: 此集合中的計數器與各個 Windows 事件跟蹤會話相關。
Storage Spaces Virtual Disk: 存儲空間虛擬磁盤性能對象由顯示存儲空間虛擬磁盤信息的計數器組成。
WinNAT Instance: WinNAT 實例 counterset 提供每個 NAT 實例的資源使用信息。
IPsec Connections: IPsec 連接是一組 Internet 協議安全性(IPsec)計數器,它適用於 IPsec 封裝的連接。
Processor Information: 處理器信息性能計數器集由測量處理器活動方面的計數器組成。處理器是計算機進行算術和邏輯計算,在外設上啟動操作,以及運行處理線程的部分。一台計算機可以具有多個處理器。在有些計算機上,處理器以 NUMA 節點的形式進行組織,以便共享物理內存 之類的硬件資源。處理器信息計數器集將每個處理器表示為一對編號: 其中,第一個編號為 NUMA 節點編號;第二個編號為該 NUMA 節點內以零開始的處理器索引。如果計算機不使用 NUMA 節點,則第一個編號為零。
RemoteFX Graphics: RemoteFX 編碼性能對象包含用於度量 RemoteFX 編碼性能的計數器
WinNAT ICMP: WinNat ICMP 計數器集測量網絡地址轉換 ICMP 數據包的網絡活動。
BranchCache: Counters for measuring bandwidth and latency for BranchCache.
PhysicalDisk: Physical Disk performance object 包含監視計算機上的硬盤或固定磁盤驅動器的計數器。磁盤用於存儲文件、程序及分頁數據並且通過讀取檢索這些項目並通過記錄寫入對其進行更改。物理磁盤計數器的值為邏輯磁盤(由磁盤分成)值的總和。
WFP: WFP 是不應用於任何特定 Internet 協議版本的 Windows 篩選平台計數器集。
PacketDirect Receive Filters: NDIS PacketDirect 接收篩選器計數器已設置。
Network Adapter: Network Adapter performance object 包括多個計數器,用於衡量通過物理或虛擬網絡連接發送和接收字節和數據包的速率。它還包括可對連接錯誤進行監測的計數器。
.NET Memory Cache 4.0: System.Runtime.Caching.MemoryCache Performance Counters
.NET CLR Remoting: CLR 遠程處理的統計信息。
Fax Service: 傳真服務計數器集
Pacer Pipe: Pacer Pipe 性能計數器集由來自數據包計划程序的管道統計信息組成。
Synchronization: 同步性能對象由計數器組成用於內核同步。同步對象將每個處理器作為對象的實例。
.NET CLR Networking: Help not available.
Database ==> Databases: Databases attached to this process
.NET CLR Networking 4.0.0.0: System.Net 命名空間中的類計數器。
Storage Spaces Drt: 存儲空間直通性能對象包含一些計數器,這些計數器顯示有關存儲空間更新范圍跟蹤的信息。
ReadyBoost Cache: 顯示關於 ReadyBoost 緩存的性能統計信息。
SMB Server Shares: 此計數器集顯示有關 SMB 服務器共享的信息。該服務器共享使用 SMB 協議版本 2 或更高版本進行共享。
Windows Time Service: Windows 時間服務性能計數器顯示服務的時間同步運行時信息。請注意,只有在服務處於正在運行狀態時,才能顯示該信息。
Microsoft Winsock BSP: Microsoft Winsock 基本服務提供程序的全局性能計數器
.NET CLR Exceptions: CLR 異常處理的運行時統計信息。
WFP Classify: WFP 分類是與分類調用相關的 Windows 篩選平台(WFP)計數器集。
NUMA Node Memory: 按 NUMA 系統上每節點報告近似內存使用率統計信息的計數器。
Bluetooth Device: 與遠程藍牙設備相關的計數器
UDPv4: UDP performance object 包含衡量使用 UDP 協議發送和接收 UDP 數據報的速率的計數器。它包括監督 UDP 協議錯誤的計數器。
Storage Spaces Tier: 存儲空間層性能對象包含一些計數器,這些計數器顯示有關存儲空間層的信息。
Cache: Cache performance object 包括監督文件系統緩存(物理內存上盡可能長時間的存儲最近使用過的數據以便訪問該數據時不需再從磁盤上讀取的那一部分內存。)的計數器。因為應用程序只使用緩存,因此該緩存可作為應用程序 I/O 操作的指示器。當有足夠內存時,緩存可增大 ,但當內存不足時,緩存會變得太小而無法使用。
ServiceModelOperation 3.0.0.0: ServiceModelOperation 3.0.0.0 性能計數器
HTTP Service Request Queues: 請求隊列計數器集
Print Queue: 顯示一個打印列隊的操作統計。
SMB Server: SMB 服務器性能計數器為 SMB 協議版本 2 和更高版本度量文件服務器活動
Telephony: 電話服務系統
Generic IKEv1, AuthIP, and IKEv2: 泛型 IKEv1、AuthIP 和 IKEv2 是一組 Internet 協議安全性(IPsec) Internet 密鑰交換版本 1 (IKEv1)、身份驗證 IP (AuthIP)以及 Internet 密鑰交換版本 2 (IKEv2)計數器,它們是通用計數器,並不適用於特定的 Internet 協議版本。
Redirector: Redirector performance object 包括在本地計算機上監督網絡連接的計數器。
SMB Server Sessions: 此計數器集顯示有關使用 SMB 協議版本 2 或更高版本的 SMB 服務器會話的信息
Per Processor Network Activity Cycles: Per Processor Network Activity Cycles 計數器集根據每個處理器上接口的網絡活動來測量處理器循環。
WinNAT UDP: WinNat UDP 計數器集測量網絡地址轉換 UDP 數據包的網絡活動。
ReFS: 有關 ReFS 文件系統性能計數器的信息。
WinNAT: WinNAT 常規計數器集測量所有網絡地址轉換數據包的網絡活動。
BitLocker: BitLocker 驅動器加密性能計數器
Network QoS Policy: 此計數器集由特定於網絡 QoS 策略的流統計信息組成。
Hyper-V Hypervisor Root Virtual Processor: 有關虛擬處理器的信息
Event Log: 事件日志
WinNAT TCP: WinNat TCP 計數器集測量網絡地址轉換 TCP 數據包的網絡活動。
ServiceModelService 3.0.0.0: ServiceModelService 3.0.0.0 性能計數器
Energy Meter: 能量計性能對象測量總能耗。
Storage Management WSP Spaces Runtime: 存儲管理 WSP 空間運行時性能對象由計數器組成,這些計數器顯示了有關存儲管理 WSP 空間提供程序運行時的信息。
WFP Reauthorization: WFP 重新授權是與連接重新授權相關的一組 Windows 篩選平台(WFP)計數器。
Teredo Client: Teredo 客戶端的統計信息。
.NET Data Provider for Oracle: 用於 System.Data.OracleClient 的計數器
PowerShell Workflow: 顯示 PowerShell 工作流引擎的性能計數器。
TCPv6: TCP performance object 包含衡量使用 TCP 協議發送和接收 TCP Segment 速率的計數器變量。它包含監督在每個 TCP 連接狀態下的 TCP 連接數目的計數器變量。
Network Interface: Network Interface performance object 包括多個計數器,用於衡量通過某個網絡連接發送和接收字節和數據包的速率。它還包括可對連接錯誤進行監測的計數器。
Distributed Routing Table: 分布式路由表(DRT)性能對象由監視本地 DRT 緩存的計數器以及測量發送和接收 DRT 協議消息的速率的計數器組成。
RAS: 用於跟蹤服務啟動后該服務的值的 VPN 計數器
XHCI CommonBuffer: 由用於測量 xHCI 控制器的 CommonBuffer 對象的各方面的計數器組成。
XHCI TransferRing: 由對 xHCI 控制器傳輸的各方面進行測量的計數器組成。
.NET CLR Security: CLR 安全性的統計信息。
Browser: Browser performance object 由衡量通知、枚舉和其他瀏覽器傳輸率的計數器組成。
WorkflowServiceHost 4.0.0.0: 工作流服務的 WorkflowServiceHost 性能計數器
TCPIP Performance Diagnostics (Per-CPU): 此計數器集按 CPU 測量各種 TCPIP 活動以診斷性能。
WFPv6: WFPv6 是應用於 Internet 協議版本 6 的流量和連接的 Windows 篩選平台計數器集。
Objects: Object performance object 包含在系統中監督邏輯對象的計數器,如: 處理、線程、多用戶終端執行程序和信號量。這個信息可以用於檢測計算機資源的不必要的消耗。每個對象需要內存以存儲有關對象的基本信息。
CCM Message Queue: The CCM Message Queue object consists of the message queues currently in use by the SMS Agent Host service
Power Meter: 此計數器集顯示電源計量和預算信息
Physical Network Interface Card Activity: Physical Network Interface Card Activity 計數器集測量物理網卡上的事件。
Pacer Flow: Pacer Flow 性能計數器集由來自數據包計划程序的流統計信息組成。
ServiceModelEndpoint 3.0.0.0: ServiceModelEndpoint 3.0.0.0 性能計數器
Processor: Processor performance object 包含衡量處理器活動方面的計數器。處理器是計算機進行算數和邏輯計算、在附屬件起始操作及運行處理線程的部分。一台計算機可以有多台處理器。處理器對象將每台處理器作為對象的實例。
.NET CLR Memory: CLR 垃圾回收的堆的計數器。
每個PerformanceCounterCategory下面有很多instance(實例),使用PowerShell獲取Processor
下的所有實例:
PS F:\Workspace> ([System.Diagnostics.PerformanceCounterCategory]::GetCategories() | Where-Object { $_.CategoryName -eq 'Processor' }).GetInstanceNames()
結果:
2
3
0
1
_Total
其中0、1、2、3
分別表示每個邏輯處理器實例,_Total
表示整個處理器實例。
每個實例中又有很多counter(性能計數器),使用PowerShell獲取_Total
實例下的所有counter的名字:
PS F:\Workspace> ([System.Diagnostics.PerformanceCounterCategory]::GetCategories() | Where-Object CategoryName -eq 'Processor').GetCounters('_Total') | ForEach-Object { $_.CounterHelp }
結果:
% Processor Time 指處理器用來執行非閑置線程時間的百分比。計算方法是,度量處理器用來執行空閑線程的時間,然后用 100% 減去該值。(每個處理器有一個空閑線程,該線程在沒有其他線程可以運行時消耗周期)。此計數器是處理器活動的主要指示器,顯示在采樣間隔期間所觀察
的繁忙時間平均百分比。應注意,對處理器是否空閑的計算是在系統時鍾的內部采樣間隔期間(10ms)執行的。考慮到現在的處理器速度非常快,因此,在處理器可能會用大量時間為系統時鍾采樣間隔之間的線程提供服務時,% Processor Time 會低估處理器利用率。當恰好進行采樣后即 向計時器發出信號時,更可能對應用程序做出不准確地度量,基於工作負荷的計時器應用程序是一個這樣的示例。
% User Time 指處理器處於用戶模式的時間百分比。用戶模式是為應用程序、環境分系統和整數分系統設計的有限處理模式。另一個模式為特權模式,它是為操作系統組件設計的並且允許直接訪問硬件和所有內存。操作系統將應用程序線程轉換成特權模式以訪問操作系統服務。這個計數值將平均忙時作為示例時間的一部分顯示。
% Privileged Time 是在特權模式下進程線程執行代碼所花時間的百分比。當調用 Windows 系統服務時,此服務經常在特權模式運行,以便獲取對系統專有數據的訪問。在用戶模式執行的線程無法訪問這些數據。 對系統的調用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或中斷。不像某些早期的操作系統,Windows 除了使用用戶和特權模式的傳統保護模式之外,還使用處理邊界作為分系統保護。某些由 Windows 為你的應用程序所做的操作除了出現在處理的特權時間內,還可能在其他子系統處理出現。
Interrupts/sec 是處理器接收和處理硬件中斷的平均速度,單位為每秒事例數。這不包括分開計數的延遲的進程調用(DPCs)。這個值說明生成中斷的設備(如系統時鍾、鼠標、磁盤驅動器、數據通訊線、網絡接口卡和其他外緣設備)的活動。這些設備通常在完成任務或需要注意時中斷處 理器。正常線程執行因此被暫停。系統時鍾通常每 10 毫秒中斷處理器一次,創建中斷活動的后台執行。這個計數值顯示用上兩個實例中觀察到的值之間的差除於實例間隔的持續時間所得的值。
% DPC Time 指在采樣間隔期間處理器用在延遲過程調用(DPC)接收和提供服務的時間百分比。DPC 是以低於標准中斷優先權運行的中斷。因為 DPC 是以特權模式執行的,所以 % DPC Time 是 % Privileged Time 的一部分。他們是分開計算的,並且不是中斷計數器的一部分。此計數器將平均繁忙時間顯示為采樣時間的百分比。
% Interrupt Time 是處理器在實例間隔期間接受和服務硬件中斷的時間。此值間接表示了生成間隔的設備活動, 如系統時鍾、鼠標、磁盤驅動程序、數據通訊線路、網絡界面卡和其他外圍設備。當這些設備完成一項任務或需要管理時,它們通常會中斷處理器。中斷期間,正常的線程執行會暫停。多數系統時鍾會每隔 10 毫秒中斷處理器,產生間隔活動的后台執行,在間隔期間,終止正常的線程執行。此計數器顯示此平均占用時間為實例時間的一部分。
DPCs Queued/sec 指將延遲過程調用(DPC)添加到處理器 DPC 隊列的平均速率,單位為每秒事件次數。DPC 是以低於標准中斷優先權運行的中斷。每個處理器均擁有各自的 DPC 列隊。此計數器計算將 DPC 添加到隊列的速率,而不是隊列中 DPC 的數量。此計數器顯示上兩個采樣中觀察 到的值的差除以采樣間隔時間所得的值。
DPC Rate 是將延緩進程調用 (DPC) 在每個處理器系統時鍾嘀嗒之間添加到本處理器的 DPC 列隊中的速率。DPC 是低於標准間隔運行優先級別的間隔。每個處理器擁有各自的 DPC 列隊。此計數器衡量將 DPC 添加到列隊的速度,而不是列隊中 DPC 的數量。這個計數器只顯示觀察到的最后一個值;它不是一個平均值。
% Idle Time 是處理器在采樣期間空閑的時間的百分比
% C1 Time 是處理器處於 C1 低能量空閑狀態下的時間百分比。% C1 Time 是處理器空閑總時間的一個子集。C1 低能量空閑狀態允許處理器保持其整個環境並快速返回運行狀態。不是所有的系統都支持 % C1 狀態。
% C2 Time 是處理器處於 C2 低能量空閑狀態下的時間百分比。% C2 Time 是處理器空閑總時間的一個子集。C2 低能量空閑狀態允許處理器保持系統緩存環境。C2 能量狀態比 C1 的能量更低而且退出延遲狀態更高。不是所有的系統都支持 C2 狀態。
% C3 Time 是處理器處於 C3 低能量空閑狀態下的時間百分比。% C3 Time 是處理器空閑總時間的一個子集。處於 C3 低能量空閑狀態時,處理器無法其緩存的協調。C3 能量狀態比 C3 的能量更低而且退出延遲狀態更高。不是所有的系統都支持 C3 狀態。
C1 Transitions/sec 是 CPU 進入 C1 低能量空閑狀態的速度。CPU 在足夠空閑時進入 C1 狀態,並在任何中斷下退出這個狀態。這個計數器顯示上兩個范例中觀察到的值的差異除以采樣間隔的時間。
C2 Transitions/sec 是 CPU 進入 C2 低能量空閑狀態的速度。CPU 在足夠空閑時進入 C2 狀態,並在任何中斷下退出這個狀態。這個計數器顯示上兩個范例中觀察到的值的差異除以采樣間隔的時間。
C3 Transitions/sec 是 CPU 進入 C3 低能量空閑狀態的速度。CPU 在足夠空閑時進入 C3 狀態,並在任何中斷下退出這個狀態。這個計數器顯示上兩個范例中觀察到的值的差異除以采樣間隔的時間。
其中% Processor Time
就是整體CPU的利用率了,同理可得內存的counter。
在C#中使用PerformanceCounter獲取CPU和內存利用率
先使用上面提到的構造函數創建性能計數器對象,然后調用public float NextValue ();
方法獲取該計數器計算得到的性能值:
using System;
using System.Diagnostics;
namespace Usage
{
class Program
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "Only run in Windows")]
static void Main(string[] args)
{
var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
//var ramCounter = new PerformanceCounter("Memory", "Available MBytes");
var ramCounter = new PerformanceCounter("Memory", "% Committed Bytes In Use");
while (true)
{
Console.WriteLine($"CPU: {cpuCounter.NextValue():F2}%");
Console.WriteLine($"Mem: {ramCounter.NextValue():F2}%");
System.Threading.Thread.Sleep(1000);
}
}
}
}
結果:
CPU: 16.70%
Mem: 80.74%
CPU: 6.04%
Mem: 80.72%
CPU: 5.67%
Mem: 80.71%
CPU: 4.84%
Mem: 80.70%
...