Windows性能计数器应用(PART1)
Windows性能计数器应用(PART2)
Windows性能计数器应用(PART3)
Windows性能计数器应用(PART4)
{
// 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)
Windows性能计数器应用(PART2)
Windows性能计数器应用(PART3)
Windows性能计数器应用(PART4)
Windows性能计数器应用(PART6)