PerformanceCounter 详解,使用方法
来源:互联网 发布:c语言编程软件 编辑:程序博客网 时间:2024/05/19 16:22
这两天写代码控制CPU的占用率,显示为一条直线或者曲线,显示为一条直线的时候用到了PerformanceCounter 这个类。
由于对这个类还是很感兴趣的,在网上找了一些资料也不是很清楚。就自己研究了一下。
首先,PerformanceCounter 分为各个category, 每个category 对应不同类型的资源,一般有"Processor", "IPv6",什么的。。。下面有一个所有的类型的列表:
ThreadRAS TotalTCPv6TCPv4Paging FileSQLServer:LatchesIPsec AuthIP IPv4MSDTC Bridge 4.0.0.0IPsec AuthIP IPv6.NET CLR DataWF (System.Workflow) 4.0.0.0SynchronizationProcessorSecurity Per-Process StatisticsMSDTC Bridge 3.0.0.0Generic IKEv1, AuthIP, and IKEv2Database ==> TableClassesEvent Tracing for Windows SessionASP.NET v4.0.30319.NET CLR NetworkingObjectsTerminal ServicesBITS Net UtilizationSQLServer:User Settable.NET CLR ExceptionsIPsec IKEv2 IPv6ProcessIPsec IKEv2 IPv4SQLServer:Broker ActivationWFPv6SQLServer:Database MirroringSearch GathererTeredo RelayIPv4SQLServer:Cursor Manager TotalIPv6Job Object DetailsWFPv4IPHTTPS GlobalICMPOffline FilesSQLServer:Cursor Manager by TypeSQLAgent:JobStepsPhysicalDiskSearch IndexerWindows Workflow FoundationTeredo ServerServiceModelService 3.0.0.0Processor InformationSQLServer:Replication LogreaderSQLServer:TransactionsASP.NET Apps v4.0.30319SQLServer:Broker TO StatisticsSQLServer:Deprecated FeaturesPer Processor Network Interface Card ActivityDatabaseBrowser.NET CLR RemotingPacer PipeEvent Tracing for Windows.NET CLR LocksAndThreadsJob ObjectClient Side Caching.NET Data Provider for SqlServerASP.NET ApplicationsTerminal Services SessionSQLServer:Broker/DBM TransportNetwork Interface.NET Memory Cache 4.0SQLServer:General StatisticsSQLServer:Resource Pool StatsSQLServer:Replication MergeSecurity System-Wide StatisticsSQLServer:Backup DeviceUDPv6.NET CLR SecurityOutlook.NET CLR JitSQLServer:Workload Group StatsWFPASP.NET State ServiceSMSvcHost 4.0.0.0SQLServer:DatabasesSQLServer:LocksServer Work QueuesICMPv6NBT Connection.NET CLR LoadingServerSQLAgent:JobsRAS PortPer Processor Network Activity CyclesSMSvcHost 3.0.0.0ServiceModelEndpoint 3.0.0.0.NET CLR Networking 4.0.0.0ASP.NETUSBSQLServer:Memory ManagerCacheSQLServer:Replication SnapshotSystemRedirectorSQLServer:Wait StatisticsSQLAgent:StatisticsLogicalDisk.NET Data Provider for Oracle.NET CLR Interop分布式事务处理协调器WMI Objects.NET CLR MemorySQLServer:Access MethodsSQLServer:Buffer PartitionSQLServer:Buffer ManagerDatabase ==> InstancesReadyBoost CacheSQLServer:Plan CacheSQLServer:Replication AgentsSQLServer:Exec StatisticsTeredo ClientTelephonyIPsec IKEv1 IPv6MemorySQLServer:SQL ErrorsSQLServer:Replication Dist.ServiceModelOperation 3.0.0.0SQLServer:Buffer NodeIPsec IKEv1 IPv4Search Gatherer ProjectsIPsec DriverSQLServer:Broker StatisticsSQLServer:SQL StatisticsSQLServer:CLRSQLAgent:AlertsUDPv4SQLServer:Catalog Metadata
然后,每个类型下面对应多个实例,例如通过如下代码获得Processor的实例:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace PerformanceCounterTest{ class Program { static void Main(string[] args) { PerformanceCounterCategory[] pcc = PerformanceCounterCategory.GetCategories(); for (int i = 0; i < pcc.Length; i++) { if (pcc[i].CategoryName=="Processor") { Console.WriteLine("-----------------------------------"); Console.WriteLine(pcc[i].CategoryName); Console.WriteLine("-----------------------------------"); //Console.WriteLine(pcc[i].MachineName); string[] instanceNames = pcc[i].GetInstanceNames(); for (int j = 0; j < instanceNames.Length; j++) { Console.WriteLine("**** Instance Name **********"); Console.WriteLine(instanceNames[j]); //PerformanceCounter[] counters = pcc[i].GetCounters(instanceNames[j]); //Console.WriteLine("**************************************************"); //Console.WriteLine("* counter name * "); //for (int k = 0; k < counters.Length; k++) //{ // Console.WriteLine(counters[k].CounterName); //} } } } } }}
输出结果为:
-----------------------------------Processor-----------------------------------**** Instance Name **********_Total**** Instance Name **********0**** Instance Name **********1请按任意键继续. . .
在每个实例中,又对应多个计数器,这样就需要选择你需要的计数器了。
获得的Processor类别的_Total 实例,看看这个实例都包含什么计数器,上面代码注释的部门包括计数器的输出,结果为:
-----------------------------------Processor-----------------------------------**** Instance Name **********_Total*************************************************** counter name *% Processor Time% User Time% Privileged TimeInterrupts/sec% DPC Time% Interrupt TimeDPCs Queued/secDPC Rate% Idle Time% C1 Time% C2 Time% C3 TimeC1 Transitions/secC2 Transitions/secC3 Transitions/sec**** Instance Name **********0*************************************************** counter name *% Processor Time% User Time% Privileged TimeInterrupts/sec% DPC Time% Interrupt TimeDPCs Queued/secDPC Rate% Idle Time% C1 Time% C2 Time% C3 TimeC1 Transitions/secC2 Transitions/secC3 Transitions/sec**** Instance Name **********1*************************************************** counter name *% Processor Time% User Time% Privileged TimeInterrupts/sec% DPC Time% Interrupt TimeDPCs Queued/secDPC Rate% Idle Time% C1 Time% C2 Time% C3 TimeC1 Transitions/secC2 Transitions/secC3 Transitions/sec请按任意键继续. . .
这样,在使用 PerformanceCounter 的时候需要指定类别,实例名,计数器名。
PerformanceCounter pc1 = new PerformanceCounter("Processor","% Processor Time","_Total");
然后通过pc1.NextValue() 获得相关计数器的值就可以了。
- PerformanceCounter 详解,使用方法
- PerformanceCounter 详解,使用方法
- PerformanceCounter详解,使用方法
- PerformanceCounter 详解,使用方法
- PerformanceCounter
- PerformanceCounter
- PerformanceCounter简述及用法
- performanceCounter文件占用问题解决
- PerformanceCounter简述及用法
- C#中的PerformanceCounter类
- PerformanceCounter 基本介绍
- PerformanceCounter 性能计数器的使用
- meta标签使用方法详解
- wget使用方法命令详解
- repeater的使用方法详解
- FCKeditor使用方法技术详解
- CuteEditor 6.0 使用方法详解
- armlink使用方法详解
- android Theme使用总结
- Discuz X2 文件目录功能详解
- 用Blend 3/SketchFlow画Silverlight 3原型图
- 回调函数的笔记
- 频率域图像增强技术
- PerformanceCounter 详解,使用方法
- 用例图总结
- 两种方法接口aspx页面的编写(页面展示xml文档)
- c++ cout 格式化输出示例
- VS2010\2008中不能新建项目问题的解决
- RUIM卡
- zoj 1204
- Android 2.3 如何去除camera的gps定位
- Oracle Record is Locked by anther user 表被锁