C#使用PerformanceCounter获取CPU和内存利用率

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%
...
posted @ 2021-09-11 15:17  TruthHell  阅读(6582)  评论(0编辑  收藏  举报