time 和 timex 命令注意事项
当使用 time 或 timex 命令时要考虑以下几个因素。
这些因素为:
- 不推荐使用 /usr/bin/time 和 /usr/bin/timex 命令。 如果可能,请使用 Korn 或 C shell 的 time 子命令。
- timex -s 命令使用 sar 命令来获取额外的统计信息。 因为 sar 命令有干扰性,所以 timex -s 命令也是如此。 特别对于短暂运行,timex -s 命令报告的数据可能无法精确反映一个程序在一个不受监控系统中的行为。
- 由于系统时钟滴答的长度(10 毫秒)和调度程序将 CPU 时间占用归因于线程时使用的规则,time 命令的结果并不是完全确定的。 因为要对时间进行采样,在连续运行之间不可避免会存在一定的变化。 这个变化由时钟滴答来决定。 程序的运行时间越短,所报告结果的偏差 (以百分比表示) 越大 (请参阅 访问处理器计时器)。
- 不推荐使用 time 或 timex 命令(不论从 /usr/bin 或通过内置 shell 的 time 函数)来测量在命令行上输入的通过管道连接的一个命令序列的用户或系统时间。 一个潜在的问题是,语法疏忽可能引起 time 命令只测量其中一个命令,而对用户错误不进行任何指示。 语法在技术上是正确的,只是不能产生用户想要的响应。
- 尽管 time 命令的语法没有改变,在 SMP 系统上它的输出却有新的含义:
在 SMP 上实际的或经过的时间可能比一个进程的用户时间短。 这时用户时间是线程或进程在所有处理器上所花时间的总和。
如果一个进程有 4 个线程,在一个单处理器 (UP) 系统上运行该进程显示出实际时间大于用户时间:# time 4threadedprog real 0m11.70s user 0m11.09s sys 0m0.08s在一个 4 路的 SMP 系统上运行该进程会显示出实际时间大约只是用户时间的 1/4。 下列输出表明多线程的进程将它的工作负载分布到几个处理器上,可以改善它的实际执行时间。 系统吞吐量因此而增加。# time 4threadedprog real 0m3.40s user 0m9.81s sys 0m0.09s