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

标签 c++ linux cpu-usage

现在我的项目是基于多进程的,我尝试计算每个进程的一些参数,比如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/

相关文章:

c++ - OpenCV 帧率问题

linux - llvm-cov 和 "unknown command line argument: -format=html"

linux - 对于 MPI 主机文件,有多少个插槽

android - 为什么我的 Android 应用程序在后台使用 CPU?

performance - Glassfish - 高 CPU 使用率

CPU 使用率 100% 的 MongoDB 服务

c++ - 使用 CMake 和 MinGW 构建 PoDoFo 库

C++ 将变量传递给 System() WINAPI(无 MFC)

c++ - dll中的xmlrpc服务器,向自己发送信号?

linux - 尝试回显字符串值而不是 $string