unix提供了getrusage系统调用获取进程的资源信息。
long getrusage(int who, struct rusage *ru);
struct rusage {
struct timeval ru_utime; /* user time used 用户态下程序运行时间*/
struct timeval ru_stime; /* system time used 内核态下程序运行时间*/
long ru_maxrss; /* maximum resident set size 应用程序实际使用的内存,不包含SWAP,不包含共享的内存*/
long ru_ixrss; /* integral shared memory size 共享内存的大小*/
long ru_idrss; /* integral unshared data size 不共享的数据区的大小*/
long ru_isrss; /* integral unshared stack size 不共享的栈区的大小*/
long ru_minflt; /* page reclaims 页面回收数*/
long ru_majflt; /* page faults 页面错误数*/
long ru_nswap; /* swaps 交换页面的个数*/
long ru_inblock; /* block input operations 块输入操作数*/
long ru_oublock; /* block output operations 块输出操作数*/
long ru_msgsnd; /* messages sent 发送的消息*/
long ru_msgrcv; /* messages received 接受的消息*/
long ru_nsignals; /* signals received 接收的信号数*/
long ru_nvcsw; /* voluntary context switches 自愿上下文切换数*/
long ru_nivcsw; /* involuntary " 非自愿上下文切换数*/
};