我正在开发一个将运行很长时间的后台程序,我有一个外部日志记录程序(SmartInspect),我希望定期提供一些值,以便在调试时实时监控它.
我知道我可以简单地启动多个程序,比如任务管理器或IARSN TaskInfo,但是我想在我自己的程序中保留所有内容,因为我还想添加一些简单的规则,比如程序使用的多于X%CPU,在日志中标记它.
我有一个后台线程,定期向SmartInspect提供一些统计信息,如内存消耗,工作集等.
这个线程是否有可能合理准确地衡量它消耗的计算机CPU资源量?主程序是单线程应用程序(除了记录统计信息的监视程序线程),因此如果一种技术仅限于单个线程使用多少,那么这也是好的.
我找到了一些与Linux和C的rusage相关的条目.我可以使用类似的东西吗?
编辑:好的,我尝试了性能计数器方式,但每次调用时都添加了大量的GC数据,因此内存使用和垃圾收集的图表飙升.我想我现在就把这部分留下来.
您也可以使用System.Diagnostics.Process.TotalProcessorTime和System.Diagnostics.ProcessThread.TotalProcessorTime属性,用于计算您的处理器使用情况,如本文所述.
看看System.Diagnostics.PerformanceCounter
.如果你运行起来perfmon.exe
,你会看到可用的性能计数器范围(将'性能对象'设置为'进程'),其中一个是'%Processor Time'.