2013-05-26 21 views
1

當使用strace -T -tt -o outputfile myprogram,該出放像strace的時間戳的含義

16:14:37.576804寫(1, 「EFFEEFFFEFFGGEEFEEFECEEDB」 ......,4096)= 4096 < 0.000014> 16:14:37.577121寫(1,「,... ,,,。\ tDEDEEDEDEEBDEEFECECFBEE」...,4096)= 4096 < 0.000015> 16:14:37.577434 write(1,「66098 \ tT \ t41 \ t ...., ..... ,,,。,,,, ...「...,4096)= 4096 < 0.000016>

第一列是指系統調用的開始時間還是結束時間?如給出-T,最後一列的內容是「顯示在系統調用中花費的時間,它記錄了每次系統調用的開始和結束之間的時間差。」爲什麼它與兩個寫電話之間的時間差距不同?如前兩個,16:14:37.577121 - 16:14:37.576804 = 0.000317> 0.000014。

回答

3

根據實驗我只是想:

strace -t sleep 2 

的時間戳是系統調用啓動的時間。 (它顯示了一個nanosleep,它的時間戳與上一個系統調用相匹配,而不是下一個在2秒後加上時間戳的時間戳。)

我不能肯定地說在時間上沒有一些測量不準確性,但你不能指望在系統調用中花費的時間與時間戳的差別完全相同 - 你的進程必須在系統調用之間的用戶空間中做一些工作。