gpt4 book ai didi

linux - GNU 时间内存输出是否也考虑了子进程?

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:14 47 4
gpt4 key购买 nike

当运行 GNU 时间 (/usr/bin/time) 并检查内存消耗时,它的输出是否考虑了我的目标程序的子进程的内存使用情况?

在 GNU 的时间联机帮助页中找不到任何内容。

最佳答案

是的。

您可以轻松检查:

$ /usr/bin/time -f '%M' sh -c 'perl -e "\$y=q{x}x(2*1024*1024)" & wait'
8132
$ /usr/bin/time -f '%M' sh -c 'perl -e "\$y=q{x}x(8*1024*1024)" & wait'
20648

GNU 时间正在使用 wait4 Linux 上的系统调用(通过 wait3 glibc 包装器),虽然未记录,但它在 struct usage 中返回的资源使用情况还包括等待的进程的后代。您可以在kernel/exit.c 中查看wait4 的内核实现。所有细节:

$ grep -C2 RUSAGE_BOTH include/uapi/linux/resource.h
#define RUSAGE_SELF 0
#define RUSAGE_CHILDREN (-1)
#define RUSAGE_BOTH (-2) /* sys_wait4() uses this */
#define RUSAGE_THREAD 1 /* only the calling thread */

FreeBSD 和 NetBSD 也有一个 wait6为等待的进程及其后代返回单独信息的系统调用。他们还清楚地记录了 wait3wait4 返回的用法也包括孙子。

关于linux - GNU 时间内存输出是否也考虑了子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955309/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com