提问人:fadedbee 提问时间:11/13/2023 更新时间:11/15/2023 访问量:66
Linux 进程如何报告自己的 CPU 使用率
How can a Linux process report its own CPU usage
问:
我有一个 C 程序,我想报告:
- 它经过的挂钟时间(它运行了多长时间)
- 使用的用户空间 CPU 时间(如果多线程和繁忙,则可能超过挂钟时间)
- 内核/iowait/etc 使用时间
我可以使用“time”命令从外部执行此操作,但我需要每个子进程报告自己的使用情况。“time”聚合了父进程和子进程,但我需要每个子进程一行。
答:
0赞
fadedbee
11/13/2023
#1
看起来POSIX可能是答案。明天测试后,我会确认这是否是正确的答案。times()
进一步阅读后,看起来最好:getrusage()
struct rusage rusage = {0};
int ret = getrusage(RUSAGE_SELF, &rusage);
if (ret) {
perror("worker_exit()");
exit(errno);
}
double ru_utime = rusage.ru_utime.tv_sec + rusage.ru_utime.tv_usec / 1000000.0;
double ru_stime = rusage.ru_stime.tv_sec + rusage.ru_stime.tv_usec / 1000000.0;
评论
1赞
Marco Bonelli
11/13/2023
查看和wait4
clock_gettime
0赞
fadedbee
11/14/2023
@MarcoBonelli谢谢,我按照页面转到了.wait4()
getrusage()
下一个:注册新的 XFRM 类型
评论