Linux GNU时间内存输出是否也包含子进程?

Linux GNU时间内存输出是否也包含子进程?,linux,time,gnu,Linux,Time,Gnu,当运行GNU time/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'

当运行GNU time/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 time通过wait3 glibc包装器在Linux上使用系统调用,虽然没有记录,但它在struct rusage中返回的资源使用情况还包括等待的进程的子代。您可以在中查看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还有一个系统调用,它为等待的进程及其子进程返回单独的信息。他们还清楚地记录了wait3和wait4返回的rusage也包括孙子辈。

您能发布时间实用程序的示例输出吗?你能准确地指出你所问的测量值吗?大约%K?我可以看到gnu time内部使用并解析返回的rusage,它还调用了一些times和gettimeofday,但与内存测量无关。wait3表示返回有关子项的资源使用信息-我认为这意味着仅返回一个和一个子项的资源信息。1导出时间=\t%E real、\t%U user、\t%S sys、\t%K amem、\t%M mmem 2运行以下/usr/bin/TIME my_program.sh。来自/usr/bin/time的输出:0:00.74实时、1.16用户、0.14系统、0 amem、68636mmem@KamilCuk你错了。您应该始终对linux文档持保留态度-