目前,我通过Python的psutil
模块监视几个进程,并以百分比检索CPU使用率,这是基于execution_time/total_time
的。这样做的问题是动态电压和频率缩放(DVFS,或ACPI的P-state,或cpufreq等)。当前CPU频率越低,进程需要执行的时间越长,CPU使用率就越高。与此相反,我需要相对于CPU最大性能的固定CPU使用率。在
为了避免在“当前频率”永久变化的情况下进行多次重校准,一种方法是直接使用进程使用的CPU周期。基本上,这可以通过C中的perf_event.h
或Linux命令行上的perf
来完成。不幸的是,我找不到提供类似功能的Python模块(基于上述功能)。在
感谢21点的评论
我把它作为一个共享库来实现。库cpucycles.c的源代码是(主要基于^{}'s man page 的示例):
此代码通过以下两个命令编译到共享库中:
^{pr2}$最后,Python可以在cpucycles.py:
最后,我通过
perf
命令行工具读取CPU周期并打包成Python(简化代码):不幸的是,由于不精确的
sleep
命令,这是不精确的,而且由于为每个示例生成一个新的perf
进程,所以这并不精确。在相关问题 更多 >
编程相关推荐