剖析 CPU 用量

ffx profiler 是一項實驗性工具 互動區。CPU 分析器會定期對 並記錄回溯追蹤,您可以使用 pprof 工具。

教學課程

如要在 Fuchsia 環境中啟用及使用 CPU 分析器, :

  1. 使用 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" 會新增必要的偵錯資訊,將堆疊符號化。
    ,瞭解如何調查及移除這項存取權。
  2. 使用 ffx profiler 指令與 CPU 分析器互動。 例如:

    ffx profiler attach --pid <TARGET_PID> --duration 5
    

    這個指令會剖析 <TARGET_PID> 5 秒的時間,然後建立 目前目錄中的 profile.pb 檔案,可用來 pprof 工具。

  3. 使用 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

這個指令會附加至所有指定的 pidstidsjob_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'