2 qinjun5230 qinjun5230 于 2015.07.22 07:49 提问

如何高效获取计算机所有性能数据 5C
  最近在做一个项目需要收集计算机的性能数据,例如  cpu,iops,内存,网络等等,我是用的C#。

  我现在采用的方法是PerformanceCounter这个类去创建计数器实例,然后通过NextValue()获取相应的值,获取整体的性能数据还好说。
  在收集进程的性能数据遇到了一些问题,因为进程的性能计数器非常多,导致获取一次进程性能数据的cpu占用高达20%,获取一次的时间需要五六秒的时间。
  我看任务管理器里面实时获取所有进程的性能数据所占用的cpu并不高,通过计算机管理->性能里面添加计数器进行监视所占用的cpu也不高,有谁知道这是如何实现的吗?或者有谁做过相应的开发和研究,能够提供一些思路。

2个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.22 08:03
oyljerry
oyljerry 回复秦随境迁: 你看看这个例子,也是performance counter的方式 http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters
2 年多之前 回复
qinjun5230
qinjun5230 这个文章我也看过,但是这个方法只能获取到进程的cpu利用率,占用内存数据,我还需要其他更多的信息例如进程的磁盘读取率,iops,网络等信息。
2 年多之前 回复
91program
91program   Ds   Rxr 2015.07.22 09:36

因为 任务管理器 实现的方式,可能不是调用你所说的 API,而是系统本身一些信息的汇总。
想要效率高,最好是能从驱动一级直接获取。使用高级语言的 API,可以分析一下效率低是因为什么代码引起的。如果是系统的 API,那就没有可改进的。

Csdn user default icon
上传中...
上传图片
插入图片