PerformanceCounter详解,使用方法

首先,PerformanceCounter 分为各个category, 每个category 对应不同类型的资源,一般有"Processor", "IPv6",什么的。。。下面有一个所有的类型的列表: 

view plain

Thread 

RAS Total 

TCPv6 

TCPv4 

Paging File 

SQLServer:Latches 

IPsec AuthIP IPv4 

MSDTC Bridge 4.0.0.0 

IPsec AuthIP IPv6 

.NET CLR Data 

WF (System.Workflow) 4.0.0.0 

Synchronization 

Processor 

Security Per-Process Statistics 

MSDTC Bridge 3.0.0.0 

Generic IKEv1, AuthIP, and IKEv2 

Database ==> TableClasses 

Event Tracing for Windows Session 

ASP.NET v4.0.30319 

.NET CLR Networking 

Objects 

Terminal Services 

BITS Net Utilization 

SQLServer:User Settable 

.NET CLR Exceptions 

IPsec IKEv2 IPv6 

Process 

IPsec IKEv2 IPv4 

SQLServer:Broker Activation 

WFPv6 

SQLServer:Database Mirroring 

Search Gatherer 

Teredo Relay 

IPv4 

SQLServer:Cursor Manager Total 

IPv6 

Job Object Details 

WFPv4 

IPHTTPS Global 

ICMP 

Offline Files 

SQLServer:Cursor Manager by Type 

SQLAgent:JobSteps 

PhysicalDisk 

Search Indexer 

Windows Workflow Foundation 

Teredo Server 

ServiceModelService 3.0.0.0 

Processor Information 

SQLServer:Replication Logreader 

SQLServer:Transactions 

ASP.NET Apps v4.0.30319 

SQLServer:Broker TO Statistics 

SQLServer:Deprecated Features 

Per Processor Network Interface Card Activity 

Database 

Browser 

.NET CLR Remoting 

Pacer Pipe 

Event Tracing for Windows 

.NET CLR LocksAndThreads 

Job Object 

Client Side Caching 

.NET Data Provider for SqlServer 

ASP.NET Applications 

Terminal Services Session 

SQLServer:Broker/DBM Transport 

Network Interface 

.NET Memory Cache 4.0 

SQLServer:General Statistics 

SQLServer:Resource Pool Stats 

SQLServer:Replication Merge 

Security System-Wide Statistics 

SQLServer:Backup Device 

UDPv6 

.NET CLR Security 

Outlook 

.NET CLR Jit 

SQLServer:Workload Group Stats 

WFP 

ASP.NET State Service 

SMSvcHost 4.0.0.0 

SQLServer:Databases 

SQLServer:Locks 

Server Work Queues 

ICMPv6 

NBT Connection 

.NET CLR Loading 

Server 

SQLAgent:Jobs 

RAS Port 

Per Processor Network Activity Cycles 

SMSvcHost 3.0.0.0 

ServiceModelEndpoint 3.0.0.0 

.NET CLR Networking 4.0.0.0 

ASP.NET 

USB 

SQLServer:Memory Manager 

Cache 

SQLServer:Replication Snapshot 

System 

Redirector 

SQLServer:Wait Statistics 

SQLAgent:Statistics 

LogicalDisk 

.NET Data Provider for Oracle 

.NET CLR Interop 

分布式事务处理协调器 

WMI Objects 

.NET CLR Memory 

SQLServer:Access Methods 

SQLServer:Buffer Partition 

SQLServer:Buffer Manager 

Database ==> Instances 

ReadyBoost Cache 

SQLServer:Plan Cache 

SQLServer:Replication Agents 

SQLServer:Exec Statistics 

Teredo Client 

Telephony 

IPsec IKEv1 IPv6 

Memory 

SQLServer:SQL Errors 

SQLServer:Replication Dist. 

ServiceModelOperation 3.0.0.0 

SQLServer:Buffer Node 

IPsec IKEv1 IPv4 

Search Gatherer Projects 

IPsec Driver 

SQLServer:Broker Statistics 

SQLServer:SQL Statistics 

SQLServer:CLR 

SQLAgent:Alerts 

UDPv4 

SQLServer:Catalog Metadata 

 

 

然后,每个类型下面对应多个实例,例如通过如下代码获得Processor的实例:


view plain

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); 

                        //} 

                    } 

                } 

            } 

        } 

    } 

} 

输出结果为:

 

view plain

----------------------------------- 

Processor 

----------------------------------- 

**** Instance Name ********** 

_Total 

**** Instance Name ********** 

**** Instance Name ********** 

请按任意键继续. . . 

在每个实例中,又对应多个计数器,这样就需要选择你需要的计数器了。

 

获得的Processor类别的_Total 实例,看看这个实例都包含什么计数器,上面代码注释的部门包括计数器的输出,结果为:

 

view plain

----------------------------------- 

Processor 

----------------------------------- 

**** Instance Name ********** 

_Total 

************************************************** 

* counter name * 

% Processor Time 

% User Time 

% Privileged Time 

Interrupts/sec 

% DPC Time 

% Interrupt Time 

DPCs Queued/sec 

DPC Rate 

% Idle Time 

% C1 Time 

% C2 Time 

% C3 Time 

C1 Transitions/sec 

C2 Transitions/sec 

C3 Transitions/sec 

**** Instance Name ********** 

************************************************** 

* counter name * 

% Processor Time 

% User Time 

% Privileged Time 

Interrupts/sec 

% DPC Time 

% Interrupt Time 

DPCs Queued/sec 

DPC Rate 

% Idle Time 

% C1 Time 

% C2 Time 

% C3 Time 

C1 Transitions/sec 

C2 Transitions/sec 

C3 Transitions/sec 

**** Instance Name ********** 

************************************************** 

* counter name * 

% Processor Time 

% User Time 

% Privileged Time 

Interrupts/sec 

% DPC Time 

% Interrupt Time 

DPCs Queued/sec 

DPC Rate 

% Idle Time 

% C1 Time 

% C2 Time 

% C3 Time 

C1 Transitions/sec 

C2 Transitions/sec 

C3 Transitions/sec 

请按任意键继续. . . 

 

 

 

这样,在使用PerformanceCounter  的时候需要指定类别,实例名,计数器名。

 

view plain

PerformanceCounter pc1 = new PerformanceCounter("Processor","% Processor Time","_Total"); 

 

然后通过pc1.NextValue() 获得相关计数器的值就可以了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值