gprof效能測試工具

2022-04-16 07:36:44 字數 1763 閱讀 2370

gprofgnu工具鏈自帶的效能分析工具,它通過讀取效能分析檔案,並與應用程式進行關聯,得到應用程式效能情況,當前有兩種輸出模式:

通過編譯增加-pg選項,插入效能埋點。如果需要輸出結果中帶上原始碼,需要增加-g選項.

以test程式為例子,執行程式,在當前目錄下會生成gmon.out檔案,供後續分析。

資料分析有兩種方法:

常用分析選項:

flat profile**解釋:

%time

cumulative seconds

self seconds

calls

self ts/call

total ts/call

name

該函式消耗時間佔程式所有時間百分比

程式的累積執行時間(只是包括gprof能夠監控到的函式)

該函式本身執行時間(所有被呼叫次數的合共時間)

函式被呼叫次數

函式平均執行時間(不包括被呼叫時間)(函式的單次執行時間)

函式平均執行時間(包括被呼叫時間)(函式的單次執行時間)

函式名call graph 的字段含義:

index

%time

self

children

total ts/call

name

索引值函式消耗時間佔所有時間百分比

函式本身執行時間

執行子函式所用時間

被呼叫次數

函式名程式的累積執行時間只是包括gprof能夠監控到的函式。工作在核心態的函式和沒有加-pg編譯的第三方庫函式是無法被gprof能夠監控到的。

通過增加編譯選項,在程式入口函式前,呼叫monstartup函式,用於初始化gprof profile環境。在每個函式入口處呼叫_mcount函式,用於統計呼叫資訊,註冊atexit介面,在程式正常退出時,清理相關環境,輸出名為gmon.out的效能分析檔案,供後續分析。

gprof只能檢視使用者態函式,適合於查詢使用者級程式的瓶頸,無法得到程式在核心態函式的執行時間。

gprof只能在程式正常結束退出之後才能生成效能報告。如果收到訊號異常退出,則不會輸出分析報告,可新增對應訊號的處理函式,遮蔽處理。如果是服務型程式,可新增自定義訊號,通過外部觸發來模擬執行正常退出流程。

signal(siguser1, sighandler)

static void sighandler(int sig_no)

使用方法: kill -siguser1 pid.

如要監控第三方庫函式執行時間,第三方庫也必須是新增–pg選項編譯。

gprof對於cpu密集型的程式較為適用。對於io密集型程式難以進行優化。

gprof不支援多執行緒應用,多執行緒下只能採集主線程效能資料。原因是它採用itimer_prof訊號,如要支援多執行緒分析,需要重寫pthread_create函式,具體可點此參考

Mysql效能測試工具

一 mysqlslap測試 mysqlslap是mysql自帶的乙個測試工具。具體的用法可以通過man獲得。比較常用的options解釋如下 concurrency 代表併發數量,多個可以用逗號隔開,當然你也可以用自己的分隔符隔開,這個時候要用到 delimiter開關。engines 代表要測試的...

效能測試工具原理

廣義的講,可以把效能測試過程中使用到的所有工具都稱為效能測試工具,效能測試工具分為兩大類,服務端效能測試工具和前端效能測試工具 服務端效能測試工具需要支援產生壓力和負載,錄製和生成測試指令碼,設定和部署場景,產生併發使用者和向系統施加持續的壓力 而前端效能測試工具則不需要關係系統的壓力和負載,只需要...

mysqlslap 效能測試工具

mysqlslap 效能測試工具 常用引數 concurrency 代表併發數量,多個可以用逗號隔開。例如 concurrency 50,200,500 engines 代表要測試的引擎,可以有多個,用分隔符隔開。例如 engines myisam,innodb,memory iterations ...