时间命令如何工作

时间命令如何工作

所以当我打字时,time <some_program>我有很好的 CPU 时间测量。但这究竟是如何实现的呢?这对性能也有影响吗some_program

답변1

内核跟踪所有进程的 CPU 使用统计信息;time只是向内核询问有关其子进程的信息,这恰好是您要求它运行的命令。由于内核无论如何都会跟踪这些信息(调度、实施各种资源配额等所需),因此使用该time命令不会使命令运行速度变慢。

답변2

时间的手册页说

时间命令的统计包括

(i) 调用和终止之间经过的实时时间,

(ii) 用户 CPU 时间(times(2) 返回的 struct tms 中 tms_utime 和 tms_cutime 值的总和)

(iii) 系统 CPU 时间(times(2) 返回的 struct tms 中 tms_stime 和 tms_cstime 值的总和)。

你可以看到这里这里其中该time命令是在GNU timeC 程序中实现的。

总 CPU 时间是 CPU 为程序执行某些操作所花费的时间和 CPU 代表程序为内核执行系统调用所花费的时间的组合。当程序循环访问数组时,它会累积用户 CPU 时间。相反,当程序执行 exec 或 fork 等系统调用时,它会累积系统 CPU 时间。

根据时间的GNU实现的源代码,时间显示的大部分信息都来自wait3系统调用。在没有返回状态信息的 wait3 调用的系统上,将使用 times 系统调用。

관련 정보