ffx profiler
是一項實驗性工具,可讓您尋找並在程式碼中以視覺化方式呈現無線基地台。CPU 分析器會定期取樣執行中的執行緒,並記錄回溯追蹤記錄,您可以使用 pprof
工具查看這些記錄。
教學課程
如要在 Fuchsia 環境中啟用及使用 CPU 分析器,請執行下列操作:
使用
fx set
指令,在 Fuchsia 設定中新增一些額外引數,例如:fx set <PRODUCT>.<BOARD> \ --release \ --args='experimental_thread_sampler_enabled=true'
experimental_thread_sampler_enabled=true
會啟用實驗性核心輔助取樣支援,可大幅降低取樣作業的負擔。
使用
ffx profiler
指令與 CPU 分析器互動,例如:ffx profiler attach --pid <TARGET_PID> --duration 5
這個指令會對
<TARGET_PID>
進行 5 秒的剖析,然後在目前目錄中建立profile.pb
檔案,可交由pprof
工具處理。使用
pprof
匯出各種格式,包括文字和互動式火焰圖,例如:pprof -top profile.pb
這個指令會產生類似以下的輸出內容:
Main binary filename not available. Type: location Showing nodes accounting for 272, 100% of 272 total flat flat% sum% cum cum% 243 89.34% 89.34% 243 89.34% count(int) 17 6.25% 95.59% 157 57.72% main() 4 1.47% 97.06% 4 1.47% collatz(uint64_t*) 3 1.10% 98.16% 3 1.10% add(uint64_t*) 3 1.10% 99.26% 3 1.10% sub(uint64_t*) 1 0.37% 99.63% 1 0.37% rand() 1 0.37% 100% 1 0.37% <unknown> 0 0% 100% 157 57.72% __libc_start_main(zx_handle_t, int (*)(int, char**, char**)) 0 0% 100% 154 56.62% _start(zx_handle_t) 0 0% 100% 160 58.82% start_main(const start_params*)
啟動並附加至目標
Pid、Tid 和工作 ID
最簡單的入門方式是附加至 koids
:
ffx profiler attach --duration 5 --pids 123,1234,234 --tids 345,234 --job-ids 123
這個指令會連結至所有指定的 pids
、tids
和 job_ids
。如果指定 pids
,剖析器也會附加至程序中的每個執行緒。如果指定 job_ids
,剖析器會附加至工作中的每個程序和執行緒,也會附加至每個子工作,以及子工作中的每個程序和執行緒。
如果您不知道 pid
,請嘗試使用下列指令來識別:
ffx target ssh ps | grep fuchsia_microbenchmarks
元件
剖析器可以使用路徑名稱或網址附加至現有元件,例如:
ffx profiler attach --moniker core/ffx-laboratory:your_component
ffx profiler attach --url 'fuchsia-pkg://fuchsia.com/your_component#meta/your_component.cm'
剖析器也可以在元件準備就緒時啟動並附加至元件,例如:
ffx profiler launch --duration 5 --url 'fuchsia-pkg://fuchsia.com/your_component#meta/your_component.cm'