【开发工具】【perf】性能分析工具perf的编译和使用说明
生活随笔
收集整理的這篇文章主要介紹了
【开发工具】【perf】性能分析工具perf的编译和使用说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
源碼位置:
kernel/tools/perf配置內核以支持perf
make xxx_defconfig make menuconfig設置以下配置: CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_USE_VMALLOC=y編譯perf工具
make CROSS_COMPILE=xxx ARCH=xxx defconfig make CROSS_COMPILE=xxx ARCH=xxx menuconfig make CROSS_COMPILE=xxx ARCH=xxx Image -j4 make CROSS_COMPILE=xxx ARCH=xxx tools/perf_clean V=1 make CROSS_COMPILE=xxx ARCH=xxx tools/perf V=1Ps: 報錯: make[4]: execvp: ./check-headers.sh: Permission denied Makefile.perf:205: recipe for target 'sub-make' failed 原因: 腳本沒執行權限,添加上可執行權限就行了 解決辦法: chmod +x tools/perf/check-headers.sh報錯: builtin-script.c:1752:23:? error: ‘/bin/’ directive writing 5 bytes into a region of size between 1 and 4096? [-Werror=format-overflow=]1752 | ?sprintf(filename, "%s/bin/%s-record", dir_name, scriptname); 原因: format-overflow,可以嘗試關掉這個報錯,不影響正常運行 -Wno-error=format-overflow加入CFLAGS 解決辦法: vi tools/perf/Makefile.perf 添加 CFLAGS += -Wno-error=format-overflow CFLAGS += -Wno-error=format-truncation編譯完成后,生成perf可執行文件 tools/perf/perfperf使用說明
perf --help之后可以看到perf的二級命令。 序號?? ?命令?? ?作用 1?? ?annotate?? ?解析perf record生成的perf.data文件,顯示被注釋的代碼。 2?? ?archive?? ?根據數據文件記錄的build-id,將所有被采樣到的elf文件打包。利用此壓縮包,可以再任何機器上分析數據文件中記錄的采樣數據。 3?? ?bench?? ?perf中內置的benchmark,目前包括兩套針對調度器和內存管理子系統的benchmark。 4?? ?buildid-cache?? ?管理perf的buildid緩存,每個elf文件都有一個獨一無二的buildid。buildid被perf用來關聯性能數據與elf文件。 5?? ?buildid-list?? ?列出數據文件中記錄的所有buildid。 6?? ?diff?? ?對比兩個數據文件的差異。能夠給出每個符號(函數)在熱點分析上的具體差異。 7?? ?evlist?? ?列出數據文件perf.data中所有性能事件。 8?? ?inject?? ?該工具讀取perf record工具記錄的事件流,并將其定向到標準輸出。在被分析代碼中的任何一點,都可以向事件流中注入其它事件。 9?? ?kmem?? ?針對內核內存(slab)子系統進行追蹤測量的工具 10?? ?kvm?? ?用來追蹤測試運行在KVM虛擬機上的Guest OS。 11?? ?list?? ?列出當前系統支持的所有性能事件。包括硬件性能事件、軟件性能事件以及檢查點。 12?? ?lock?? ?分析內核中的鎖信息,包括鎖的爭用情況,等待延遲等。 13?? ?mem?? ?內存存取情況 14?? ?record?? ?收集采樣信息,并將其記錄在數據文件中。隨后可通過其它工具對數據文件進行分析。 15?? ?report?? ?讀取perf record創建的數據文件,并給出熱點分析結果。 16?? ?sched?? ?針對調度器子系統的分析工具。 17?? ?script?? ?執行perl或python寫的功能擴展腳本、生成腳本框架、讀取數據文件中的數據信息等。 18?? ?stat?? ?執行某個命令,收集特定進程的性能概況,包括CPI、Cache丟失率等。 19?? ?test?? ?perf對當前軟硬件平臺進行健全性測試,可用此工具測試當前的軟硬件平臺是否能支持perf的所有功能。 20?? ?timechart?? ?針對測試期間系統行為進行可視化的工具 21?? ?top?? ?類似于linux的top命令,對系統性能進行實時分析。 22?? ?trace?? ?關于syscall的工具。 23?? ?probe?? ?用于定義動態檢查點。全局性概況:
perf list查看當前系統支持的性能事件; perf bench對系統性能進行摸底; perf test對系統進行健全性測試; perf stat對全局性能進行統計;全局細節:
perf top可以實時查看當前系統進程函數占用率情況; perf probe可以自定義動態事件;特定功能分析:
perf kmem針對slab子系統性能分析; perf kvm針對kvm虛擬化分析; perf lock分析鎖性能; perf mem分析內存slab性能; perf sched分析內核調度器性能; perf trace記錄系統調用軌跡; 最常用功能perf record,可以系統全局,也可以具體到某個進程,更甚具體到某一進程某一事件;可宏觀,也可以很微觀。 pref record記錄信息到perf.data; perf report生成報告; perf diff對兩個記錄進行diff; perf evlist列出記錄的性能事件; perf annotate顯示perf.data函數代碼; perf archive將相關符號打包,方便在其它機器進行分析; perf script將perf.data輸出可讀性文本;可視化工具perf timechart
perf timechart record記錄事件; perf timechart生成output.svg文檔;參考:
系統級性能分析工具perf的介紹與使用 - ArnoldLu - 博客園 (cnblogs.com)
總結
以上是生活随笔為你收集整理的【开发工具】【perf】性能分析工具perf的编译和使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海豚调度(DolphinSchedule
- 下一篇: Hbase深入浅出