我正在开发一个将运行很长时间的后台程序,我有一个外部日志记录程序 ( SmartInspect ),我想定期为它提供一些值,以便在调试时实时监控它。
我知道我可以简单地启动多个程序,比如任务管理器或 IARSN TaskInfo,但我想为此将所有内容都保留在我自己的程序中,因为我还想添加一些简单的规则,比如如果程序使用超过 X% 的 CPU,在日志中标记这一点。
我有一个后台线程定期向 SmartInspect 提供一些统计数据,例如内存消耗、工作集等。
这个线程是否有可能得到一个相当准确的测量它消耗了多少计算机的 CPU 资源?主程序是一个单线程应用程序(除了记录统计信息的看门狗线程),所以如果一种技术限于单个线程使用多少,那也很好。
我发现了一些与用于 Linux 和 C 的名为 rusage 的东西相关的条目。是否有类似的东西可以用于此?
编辑: 好的,我尝试了性能计数器方式,但每次调用它都会添加相当多的 GC 数据,因此内存使用和垃圾收集的图表猛增。我想我现在就把这部分放在一边。
最佳答案
您还可以使用 System.Diagnostics.Process.TotalProcessorTime和 System.Diagnostics.ProcessThread.TotalProcessorTime计算处理器使用情况的属性 article描述。
关于c# - C# 程序能否以某种方式测量其自身的 CPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/275957/