2013-02-23 81 views
1

我想在我的服務器上測試BLAST運行時間,因此我啓動了time命令。 服務器有16個CPU,我正在運行BLAST 16線程。在分析發生時,可能還有其他應用程序並行運行。解釋多線程程序的Linux時間命令結果(%CPU> 100)

輸出如下:

184255.45user 458.23system 6:37:54elapsed 773%CPU (0avgtext+0avgdata 83504272maxresident)k 
294680inputs+10029344outputs (1799major+149694417minor)pagefaults 0swaps 

解釋用戶時間秒CPU的花在運行我的應用程序獲得比總時間更多。我看到有人告訴我應該用%CPU來分配時間,但是接下來我只需要3分鐘,這對於BLAST和我輸入的大小來說是不現實的。

我需要的信息是用戶時間,但我不確定如何解釋它。

關於解釋結果的任何建議?

+0

完全切向(但可能相關)的問題:這是一個集羣嗎? – L0j1k 2013-02-23 10:32:50

+4

你在做數學錯誤。 184255.45÷773%= 23800,或約400分鐘。 – 2013-02-23 10:35:06

+0

只是爲了記錄(除了@DietrichEpp的評論):你必須用百分數除以百分數,否則你不能對它們進行計算。 '184,255.45s÷(773%÷100)≈23,836.41s''23,836。41s÷60≈400min' – RicoBrassers 2016-09-06 10:46:32

回答

3

從手冊頁(並從here截取):

The default format is: 

    %Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k 
    %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps 

所以,在用戶空間花費秒,秒在內核空間,6小時37分54秒過去了「真實」時間。

在他的評論因此,作爲迪特里希埃普指出,並期待在逝去的時候,它們匹配,6點37分53秒397.8833分鐘。

Here'suser/system/real(elapsed)時間之間的差異的一個很好的解釋:

Real是掛鐘時間 - 時間從開始到通話結束。這是所有已用時間,包括其他進程 使用的時間片和進程花費的時間(例如,如果它正在等待 I/O完成)。

用戶是在進程內用戶模式代碼(內核之外)花費的CPU時間量。這只是 執行過程中使用的實際CPU時間。其他流程和時間花費在 上的花費不計入此數字。

Sys是在進程內核中花費的CPU時間量。這意味着在內核中執行CPU時間花費在 以內的系統調用中,而不是庫代碼,它仍然在 用戶空間中運行。像'用戶'一樣,這只是進程使用的CPU時間。 有關內核模式(也稱爲 'supervisor'模式)和系統調用機制的簡要說明,請參見下文。