ffx profiler
是一項實驗性工具
互動區。CPU 分析器會定期對
並記錄回溯追蹤,您可以使用
pprof
工具。
教學課程
如要在 Fuchsia 環境中啟用及使用 CPU 分析器, :
使用
fx set
指令,例如:fx set <PRODUCT>.<BOARD> \ --release \ --args='debuginfo="backtrace"' \ --args='enable_frame_pointers=true' \ --args='experimental_thread_sampler_enabled=true'
experimental_thread_sampler_enabled=true
啟用實驗功能 取樣支援enable_frame_pointers=true
可讓分析器收集堆疊 樣本。debuginfo="backtrace"
會新增必要的偵錯資訊,將堆疊符號化。
使用
ffx profiler
指令與 CPU 分析器互動。 例如:ffx profiler attach --pid <TARGET_PID> --duration 5
這個指令會剖析
<TARGET_PID>
5 秒的時間,然後建立 目前目錄中的profile.pb
檔案,可用來pprof
工具。使用
pprof
將資料匯出為各種格式,包括文字和互動式 火焰圖,例如:pprof -top profile.out.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*)
開始並附加至目標
Pids、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
元件
分析器可以使用攔截器或 URL 附加至現有元件 例如:
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'