getrusage的大多数字段应该为0吗?

时间:2019-09-01 01:17:44

标签: c resources kernel getrusage

我已经在linux中编写了两个系统调用,并且使用系统调用中的getrusage来测量它们的两个资源使用情况。但是,我得到的大多数结果都是0,但我不确定这是否有意义。输出如下:

[ 4103.028728] DELTA RESULTS:
[ 4103.028746] u.tv_sec: 0
[ 4103.028748] s.tv_sec: 0
[ 4103.028749] u.tv_usec: 0
[ 4103.028751] s.tv_usec: 971765
[ 4103.028753] maxrss: 0
[ 4103.028755] ixrss: 0
[ 4103.028756] idrss: 0
[ 4103.028758] isrss: 0
[ 4103.028760] minflt: 0
[ 4103.028761] majflt: 0
[ 4103.028763] nswap: 0
[ 4103.028765] inblock: 0
[ 4103.028766] oublock: 0
[ 4103.028768] msgsnd: 0
[ 4103.028769] msgrcv: 0
[ 4103.028771] nsignals: 0
[ 4103.028773] nvcsw: 199
[ 4103.028774] nivcsw: 5

[ 4103.028961] CONTROL RESULTS:
[ 4103.028966] u.tv_sec: 0
[ 4103.028968] s.tv_sec: 0
[ 4103.028970] u.tv_usec: 1383
[ 4103.028972] s.tv_usec: 971998
[ 4103.028974] maxrss: 2492
[ 4103.028975] ixrss: 0
[ 4103.028977] idrss: 0
[ 4103.028978] isrss: 0
[ 4103.028980] minflt: 75
[ 4103.028982] majflt: 0
[ 4103.028984] nswap: 0
[ 4103.028986] inblock: 24
[ 4103.028987] oublock: 0
[ 4103.028989] msgsnd: 0
[ 4103.028991] msgrcv: 0
[ 4103.028992] nsignals: 0
[ 4103.028994] nvcsw: 200
[ 4103.028996] nivcsw: 5

我只想知道此输出是否可传递,或者这是什么地方有问题的迹象,所以我没有放置任何源代码。谢谢!

1 个答案:

答案 0 :(得分:1)

这看起来不错;我不希望syscall对这些指标中的绝大多数进行任何更改,这些指标用来衡量进程所用的资源,而不是内核资源。仅当您进行像mmap这样的系统调用来为进程分配新资源,或者像read这样的系统调用最终存储到属于该进程的先前的写时复制内存时,才应该看到更改。

话虽如此,我认为这样叫getrusage根本没有多大意义。通常是为了获得整个过程生命周期内的总体使用情况,而不是测量增量。有些较深奥的事情可能很难以其他方式来衡量增量,但是可以通过clock_gettime来测量时间(实际时间或cpu)。