是否有库或工具可以计算Linux下C/ c++中不同进程的cpu使用率和其他一些参数?

Does any lib or tools can calculate the cpu usage and some other parameters for different process in C/C++ under Linux?

本文关键字:cpu 进程 使用率 参数 其他 c++ 工具 计算 Linux 是否      更新时间:2023-10-16

现在我的项目是基于多进程的,我尝试计算每个进程的一些参数,如cpu使用率,io使用率。我使用c++,我的项目在Linux下运行。有任何库或开源项目可以解决这个问题吗?

内核通过/proc文件系统公开这些参数,更多信息请参见proc(5)。

/proc/中的文件通常是文本文件,应该顺序读取(它们像管道一样动态生成;通常情况下,stat(2)会给它们一个毫无意义的0大小。读取这些伪文件不涉及任何磁盘I/O,所以非常快。

试试下面的命令:

 cat /proc/self/maps
 cat /proc/$$/status

例如,要获取pid为pid的进程的程序大小progsize(实际进程大小),您可以这样做:

 long progsize= -1;
 pid_t pid = something();
 char path[32];
 snprintf (path, sizeof(path), "/proc/%d/statm", (int) pid);
 FILE *fil = fopen(path, "r");
 if (fil) {
   fscanf(fil, "%ld", &progsize);
   fclose(fil);
 } else { perror(path); exit(EXIT_FAILURE); };

您可能需要解析/proc/1234/stat以获取pid 1234的定时(和常驻集大小,即使用的RAM等)信息。

对于已完成的子进程,也使用wait4(2),它填充关于子进程的struct rusage,另见getrusage(2)