是否有库或工具可以计算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使用率,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)
相关文章:
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 5 CPU的任务调度N进程
- 等待() 等待进程是否消耗系统 CPU
- 如何获得进程在windows内核模式下使用的CPU时钟周期
- 如何在Windows中查找特定进程在该时刻的CPU使用情况
- 查找快速进程的CPU使用情况
- 使用C++将CPU专用于在1个核心上运行进程
- rusage的进程/线程的Cpu时间不可能
- C、 所有平台中进程的C++CPU使用率和内存使用率+当前时间的可用网络下行链路带宽
- 可以提高不同CPU上的进程之间的共享内存
- 减少线程或进程的CPU使用量
- 在c++/windows中获取特定进程的当前cpu使用情况
- 测量C++和Java进程的CPU使用情况
- 如何找出我的进程Id正在哪个物理CPU上运行
- 如何计算Linux中多进程应用程序的CPU使用率
- 如何防止子分支进程继承CPU亲和性
- 是否有库或工具可以计算Linux下C/ c++中不同进程的cpu使用率和其他一些参数?
- 获取当前进程CPU占用率
- 如何获得windows中特定进程使用的物理内存和cpu