【问题标题】:Discrepancy in Linux time command outputLinux 时间命令输出的差异
【发布时间】:2011-09-16 02:35:45
【问题描述】:

我知道time 命令的输出在user 部分下显示的时间比real 部分多处理器情况下的时间长,但最近,当我看到real 远大于 user + sys

$ time ./test.o

real    0m5.576s
user    0m1.270s
sys     0m0.540s

谁能解释为什么会出现这种行为?

【问题讨论】:

    标签: linux time


    【解决方案1】:

    至少有两种可能:

    • 系统正忙于其他竞争进程
    • 程序睡眠时间过长,或正在执行导致其等待的其他操作,例如 i/o(等待用户输入、磁盘 i/o、网络 i/o 等)

    【讨论】:

      【解决方案2】:

      “用户”或“系统”都不会计算您的进程睡眠(例如等待 I/O)所花费的时间,但“实际”时间仍然过去了。

      试试:

      time cat
      

      ...然后等待 10 秒并按 ctrl-D。

      【讨论】:

        【解决方案3】:

        这是正常行为。

        “真实”是挂钟时间。在您的示例中,运行 './test.o' 需要 5.576 秒

        'user' 是用户 CPU 时间,或(大致)用户空间进程使用的 CPU 时间。这实际上是您的 CPU 实际执行“./test.o”所花费的时间。 1.270 秒。

        最后,'sys' 是系统 CPU 时间,或(大致)内核使用的 CPU 时间。 0.540 秒。

        如果您添加 sys + 用户,您将获得 CPU 必须花费在执行程序上的时间。

        real - (user + sys) 是运行你的程序所花费的时间。在调用和终止之间花费了 3.766 秒没有运行您的程序 - 可能等待 CPU 完成运行其他程序、等待磁盘 I/O 等。

        【讨论】:

          猜你喜欢
          • 2019-09-21
          • 1970-01-01
          • 1970-01-01
          • 2021-02-18
          • 1970-01-01
          • 1970-01-01
          • 2021-11-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多