2010-10-21 30 views
3

應用程序不計算東西,但是I/O,讀取文件,使用網絡。我希望分析器顯示它。我應該使用哪個分析器來度量_real_ time(包括等待系統調用)在這個函數中的花費,而不是_CPU_ one

我期望像callgrind中的東西那樣調用clock_gettime每個問題。

或者像oprofile那樣中斷我的應用程序(正在休眠或等待socket/file/whatever)看看它在做什麼。

我要像「讀」,「連接」,「了nanosleep」,「送」,特別是「FSYNC」的東西(和他們所有的來電)要大膽(未之類的字符串或數字函數進行計算)。

平臺:GNU/Linux的@ I386

+0

至少有關:http://stackoverflow.com/questions/2449159/linux-time-sample-based-profiler。但答案並不清楚。 – 2010-10-21 23:35:33

回答

2

快速入侵了用於Linux瑣碎採樣探查:http://vi-server.org/vi/simple_sampling_profiler.html

其追加backtrace(3)到一個文件上SIGUSR1,然後將其轉換爲註釋的源。

由於它定期探測程序,我們將看到等待某些東西的函數。

,當它走棧,我們會看到來電者也。從回答類似的問題

也有人建議縮小。

+0

++現在你走在正確的軌道上!一旦你有堆棧樣本,這只是你呈現的問題。基本的事情是通過每條生產線的樣品的百分比。 (什麼縮放。)你不需要大量的樣本來獲得合理的百分比。然後,我更願意看個別樣本,因爲它們告訴的不僅僅是數字。 – 2010-10-22 13:37:44

+0

@Mike Dunlavey,我應該試着讓它可重用嗎? (github,* .deb包,...) – 2010-10-22 13:40:54

+0

@Vi:我不知道。這取決於你。很高興看到您可以輕鬆製作簡單的採樣分析器。好工作。 – 2010-10-22 14:00:12

0

有沒有真正的辦法回答不知道你的平臺,並提供更多有關你正在嘗試做的問題。

當我在Intel平臺上運行時,我喜歡使用Time Stamp Counter (RDTSC)。在亞微秒級範圍內擊敗resoltion是很困難的。我只是在大量代碼之前和之後對它進行調用,並比較差異。

+0

更新了包含平臺的問題 – 2010-10-21 23:18:22

+0

是的,但我想callgrind調用它。 – 2010-10-21 23:19:13

相關問題