我知道time
命令的輸出可以在user
部分顯示比real
部分更多的時間,但對於多處理器情況,最近我試圖在我看到程序real
實質上大於user
+ sys
。Linux時間命令輸出的差異
$ time ./test.o
real 0m5.576s
user 0m1.270s
sys 0m0.540s
有人可以解釋爲什麼會造成這種行爲嗎?
我知道time
命令的輸出可以在user
部分顯示比real
部分更多的時間,但對於多處理器情況,最近我試圖在我看到程序real
實質上大於user
+ sys
。Linux時間命令輸出的差異
$ time ./test.o
real 0m5.576s
user 0m1.270s
sys 0m0.540s
有人可以解釋爲什麼會造成這種行爲嗎?
這是正常的行爲。
「真實」是掛鐘時間。在您的示例中,運行'./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等。
至少有兩種可能性:
您的進程花費睡眠(例如,等待I/O)的時間不由「用戶」或「系統」 ,但「真實」的時間仍然流逝。
嘗試:
time cat
...然後等待10秒鐘,然後按Ctrl-d。