在Windows中有一个名为GetSystemTimes()的函数,它返回系统空闲时间,执行内核代码所花费的时间以及执行用户模式代码所花费的时间。
linux中是否有等效的功能?
答案 0 :(得分:3)
原始答案提供了获取当前正在运行的进程的用户和系统时间的解决方案。但是,您需要有关整个系统的信息。据我所知,获取此信息的唯一方法是解析/proc/stat
的内容。特别是第一行,标记为cpu
:
cpu 85806677 11713309 6660413 3490353007 6236822 300919 807875 0
如果您正在运行SMP系统,则后跟每cpu
个摘要。该行本身具有以下信息(按顺序):
时间以USER_HZ
为单位报告。
此后可能还有其他列,具体取决于内核的版本。
原始答案:
您想要times(2)
:
中的定义相同
times()
将当前流程时间存储在struct tms
指向的buf
中。struct tms
与<sys/times.h>
:
struct tms {
clock_t tms_utime; /* user time */
clock_t tms_stime; /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};
空闲时间可以从追踪经过的挂钟时间推断出来,并减去通话中报告的非空闲时间。