2012-01-25 38 views
0

可能這個問題是重複的,但我無法找到。 我如何檢查進程處於空閒狀態的時間。如何知道進程的空閒時間

我實際的問題:

我有一個運行Solaris UNIX服務器X86上的進程。 在我們的測試服務器中,它在4個小時內完成了它的工作,但在我們的客戶端服務器中,它花費了超過10個小時。我檢查了客戶端服務器,發現客戶端服務器中的配置與我們的測試服務器不同。 : testserver中的虛擬處理器數量爲-24,但客戶端服務器中的虛擬處理器數量僅爲8. 並且處理器速度也有所不同。

我懷疑這是因爲配置,該進程實際上沒有獲得CPU時間,我懷疑它在大多數時間是空閒的。

但我只是想知道的過程中有多少時間是idle.Is有沒有做到這一點任何具體的方法是什麼?這個過程用C++編寫,所以我也標註此爲C++

+0

您的24CPU機器更有可能有空閒時間。 4小時/ 24個CPU〜= 10小時/ 8個CPU。聽起來對我來說很合適。我想你會發現8 CPU的CPU運行速度更高(相應的空閒時間相對較少)。此外,有更好的標籤讓最好的人看你的問題。尋找性能測試和系統測試等標籤。 (斯里現在沒有時間查看它)。另外,AIX上的nmon實用程序具有這種信息,我認爲現在已經移植到Solaris。祝你好運。 – shellter

+0

http://stackoverflow.com/questions/9053236/idle-time-of-a-process-in-linux/9053266#9053266 – poitroae

回答

0

的nmon可在www.sourceforge.net但有很多工具

如果你的應用程序是一個cpu野獸,你的「空閒時間」可能是上下文切換。如果沒有插裝的代碼,以獲得正在發生的事情的想法,嘗試pbind的過程中鎖定到一個單一的CPU,然後運行你的應用程序

time myapp 

真實時間(掛鐘時間),併爲用戶的CPU時間並會給出內核。由於該過程受到限制,掛壁時間可能會更長,但這會給你父母,LWP和兒童的總CPU。

除此之外,您可以通過使用procfs(procfs.h)獲取cpu信息來檢測代碼並報告通常更細粒度的信息。您可以編譯以啓用分析,然後查看瓶頸的位置,以及如果認爲cpu消耗太高。

0

一直處於閒置狀態

我不知道你所說的「閒置」的意思。你的意思是「封鎖」。將用戶+系統CPU的總數與經過時間相比較,可以得出近似值,假設您的計算機負載不重。