如果我只知道进程的PID,如何获取该进程的CPU使用率? MACOS X
我查看了MACOSX的top实用程序源代码,并在libtop.c中找到了几个重要的函数。
/* Iterate through all processes and update their statistics. */
libtop_p_proc_table_read(boolean_t reg)
libtop_p_task_update()
/* Get CPU usage statistics. */
libtop_pinfo_update_cpu_usage()
问题在于我不明白他们如何从这么多MACOS专用的“mach kernel”系统调用中获取%CPU使用率。有人有解决方案吗?
在源代码中,他们获取了系统时间、用户时间和总时间。我想知道总时间是从进程启动开始计算的还是等于1秒钟。例如,我的结果是:对于Opera浏览器: pid:1214 user:653.517582秒 system:193.597306秒 total:847.114888秒
从top实用程序中获得的正确信息:
PID COMMAND %CPU TIME 1214- Opera 8.0 14:04.52
我不明白如何将我的结果转换为8.0%。这里的总时间是用户时间和系统时间的总和。总时间是正确的:847秒约为14分04秒。要获取CPU使用率百分比,我需要所有进程的空闲时间之类的东西。
我已经花了整整一天的时间,但没有任何进展。