Time

為什麼實時可以低於使用者時間

  • May 5, 2020

我有一個轉換影片文件的腳本,我在伺服器上執行它的測試數據並測量它的時間time。結果我看到:

real    2m48.326s
user    6m57.498s
sys     0m3.120s

為什麼實時比使用者時間低這麼多?這與多執行緒有什麼關係嗎?或者還有什麼?

**編輯:**我認為該腳本執行了大約 2 分 48 秒

您顯示的輸出有點奇怪,因為實時通常比其他兩個大。

  • Real時間是掛鐘時間。(我們可以用秒錶測量什麼)
  • Usertime 是程序中在使用者模式下花費的時間
  • Sys是程序內在核心中花費的 CPU 時間。

所以我想如果工作是由幾個處理器同時完成的,CPU 時間會高於掛鐘時間。

這是並發/多執行緒/並行類型的應用程序嗎?

舉個例子,這是我發出time find .命令時在我的 Linux 系統上得到的。正如預期的那樣,real在這個單使用者/單核程序上,經過的時間比其他時間長得多。

real    0m5.231s
user    0m0.072s
sys     0m0.088s

經驗法則是:

  • real < user:該程序受 CPU 限制,並利用多個核心/CPU 上的並行執行。
  • real ≈ user:程序受 CPU 限制,不利用並行執行。
  • real > user:程序是 I/O 綁定的。在多個核心上執行幾乎沒有優勢。

引用自:https://unix.stackexchange.com/questions/40694