1. 程式人生 > >對linux下各種profiling工具的心得

對linux下各種profiling工具的心得

第一次寫這種技術部落格,本著一顆分享技術的心,希望能和大家多多交流和學習。

最近在公司實習,一直用Linux,要對一個比較大的伺服器進行效能測試,過程中遇到了諸多問題,在此和大家分享一下。

總結一下前兩天用profile工具時遇到的問題和自己切身的感受吧,這也算是我這兩天弄得我相當頭疼的一個問題。首先我用的第一個工具是valgrind,valgrind有很多強大的工具,我這裡要用到的是callgrind,我們公司的開發機測試機上預裝了這個東西,所以不用自己安裝。由於第一次接觸這種效能測試的東西,各方面都還不太明白,所以自己搗鼓了半天,發現這個東西只能是哪個使用者自己編譯安裝的valgrind哪個使用者才能用這個。被逼無奈之下,自己找了安裝包手動編譯安裝了下。總算是能用了,我用這個啟動伺服器,然後我就在等伺服器啟動完,這一等就是將近三個小時,然後日誌中還報錯了,記憶體貌似是溢位了,所以說用valgrind儘量不要測試那種大型的伺服器。然後我接著又準備用第二個工具,oprofile。感覺這是一個相當強大的工具,但是這個oprofile用起來是相當坑爹(也可能是我比較笨)。幾經查詢發現,這個oprofile只能是具有root許可權的使用者才能使用。

同事也相當熱心,直接就給了我臺root許可權的機器。部署好了系統的環境後,又發現這機器根本就無法啟動伺服器,記憶體太小了。無語之下,又聽說還有個profiling的東西,於是我便轉向了我用的第三個工具,gprof。鑑於前兩次的失敗,我總算是對這類東西有了一定的瞭解,然後用這個的時候也算是輕車熟路。但仔細一看,發現這個也是有一定問題的。這個是隻能檢測主執行緒,不適應於多執行緒應用,顯然是不符合我的要求。自己在網上找了諸多資料,發現這問題是能解決的,需要自己手動重新編譯一個pthread的動態連結庫。在網上搜了半天后,最後在一個國外牛人的部落格上找到了這個原始檔。按照要求編譯好動態連結庫後,放在了原工程下,重新編譯了整個工程,執行測試後,最終終於得到了測試結果。
以上便是我這兩天弄這個profiling的真實情況,不敢在各位大牛面前班門弄斧,只希望能給後面
剛接觸的人一些小小的方便。如果以上我有什麼說的不對的地方,歡迎大家指出,謝謝~!