> 文章列表 > 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】

【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】

【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】

getrusage

getrusage 是一个用于获取系统资源使用情况的函数,它在 Unix 和类 Unix 系统中可用。要使用它,你需要包含 <sys/resource.h> 头文件。下面是一个简单的 C++ 示例程序,用于获取进程的资源使用情况:

使用 RUSAGE_SELF 常量,表示获取当前进程的资源使用情况。你可以根据需要使用其他选项,如 RUSAGE_CHILDREN 来获取子进程的资源使用情况。

usage.ru_utime usage.ru_stime 这两个参数的区别和用途

这两个参数都是在结构体struct rusage中定义的,它们分别对应用户CPU时间和系统CPU时间。

usage.ru_utime: 用户空间进程所消耗的CPU时间。这个时间指进程花费在运行用户程序(代码)上的时间。如果程序在执行系统调用等操作时被阻塞了,则其在这段时间内消耗的CPU时间是不计入ru_utime中的。

usage.ru_stime: 内核空间进程所消耗的CPU时间。这个时间指进程花费在运行内核程序(操作系统代码)上的时间,比如进程运行时需要进行系统调用,会调用内核程序,这段时间的CPU时间会被计入ru_stime中。

可以根据这两个参数的值来判断进程的CPU使用情况,以及优化程序的性能。如:

如果一个进程的ru_utime很高,说明程序中的循环较多并且耗费时间较多,需要优化循环或者使用更高效的算法;

如果一个进程的ru_stime较高,说明进程在等待系统调