获取系统的CPU使用率、内存使用率
2013-07-29 15:28
543 查看
获取系统的性能参数,可以通过Process、PerformanceCounter或者WMI完成。
下面看看PerformanceCounter类是怎么获取的。
首先看看GetCategoryNameList()函数,这个函数是自定义的,主要用来获取本机上的计数器列表
再看另外一个函数,这个主要是获取某一个计数器下的性能计数器的名称
有了上面的两个函数,我们就可以知道本机的计数器已对应的性能名称。
![](http://img.blog.csdn.net/20130729151652609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvampwODM3NjYxMTAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上图就是本机的计数器名称,当然是很多的了……
![](http://img.blog.csdn.net/20130729151658093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvampwODM3NjYxMTAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上图是对应的Memory的性能计数器的名称,我们怎么获取某一个性能参数呢?
上述的函数中,我们就可以如下的形式调用即可:
我们就能获取处理器的CPU使用率。(这里就不贴图了)
接下来我们看看怎么通过获取内存的使用情况,这个主要是通过WMI实现的。
上述代码就帮助我们获取到物理内存和可用内存。获取到的结果和我们使用任务管理看到的内存性能参数是一致的。
下面看看PerformanceCounter类是怎么获取的。
首先看看GetCategoryNameList()函数,这个函数是自定义的,主要用来获取本机上的计数器列表
//获取性能计数器类别列表 public static void GetCategoryNameList() { PerformanceCounterCategory[] myCat2; myCat2 = PerformanceCounterCategory.GetCategories(); for (int i = 0; i < myCat2.Length;i++ ) { Console.WriteLine(myCat2[i].CategoryName.ToString()); } }
再看另外一个函数,这个主要是获取某一个计数器下的性能计数器的名称
//获取性能计数器类别下的实例的名称实例下性能计数器的名称 public static void GetInstanceNameListAndCounterNameList(string CategoryName) { string[] instanceName; ArrayList counters = new ArrayList(); PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName); try { instanceName = mycat.GetInstanceNames(); if (instanceName.Length==0) { counters.AddRange(mycat.GetCounters()); } else { for (int i = 0; i < instanceName.Length;i++ ) { counters.AddRange(mycat.GetCounters(instanceName[i])); } } for (int i = 0; i < instanceName.Length;i++ ) { Console.WriteLine(instanceName[i]); } Console.WriteLine("*************************"); foreach (PerformanceCounter counter in counters) { Console.WriteLine(counter.CounterName); } } catch (System.Exception ex) { Console.WriteLine("Unable to list the counter for this category"); } }
有了上面的两个函数,我们就可以知道本机的计数器已对应的性能名称。
上图就是本机的计数器名称,当然是很多的了……
上图是对应的Memory的性能计数器的名称,我们怎么获取某一个性能参数呢?
//根据categoryName ,counterName,instanceName 获得性能情况显示 private static void PerformanceCounterFun(string CategoryName, string InstanceName, string CounterName) { PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName); while (true) { Thread.Sleep(1000); float cpuload = pc.NextValue(); Console.WriteLine("cpu load------->" + cpuload + "%"); } }
上述的函数中,我们就可以如下的形式调用即可:
PerformanceCounterFun("Processor", "_Total", "% Processor Time");
我们就能获取处理器的CPU使用率。(这里就不贴图了)
接下来我们看看怎么通过获取内存的使用情况,这个主要是通过WMI实现的。
ManagementClass mc = new ManagementClass("Win32_OperatingSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (mo["TotalVisibleMemorySize"] != null) { long xx = long.Parse(mo["TotalVisibleMemorySize"].ToString()); Console.WriteLine(xx); } if (mo["FreePhysicalMemory"]!=null) { long availablebytes = long.Parse(mo["FreePhysicalMemory"].ToString()); Console.WriteLine(availablebytes); } }
上述代码就帮助我们获取到物理内存和可用内存。获取到的结果和我们使用任务管理看到的内存性能参数是一致的。
相关文章推荐
- 编程获取系统当前cpu使用率/空闲率 、内存使用率、剩余可用内存 Nvidia GPU的利用率等
- 编程获取系统当前cpu使用率/空闲率 、内存使用率、剩余可用内存等
- 【转】编程获取系统当前cpu使用率/空闲率 、内存使用率、剩余可用内存等
- 编程获取系统当前cpu使用率/空闲率 、内存使用率、剩余可用内存等
- 编程获取系统当前cpu使用率/空闲率 、内存使用率、剩余可用内存 Nvidia GPU的利用率等
- Linux下,java获取CPU使用率、内存使用率
- Android获取系统的内存使用率
- Python获取CPU使用率、内存使用率、网络使用状态
- C++ 获取CPU使用率、内存使用率、磁盘空间等
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等-转载
- linux下实现CPU使用率和内存使用率获取方法
- Python获取CPU使用率、内存使用率、网络使用状态
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等
- linux下实现CPU使用率和内存使用率获取方法
- linux下获取内存使用率及cpu使用率
- 获取Windows操作系统的CPU使用率以及内存使用率
- java获取cpu使用率/内存使用率/硬盘的使用率
- Python获取CPU使用率、内存使用率、网络使用状态