Zircon 核心的內部追蹤系統可在開機時啟用。也就是說 設定啟動選項,盡可能減少啟動核心端啟動完畢後 需要收集圖像資料就大功告成。
啟用核心追蹤開機參數
核心追蹤緩衝區的大小可在啟動時變更
與 ktrace.bufsize=N
指令列選項相符,其中 N
是大小
以 MB 為單位進行緩衝區大小
要收集的資料是由 `ktrace.grpmask=0xNNN' 控管 指令列選項0xNNN 值是 KTRACE_GRP_* 的位元遮罩 值 //zircon/kernel/lib/boot-options/include/lib/boot-options/options.inc. 預設值為 0x000,這會停用所有追蹤記錄類別 (或 ktrace parlance)。
透過 fx set
指令,將啟動選項設為 GN 變數:
fx set ... --args='dev_kernel_cmdline=["ktrace.grpmask=0xFFF"]'
接著,您需要重新建構並重新部署。
如要進一步瞭解 Zircon 指令列選項,請參閱: - kernel_cmdline - kernel_build
將核心啟動追蹤記錄資料納入追蹤記錄結果
啟用核心追蹤開機參數後,只要核心的內部追蹤緩衝區
復原後,追蹤記錄中就會有資料。藉由
將 kernel:retain
類別傳遞至 ffx trace
或 trace
程式。請注意,追蹤記錄
在未傳遞 kernel:retain
的情況下,ktrace 緩衝區會重新復原,資料也遺失。
範例:
ffx trace start --categories "kernel,kernel:retain" --buffer-size 32 --duration 1
這裡有幾點重要事項需要注意。
首先要注意的是,已經傳遞的類別:kernel
和 kernel:retain
。
kernel
類別會指示核心追蹤所有內容。
在本範例中,核心已經追蹤所有項目:
設為開機時的預設值只要在這裡指定
告知 ktrace_provider
,這是 Fuchsia 追蹤記錄之間的介面
與核心持續收集該核心資料
kernel:retain
類別會指示 ktrace_provider
不要倒轉
開始追蹤時的核心追蹤緩衝區。
第二是緩衝區空間核心的預設追蹤記錄緩衝區大小 32 MB,Fchsia 追蹤記錄的預設緩衝區大小為 4 MB。 使用較大的 Fuchsia 追蹤記錄緩衝區空間,表示有足夠的空間 保留核心追蹤記錄緩衝區的內容。
第三個重點是 擷取追蹤記錄緩衝區目前的內容,而沒有興趣 持續追蹤任何項目因此,使用時間長度為一秒的原因。