{ // PerformanceCounter(CategoryName,CounterName,InstanceName) performanceNetCounterCategory = newPerformanceCounterCategory("Network Interface"); interfaces = performanceNetCounterCategory.GetInstanceNames(); int length = interfaces.Length; if (length > 0) { trafficSentCounters = newPerformanceCounter[length]; trafficReceivedCounters = newPerformanceCounter[length]; } for (int i = 0; i < length; i++) {
//初始化PerformanceCounter类的新的只读实例。
//第一个参数:“ categoryName”-与该性能计数器关联的性能计数器类别(性能对象)的名称。
//第二个参数:“ CounterName”-性能计数器的名称。
//第三个参数:“ instanceName”-性能计数器类别实例的名称,如果类别包含单个实例,则为空字符串(“”)。
trafficReceivedCounters[i] = new PerformanceCounter("Network Interface", "Bytes Sent/sec", interfaces[i]); trafficSentCounters[i] =new PerformanceCounter("Network Interface", "Bytes Sent/sec", interfaces[i]); }
//网络接口所有名称的列表 for (int i = 0; i < length; i++) { Console.WriteLine("Name netInterface: {0}", performanceNetCounterCategory.GetInstanceNames()[i]); } } public void getProcessorCpuTime() { float tmp = cpuProcessorTime.NextValue(); CPUProcessorTime = (float)(Math.Round((double)tmp, 1)); // Environment.ProcessorCount:返回内核总数 } public void getCpuPrivilegedTime() { float tmp = cpuPrivilegedTime.NextValue(); CPUPrivilegedTime = (float)(Math.Round((double)tmp, 1)); } public void getCpuinterruptTime() { float tmp = cpuInterruptTime.NextValue(); CPUInterruptTime = (float)(Math.Round((double)tmp, 1)); } public void getcpuDPCTime() { float tmp = cpuDPCTime.NextValue(); CPUDPCTime = (float)(Math.Round((double)tmp, 1)); } public void getPageFile() { PageFile = pageFile.NextValue(); } public void getProcessorQueueLengh() { ProcessorQueueLengh = processorQueueLengh.NextValue(); } public void getMemAvailable() { MEMAvailable = memAvailable.NextValue(); } public void getMemCommited() { MEMCommited = memCommited.NextValue() / (1024 * 1024); } public void getMemCommitLimit() { MEMCommitLimit = memCommitLimit.NextValue() / (1024 * 1024); } public void getMemCommitedPerc() { float tmp = memCommitedPerc.NextValue();
//返回内存提交限制的值
MEMCommitedPerc = (float)(Math.Round((double)tmp, 1)); } public void getMemPoolPaged() { float tmp = memPollPaged.NextValue() / (1024 * 1024); MEMPoolPaged = (float)(Math.Round((double)tmp, 1)); } public void getMemPoolNonPaged() { float tmp = memPollNonPaged.NextValue() / (1024 * 1024); MEMPoolNonPaged = (float)(Math.Round((double)tmp, 1)); } public void getMemCachedBytes() {
//返回以MB为单位的已缓存内存的值
MEMCached = memCached.NextValue() / (1024 * 1024); } public void getDiskQueueLengh() { DISCQueueLengh = diskQueueLengh.NextValue(); } public void getDiskRead() { float tmp=diskRead.NextValue()/1024; DISKRead = (float)(Math.Round((double)tmp,1)); } public void getDiskWrite() { float tmp=diskWrite.NextValue()/1024; DISKWrite = (float)(Math.Round((double)tmp,1)); // round 1 digit decimal } public void getDiskAverageTimeRead() { float tmp = diskAverageTimeRead.NextValue() * 1000; DISKAverageTimeRead = (float)(Math.Round((double)tmp, 1)); // round 1 digit decimal } public void getDiskAverageTimeWrite() { float tmp = diskAverageTimeWrite.NextValue()*1000; DISKAverageTimeWrite = (float)(Math.Round((double)tmp, 1)); // round 1 digit decimal } public void getDiskTime() { float tmp = diskTime.NextValue(); DISKTime = (float)(Math.Round((double)tmp, 1)); } public void getHandleCountCounter() { HANDLECountCounter = handleCountCounter.NextValue(); } public void getThreadCount() { THREADCount = threadCount.NextValue(); } public void getContentSwitches() { CONTENTSwitches = (int)Math.Ceiling(contentSwitches.NextValue()); } public void getsystemCalls() { SYSTEMCalls = (int)Math.Ceiling(systemCalls.NextValue()); } public void getCurretTrafficSent() { int length = interfaces.Length; float sendSum = 0.0F; for (int i = 0; i < length; i++) { sendSum += trafficSentCounters[i].NextValue(); } float tmp = 8 * (sendSum / 1024); NetTrafficSend = (float)(Math.Round((double)tmp, 1)); } public void getCurretTrafficReceived() { int length = interfaces.Length; float receiveSum = 0.0F; for (int i = 0; i < length; i++) { receiveSum += trafficReceivedCounters[i].NextValue(); } float tmp = 8 * (receiveSum / 1024); NetTrafficReceive = (float)(Math.Round((double)tmp, 1)); } public void getSampleTime() { SamplingTime =DateTime.Now; } }
Windows性能计数器应用(PART1-4)
Windows性能计数器应用(PART6)