rtla-hwnoise¶
檢測和量化硬體相關噪聲¶
- 手冊部分:
1
概要¶
rtla hwnoise [OPTIONS]
描述¶
rtla hwnoise 收集在中斷停用狀態下執行的 osnoise 跟蹤器的週期性摘要。透過停用中斷以及隨之而來的執行緒排程,只允許不可遮蔽中斷和硬體相關噪聲。
該工具還允許配置 osnoise 跟蹤器並收集跟蹤器輸出。
選項¶
-a, --auto us
設定自動跟蹤模式。此模式在除錯系統時設定一些常用選項。它等同於使用 -s us -T 1 -t。
-p, --period us
設定 osnoise 跟蹤器週期,單位為微秒。
-r, --runtime us
設定 osnoise 跟蹤器執行時長,單位為微秒。
-s, --stop us
如果單個樣本高於引數值(單位微秒),則停止跟蹤。如果設定了 -T,它還會將跟蹤儲存到輸出。
-S, --stop-total us
如果總樣本高於引數值(單位微秒),則停止跟蹤。如果設定了 -T,它還會將跟蹤儲存到輸出。
-T, --threshold us
指定兩次時間讀取之間的最小增量,以便將其視為噪聲。預設閾值為 5 us。
-t, --trace [file]
將停止的跟蹤儲存到 [file|osnoise_trace.txt]。
-q, --quiet
只在會話結束時列印摘要。
-c, --cpus cpu-list
設定 osnoise 跟蹤器以在 cpu-list 中執行樣本執行緒。
-H, --house-keeping cpu-list
僅在給定的 cpu-list 上執行 rtla 控制執行緒。
-d, --duration time[s|m|h|d]
設定會話持續時間。
-D, --debug
列印除錯資訊。
-e, --event sys:event
在跟蹤 (-t) 會話中啟用一個事件。引數可以是特定事件,例如 -e sched:sched_switch,或系統組的所有事件,例如 -e sched。允許多個 -e。僅當設定了 -t 或 -a 時才有效。
--filter <filter>
使用 <filter> 過濾上一個 -e sys:event 事件。有關事件過濾的更多資訊,請參閱 https://kernel.linux.club.tw/doc/html/latest/trace/events.html#event-filtering。
- --trigger <trigger>
為上一個 -e sys:event 啟用跟蹤事件觸發器。如果激活了 hist: 觸發器,輸出直方圖將自動儲存到名為 system_event_hist.txt 的檔案中。例如,命令
rtla <command> <mode> -t -e osnoise:irq_noise --trigger=”hist:key=desc,duration/1000:sort=desc,duration/1000:vals=hitcount”
將自動將與 osnoise:irq_noise 事件關聯的直方圖內容儲存到 osnoise_irq_noise_hist.txt 中。
有關事件觸發器的更多資訊,請參閱 https://kernel.linux.club.tw/doc/html/latest/trace/events.html#event-triggers。
-P, --priority o:prio|r:prio|f:prio|d:runtime:period
為 osnoise 跟蹤器執行緒設定排程引數,設定優先順序的格式為
o:prio - 使用 SCHED_OTHER,優先順序為 prio;
r:prio - 使用 SCHED_RR,優先順序為 prio;
f:prio - 使用 SCHED_FIFO,優先順序為 prio;
d:runtime[us|ms|s]:period[us|ms|s] - 使用 SCHED_DEADLINE,執行時長為 runtime,週期為 period,單位均為納秒。
-C, --cgroup[=cgroup]
為跟蹤器的執行緒設定一個 cgroup。如果 -C 選項不帶引數傳遞,跟蹤器的執行緒將繼承 rtla 的 cgroup。否則,執行緒將被放置在傳遞給選項的 cgroup 中。
--warm-up s
啟動工作負載後,讓它執行 s 秒,然後開始收集資料,以便系統預熱。預熱期間生成的統計資料將被丟棄。
- --trace-buffer-size kB
為跟蹤輸出設定每個 CPU 的跟蹤緩衝區大小,單位為 kB。
-h, --help
列印幫助選單。
示例¶
在下面的示例中,rtla hwnoise 工具被設定為在具有 8 核/16 執行緒且啟用了超執行緒的系統上,在 CPU 1-7 上執行。
該工具被設定為檢測任何高於一微秒的噪聲,執行十分鐘,並在會話結束時顯示報告摘要
# rtla hwnoise -c 1-7 -T 1 -d 10m -q
Hardware-related Noise
duration: 0 00:10:00 | time is in us
CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI
1 #599 599000000 138 99.99997 3 3 4 74
2 #599 599000000 85 99.99998 3 3 4 75
3 #599 599000000 86 99.99998 4 3 6 75
4 #599 599000000 81 99.99998 4 4 2 75
5 #599 599000000 85 99.99998 2 2 2 75
6 #599 599000000 76 99.99998 2 2 0 75
7 #599 599000000 77 99.99998 3 3 0 75
第一列顯示 CPU,第二列顯示該工具在會話期間運行了多少個週期 (Periods)。執行時長 (Runtime) 是該工具在 CPU 上有效執行的時間。噪聲 (Noise) 列是該工具觀察到的所有噪聲的總和,% CPU 可用 (CPU Aval) 是 執行時長 (Runtime) 和 噪聲 (Noise) 之間的關係。
最大噪聲 (Max Noise) 列是該工具在一個週期中檢測到的最大硬體噪聲,而 最大單次 (Max Single) 是觀察到的最大單次噪聲。
HW 和 NMI 列顯示該工具觀察到的硬體和 NMI 噪聲的總髮生次數。
例如,CPU 3 運行了 599 個1秒執行時長的週期。在整個執行過程中,該 CPU 產生了 86 us 的噪聲,為應用程式留下了 99.99997 % 的 CPU 時間。在最差的單個週期中,該 CPU 給應用程式帶來了 4 us 的噪聲,但這肯定是由不止一個單個噪聲引起的,因為 最大單次 (Max Single) 噪聲為 3 us。該 CPU 存在 硬體噪聲 (HW noise),發生率為 每十分鐘六次。該 CPU 也存在 NMI,頻率更高:大約 每秒七次。
在理想情況下,該工具應該報告 0 個硬體相關噪聲。例如,透過停用超執行緒以消除硬體噪聲,並停用 TSC 看門狗以消除 NMI(可以使用 rtla hwnoise 的跟蹤選項來識別這一點),在相同的硬體上可以達到理想情況
# rtla hwnoise -c 1-7 -T 1 -d 10m -q
Hardware-related Noise
duration: 0 00:10:00 | time is in us
CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI
1 #599 599000000 0 100.00000 0 0 0 0
2 #599 599000000 0 100.00000 0 0 0 0
3 #599 599000000 0 100.00000 0 0 0 0
4 #599 599000000 0 100.00000 0 0 0 0
5 #599 599000000 0 100.00000 0 0 0 0
6 #599 599000000 0 100.00000 0 0 0 0
7 #599 599000000 0 100.00000 0 0 0 0
參見¶
rtla-osnoise(1)
Osnoise 跟蹤器文件:<https://kernel.linux.club.tw/doc/html/latest/trace/osnoise-tracer.html>
作者¶
由 Daniel Bristot de Oliveira <bristot@kernel.org> 撰寫
報告錯誤¶
請向 <linux-kernel@vger.kernel.org> 和 <linux-trace-devel@vger.kernel.org> 報告錯誤
許可¶
rtla 是根據 GNU GPLv2 許可的自由軟體
版權¶
版權所有 (C) 2021 Red Hat, Inc. 依據 GNU 通用公共許可證 (GPL) 的條款,授予本軟體的自由使用權。