在命令行中使用“时间”时,什么是“系统时间”

在命令行中使用“时间”时,什么是“系统时间”

我习惯在 Ubuntu 14.04 的标准终端上对脚本time进行计时。Perl

我有real time是秒表时间;作为用户,我花在查看程序从启动程序直到程​​序终止运行的时间。但我不明白是什么usersys时间是什么。time至少可以说,手册页很模糊。

虽然real时间是分开的user,但sys尚不清楚它们代表什么。

在我的脚本中,我对 C++ 和 Perl 进行基准测试[1]以查看差异,并且我想知道我实际获得的数据。输出示例如下:

real    0m24.198s
user    0m23.120s
sys     0m1.030s

有人可以详细说明默认的时间格式告诉用户什么吗?我是 Linux 新手,所以请不要假设太多。

real[1] 有趣的是,虽然在我的基准测试中,C++ 在时间方面比 Perl 快得多,sys但时间差别并不大,C++ 实际上sys比 Perl 使用更多的时间。这就是为什么我想知道它们的含义

答案1

维基百科:

  • 用户时间与系统时间

“用户 CPU 时间”一词一开始可能会有点误导。需要明确的是,总 CPU 时间是 CPU 为程序执行某些操作所花费的时间和 CPU 代表程序为内核执行系统调用所花费的时间的组合。当程序循环访问数组时,它会累积用户 CPU 时间。相反,当程序执行 exec 或 fork 等系统调用时,它会累积系统 CPU 时间。

  • 实时与 CPU 时间

本文中的术语“实时”指的是经过的“挂钟”时间,就像使用秒表一样。总 CPU 时间(用户时间 + 系统时间)可能大于或小于该值。由于程序可能会花费一些时间等待并且根本不执行(无论是在用户模式还是系统模式),因此实际时间可能大于总 CPU 时间。由于程序可能会派生子进程,其 CPU 时间(用户和系统)会添加到 time 命令报告的值中,因此总 CPU 时间可能会大于实际时间。

相关内容