牆上時鍾時間 ,用戶cpu時間 ,系統cpu時間


一、 牆上時鍾時間 ,用戶cpu時間 ,系統cpu時間定義與聯系

時鍾時間(牆上時鍾時間wall clock time):從進程從開始運行到結束,時鍾走過的時間,這其中包含了進程在阻塞和等待狀態的時間。

用戶CPU時間:就是用戶的進程獲得了CPU資源以后,在用戶態執行的時間。
系統CPU時間:用戶進程獲得了CPU資源以后,在內核態的執行時間。

   進程的三種狀態為阻塞、就緒、運行。

   時鍾時間 = 阻塞時間 + 就緒時間 +運行時間
   用戶CPU時間 = 運行狀態下用戶空間的時間
   系統CPU時間 =  運行狀態下系統空間的時間。

   用戶CPU時間+系統CPU時間=運行時間。

注意:
其中,用戶CPU時間和系統CPU時間之和為CPU時間,即命令占用CPU執行的時間總和。實際時間要大於CPU時間,因為Linux是多任務操作系統,往往在執行一條命令時,系統還要處理其它任務。
另一個需要注意的問題是即使每次執行相同命令,但所花費的時間也是不一樣,其花費時間是與系統運行相關的。

 

 

 

在多核處理器機器上,若進程含有多個線程或通過fork調用創建子進程,則實際時間(牆上時鍾時間)可能小於CPU總時間——因為不同線程或進程可並行執行,但其時間會計入主進程的CPU總時間。若程序在某段時間處於等待狀態而並未執行,則實際時間可能大於CPU總時間。其數值關系總結如下:

  • Real < CPU,表明進程為計算密集型(CPU bound),利用多核處理器的並行執行優勢;
  • Real ≈ CPU,表明進程為計算密集型(CPU bound),未並行執行;
  • Real > CPU,表明進程為I/O密集型(I/O bound),多核並行執行優勢並不明顯。

在單核處理器上,Real時間和CPU時間之差,即Real- (User + Sys)是所有延遲程序執行的因素的總和。可估算程序運行期間的CPU利用率為CpuUsage = (User + Sys)/ Real * 100(%)。

在SMP(對稱多處理系統)上,該差值近似為Real* ProcessorNum - (User + Sys)。這些因素包括:

  • 調入程序文本和數據的I/O操作;
  • 獲取程序實際使用內存的I/O操作;
  • 由其它程序消耗的CPU用時;
  • 由操作系統消耗的CPU用時。

 

二、實例

 linshuqiang@ubuntu:~/temp$ time  ./test  
    sdga  
    s   d   g   a     
     //上面是測試test程序的   
    real    0m4.019s                     //時鍾時間  
    user    0m0.004s           //用戶CPU時間  
    sys 0m0.000s                   //系統CPU時間  

 


三、參考文獻

 

http://os.51cto.com/art/201407/445853.htm (說得很詳細,值得看一下)

http://blog.chinaunix.net/uid-27629574-id-3880991.html

http://blog.csdn.net/fjt19900921/article/details/8301230


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM