我需要提取给定进程的磁盘统计信息,可以获取列出的进程,并使用WMI和PerformanceCounters获取诸如列出的CPU和内存之类的总体信息。但是信息都是捆绑在一起的,是否有任何方法可以在每个过程中提取这些数据。有点像Windows资源监视器中的?

提前致谢

最佳答案

如果需要实时数据,则应实现ETW侦听器。

ETW是在Windows中跟踪性能信息的方法。从Windows 2000开始支持它。

Windows中的每个组件都会报告ETW事件(如果有侦听器在等待数据)。

例如,磁盘信息,内存(消耗量,页面错误等),争用,CPU使用率(每个内核,每个线程,每个应用程序,甚至单个IO请求到磁盘或网络)。
驱动程序使用它,.NET CLR使用它(获取JIT或GC统计信息),示例无穷无尽。

我建议您从下载XPerf \ Xperf视图或Windows Performance Recorder + Analyzer,PerfView开始,尝试查看所需的信息,然后开始创建托管的ETW侦听器。

您可以从blog post开始,或搜索Vans Morison(负责MS中的ETW托管提供者和消费者)的ETW帖子。

希望这可以帮助,
奥菲尔。

07-28 02:42