现在我的项目是基于多进程的,我尝试计算每个进程的一些参数,比如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 usage
,另见 getrusage(2)
关于c++ - 是否有任何库或工具可以计算 Linux 下 C/C++ 中不同进程的 cpu 使用率和其他一些参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24799190/