我知道time
命令的输出可以在user
部分显示比real
部分更多的时间用于多处理器的情况,但最近,我试图当我看到real
远远大于user
+ sys
时,会对程序进行个人资料。
$ time ./test.o
real 0m5.576s
user 0m1.270s
sys 0m0.540s
有人可以解释为什么会造成这种行为吗?
答案 0 :(得分:8)
这是正常行为。
“真实”是挂钟时间。在你的例子中,运行'./test.o'
需要5.576秒'user'是用户CPU时间,或(大致)用户空间进程使用的CPU时间。这基本上是你的CPU花在实际执行'./test.o'上的时间。 1.270秒。
最后,'sys'是系统CPU时间,或者(大致)内核使用的CPU时间。 0.540秒。
如果添加sys + user,则会获得CPU执行程序所花费的时间。
real - (user + sys)是不运行程序的时间。在调用和终止不运行程序之间花费了3.766秒 - 可能正在等待CPU完成运行其他程序,等待磁盘I / O等。
答案 1 :(得分:4)
您的进程花费的时间(例如,等待I / O)不会被“用户”或“系统”计算,但“实际”时间仍然过去。
尝试:
time cat
...然后等待10秒并点击ctrl-D。
答案 2 :(得分:1)
至少有两种可能性: