Linux时间命令 - 真实vs用户vs系统

时间:2015-03-18 12:09:18

标签: linux linux-kernel executable-jar

我正在使用time命令在Linux中运行一个jar文件。下面是执行后的输出。

15454.58s real 123464.61s user  6455.55s system

以下是执行的命令。

time java -jar -Xmx7168m Batch.jar

但是执行该过程所需的实际时间是9270秒。

为什么实际时间(挂钟时间)和实际时间不同?

任何人都能解释一下吗?它运行在多核机器(32核心)上。

2 个答案:

答案 0 :(得分:2)

也许这可以解释您遇到的偏差。来自time Wikipedia article

  

因为程序可能会分叉CPU时间(用户和用户)的子项   sys)被添加到time命令报告的值,但是在a上   多核系统这些任务是并行运行的,总CPU时间   可能比实时更大。

除此之外,您对实时的理解符合time(7)

中给出的定义
  

实时定义为从某个固定点开始测量的时间,从过去的标准点(参见下面的纪元和日历时间的描述),或者从生命中的某些点(例如,开始)开始。一个过程(经过的时间)。

另请参阅bash(1)(尽管其time命令的文档并不过于全面。)

如果秒对您来说足够精确,那么这个小包装器可以提供帮助:

#!/bin/bash

starttime=$( date +"%s" )
# run your program here
endtime=$( date +"%s" )

duration=$(( endtime-starttime ))
echo "Execution took ${duration} s."

注意:如果在程序运行时更改系统时间,结果将不正确。

答案 1 :(得分:0)

从我记忆中,用户时间是用户空间花费的时间,系统是在内核空间中运行的时间(例如系统调用),而实际也称为挂钟时间(实际时间是你)例如,可以用秒表测量。不确切知道如何在SMP系统上计算它。