c - getrusage 的大部分字段应该为 0 吗?

标签 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

我只是想知道这个输出是否可以通过,或者是否表明有问题,所以我没有放置任何源代码。谢谢!

最佳答案

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

话虽如此,我认为像这样调用 getrusage 根本没有多大意义。它通常用于获取进程生命周期内的聚合使用情况,而不是测量增量。一些更深奥的东西可能很难通过其他方式测量增量,但可以通过 clock_gettime 测量时间(实际时间或 cpu)。

关于c - getrusage 的大部分字段应该为 0 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742582/

相关文章:

c - 用于升级嵌入式设备的.bin文件

我们可以修改 limits.h 吗?会不会有什么效果?

c++ - 在 Linux 上管理共享库的常用方法是什么?

c - 线程中的 OpenMP 阻塞调用

wpf - 如何更改 WPF 文本框的突出显示文本颜色?

python - 清除pyglet资源缓存

linux - 如何在启用调试日志的情况下编译内核模块

c - 十进制到二进制转换器无法正常工作

STM32微 Controller 与SIM20模块与UART设备的通信

android - setIcon(ic_menu_more) 没有效果