--- tags: Linux Kernel Internals, 作業系統 --- # Linux 核心設計: 追蹤與測試工具 ## Perfetto ### 安裝 Perfetto [Perfetto](https://perfetto.dev/) 是一款可以針對 Android 和 Linux 環境進行系統追蹤和分析的工具。在 Linux 環境上,可以參考 [Perfetto build instructions](https://perfetto.dev/docs/contributing/build-instructions) 頁面一步步進行安裝。 針對跨平台的環境,則可以參考 [Perfetto build instructions: Cross-compiling for Linux ARM/64](https://perfetto.dev/docs/contributing/build-instructions#cross-compiling-for-linux-arm-64) 的方式。以目標為 ARM64 的平台為例,Perfetto 的跨平台編譯真的很友善。首先我們可以使用下面的命令取得 Perfetto 以及相關的工具。 ``` $ git clone https://android.googlesource.com/platform/external/perfetto/ && cd perfetto $ tools/install-build-deps --linux-arm ``` 接著,透過此命令產生設定檔: ``` $ tools/gn args out/linux ``` 在設定檔中加入以下的參數。更多參數設定的細節可見 [Build configurations](https://perfetto.dev/docs/contributing/build-instructions#build-configurations)。 ``` target_os = "linux" target_cpu = "arm64" is_debug = false ``` 完成設定後,以下的命令即可建立進行基礎追蹤所需的工具! 或者也可以執行 `tools/ninja -C out/linux` 來建立所有 Perfetto 涵蓋的工具。 ``` $ tools/ninja -C out/linux tracebox traced traced_probes perfetto ``` ### 使用 Perfetto 追蹤 Linux 運行 追蹤的方式可以參考如下作法。這裡我們使用範例的 `scheduling.cfg` 設定檔來追蹤與排程器相關的一些事件。參考 [TraceConfig](https://perfetto.dev/docs/reference/trace-config-proto) 可得知設定檔的更多相關語法。 ``` $ sudo chown -R $USER /sys/kernel/tracing $ out/linux/tracebox -o trace_file.perfetto-trace --txt \ -c test/configs/scheduling.cfg ``` 此命令的輸出會被導向到 `trace_file.perfetto-trace` 檔案。將輸出檔案匯入到 [Perfetto UI](https://ui.perfetto.dev/) 即可看到追蹤結果的視覺化展現,相當方便! > * [Perfetto: Swiss Army Knife for Linux Client Tracin](http://lalitm.com/perfetto-swiss-army-knife/) ## Scheduler > * [Hackbench](https://hackmd.io/Rq-sfre_R9aFmG6vaS1z5Q#Hackbench) > * [Schbench](https://hackmd.io/Rq-sfre_R9aFmG6vaS1z5Q?view#Schbench) ## Linux Test Project(LTP) [Linux Test Project](https://github.com/linux-test-project/ltp/tree/master) 是由 IBM, Cisco, Fujitsu, SUSE, Red Hat, Oracle 等等知名公司所一同開發與維護的專案。其整合一系列與測試 Linux kernel 相關的工具,因此可以提供對 Linux 的全面性測試。 安裝方式可參照 README.md 的說明: ``` $ git clone https://github.com/linux-test-project/ltp.git $ cd ltp $ make autotools $ ./configure ``` 如果想要一口氣將所有的 test 都安裝上,可以透過以下方式。 ``` $ make $ make install ``` 不過由於 LTP 測試項目眾多,我們也可以只選擇有興趣的項目來執行。舉例來說,假設我們只對測試 Hackbench 有興趣,可以直接移動到對應資料夾下並 `make` 必要的項目即可: ``` $ cd testcases/kernel/sched/cfs-scheduler $ make $ PATH=$PATH:$PWD ./hackbench ``` ## bpftrace ## retsnoop ## drgn [drgn: 探索與除錯 Linux 核心的利器!](https://hackmd.io/@RinHizakura/r1gEFgprkx)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.