开发者

Discrepancy in Linux time command output

I am aware that the output of the time command can show greater time under the user section than the real section for multi-processor cases, but recently, I was trying to profile a program 开发者_运维问答when I saw that real was substantially greater than user + sys.

$ time ./test.o

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

Can anybody explain why such a behaviour is caused?


That's the normal behavior.

"Real" is is the wall-clock time. In your example, it literally took 5.576 seconds to run './test.o'

'user' is the User CPU time, or (roughly) CPU time used by user-space processes. This is essentially the time your CPU spent actually executing './test.o'. 1.270 seconds.

And finally, 'sys' is System CPU time, or (roughly) CPU time used by your kernel. 0.540 seconds.

If you add sys + user, you get the amount of time your CPU had to spend executing the program.

real - (user + sys) is, then, the time spent not running your program. 3.766 seconds were spent between invocation and termination not running your program--probably waiting for the CPU to finish running other programs, waiting on disk I/O, etc.


Time your process spends sleeping (e.g., waiting for I/O) is not counted by either "user" or "system", but "real" time still elapses.

Try:

time cat

...then wait 10 seconds and hit ctrl-D.


There are at least two possibilities:

  • The system is busy with other competing processes
  • The program is sleeping a lot, or doing other operations which cause it to wait, like i/o (waiting for user input, disk i/o, network i/o, etc.)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜