所以当我打字时,time <some_program>我有很好的 CPU 时间测量。但这究竟是如何实现的呢?这也对性能有任何影响some_program吗?
Kyl*_*nes 12
内核会跟踪所有进程的 CPU 使用统计信息;time只是向内核询问有关其子进程的信息,这恰好是您要求它运行的命令。由于内核无论如何都会跟踪这些信息(调度、实现各种资源配额等所需),因此使用该time命令不会使您的命令运行得更慢。
时间手册页说
时间命令的统计信息包括
(i) 调用和终止之间经过的实时时间,
(ii) 用户 CPU 时间(times(2) 返回的结构 tms 中的 tms_utime 和 tms_cutime 值的总和)
(iii) 系统 CPU 时间(times(2) 返回的结构 tms 中的 tms_stime 和 tms_cstime 值的总和)。
您可以在 c 程序中实现命令的地方看到这一点time。
总 CPU 时间是 CPU 为程序执行某些操作所花费的时间和 CPU 代表程序执行内核系统调用所花费的时间的组合。当程序循环遍历数组时,它正在累积用户 CPU 时间。相反,当程序执行诸如 exec 或 fork 之类的系统调用时,它正在积累系统 CPU 时间。
根据时间的GNU实现的源代码,时间显示的大部分信息来自wait3系统调用。在没有返回状态信息的 wait3 调用的系统上,将使用 times 系统调用。
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |