rtla-timerlat-hist

作業系統定時器延遲的直方圖

手冊章節:

1

SYNOPSIS

rtla timerlat hist [選項] ...

描述

rtla timerlat 工具是 timerlat 跟蹤器的介面。timerlat 跟蹤器為每個 CPU 分配一個核心執行緒。這些執行緒設定一個週期性定時器以喚醒它們自己並返回休眠。喚醒後,它們收集並生成有用的資訊,用於除錯作業系統定時器延遲。

timerlat 跟蹤器以兩種方式輸出資訊。它定期在定時器 IRQ 處理程式和 Thread 處理程式中列印定時器延遲。它還透過 osnoise: 跟蹤點啟用最相關資訊的跟蹤。

rtla timerlat 工具設定 timerlat 跟蹤器的選項,並收集和顯示結果摘要。預設情況下,集合是在核心空間中使用附加到 timerlat 跟蹤器的專用 BPF 程式同步完成的。如果 BPF 或它附加到的 osnoise:timerlat_sample 跟蹤點不可用,則 rtla timerlat 工具將回退到使用 tracefs 在使用者空間中非同步處理資料。

rtla timerlat hist 顯示每個跟蹤器事件發生的直方圖。此工具使用週期性資訊,並且在使用 -T 選項時啟用 osnoise: 跟蹤點。

選項

-a, --auto us

設定自動跟蹤模式。此模式在除錯系統時設定一些常用選項。它等效於使用 -T us -s us -t。預設情況下,timerlat 跟蹤器對 timerlat 執行緒使用 FIFO:95,因此等效於 -P f:95

-p, --period us

以微秒為單位設定 timerlat 跟蹤器週期。

-i, --irq us

如果 IRQ 延遲高於以 us 為單位的引數,則停止跟蹤。

-T, --thread us

如果 Thread 延遲高於以 us 為單位的引數,則停止跟蹤。

-s, --stack us

如果 Thread 延遲高於以 us 為單位的引數,則在 IRQ 處儲存堆疊跟蹤。

-t, --trace [檔案]

將停止的跟蹤儲存到 [檔案|timerlat_trace.txt]。

--dma-latency us

將 /dev/cpu_dma_latency 設定為 us,旨在限制從空閒狀態退出的延遲。cyclictest 預設將此值設定為 0,使用 --dma-latency 0 以獲得類似的結果。

--deepest-idle-state n

停用高於 n 的空閒狀態,以減少執行 timerlat 執行緒的 CPU 從空閒狀態退出的延遲。如果 n 為 -1,則停用所有空閒狀態。從 timerlat 退出時,空閒狀態設定將恢復到執行 timerlat 之前的原始狀態。

需要使用 libcpupower 構建 rtla。

-k, --kernel-threads

使用 timerlat 核心空間執行緒,與 -u 相對。

-u, --user-threads

設定 timerlat 在沒有工作負載的情況下執行,然後分派使用者空間工作負載以等待 timerlat_fd。一旦工作負載被喚醒,它將再次進入睡眠狀態,從而將核心到使用者和使用者到核心的測量新增到跟蹤器輸出中。除非使用者指定 -k,否則將使用 --user-threads

-U, --user-load

設定 timerlat 在沒有工作負載的情況下執行,等待使用者分派每個 CPU 的任務,該任務等待 tracing/osnoise/per_cpu/cpu$ID/timerlat_fd 上的新週期。有關使用者載入程式碼的示例,請參見 linux/tools/rtla/sample/timerlat_load.py。

-b, --bucket-size N

設定直方圖桶大小(預設值 1)。

-E, --entries N

設定直方圖的條目數(預設值 256)。

--no-header

不列印標題。

--no-summary

不列印摘要。

--no-index

不列印索引。

--with-zeros

僅列印零條目。

-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 <命令> <模式> -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,以納秒為單位的 runtimeperiod

-C, --cgroup[=cgroup]

為跟蹤器的執行緒設定一個 cgroup。如果傳遞了不帶引數的 -C 選項,則跟蹤器的執行緒將繼承 rtlacgroup。否則,執行緒將放置在傳遞給選項的 cgroup 上。

--warm-up s

啟動工作負載後,讓它執行 s 秒,然後再開始收集資料,從而使系統預熱。在預熱期間生成的統計資料將被丟棄。

--trace-buffer-size kB

以 kB 為單位設定跟蹤輸出的每個 CPU 跟蹤緩衝區大小。

-h, --help

列印幫助選單。

--dump-tasks

如果滿足停止條件,則列印在所有 CPU 上執行的任務(取決於 !--no-aa)

--no-aa

停用自動分析,從而減少 rtla timerlat cpu 使用率

示例

在下面的示例中,rtla timerlat hist 設定為在 cpus 0-4 中執行 10 分鐘,跳過僅零 行。此外,rtla timerlat hist 將更改 timerlat 執行緒的優先順序,以在 SCHED_DEADLINE 優先順序下執行,每 1ms 週期具有 100us 的執行時。1ms 週期也傳遞給 timerlat 跟蹤器。停用自動分析以減少開銷

[root@alien ~]# timerlat hist -d 10m -c 0-4 -P d:100us:1ms -p 1000 --no-aa
# RTLA timerlat histogram
# Time unit is microseconds (us)
# Duration:   0 00:10:00
Index   IRQ-000   Thr-000   IRQ-001   Thr-001   IRQ-002   Thr-002   IRQ-003   Thr-003   IRQ-004   Thr-004
0        276489         0    206089         0    466018         0    481102         0    205546         0
1        318327     35487    388149     30024     94531     48382     83082     71078    388026     55730
2          3282    122584      4019    126527     28231    109012     23311     89309      4568     98739
3           940     11815       837      9863      6209     16227      6895     17196       910      9780
4           444     17287       424     11574      2097     38443      2169     36736       462     13476
5           206     43291       255     25581      1223    101908      1304    101137       236     28913
6           132    101501        96     64584       635    213774       757    215471        99     73453
7            74    169347        65    124758       350     57466       441     53639        69    148573
8            53     85183        31    156751       229      9052       306      9026        39    139907
9            22     10387        12     42762       161      2554       225      2689        19     26192
10           13      1898         8      5770       114      1247       128      1405        13      3772
11            9       560         9       924        71       686        76       765         8       713
12            4       256         2       360        50       411        64       474         3       278
13            2       167         2       172        43       256        53       350         4       180
14            1        88         1       116        15       198        42       223         0       115
15            2        63         3        94        11       139        20       150         0        58
16            2        37         0        56         5        78        10       102         0        39
17            0        18         0        28         4        57         8        80         0        15
18            0         8         0        17         2        50         6        56         0        12
19            0         9         0         5         0        19         0        48         0        18
20            0         4         0         8         0        11         2        27         0         4
21            0         2         0         3         1         9         1        18         0         6
22            0         1         0         3         1         7         0         3         0         5
23            0         2         0         4         0         2         0         7         0         2
24            0         2         0         2         1         3         0         3         0         5
25            0         0         0         1         0         1         0         1         0         3
26            0         1         0         0         0         2         0         2         0         0
27            0         0         0         3         0         1         0         0         0         1
28            0         0         0         3         0         0         0         1         0         0
29            0         0         0         2         0         2         0         1         0         3
30            0         1         0         0         0         0         0         0         0         0
31            0         1         0         0         0         0         0         2         0         2
32            0         0         0         1         0         2         0         0         0         0
33            0         0         0         2         0         0         0         0         0         1
34            0         0         0         0         0         0         0         0         0         2
35            0         1         0         1         0         0         0         0         0         1
36            0         1         0         0         0         1         0         1         0         0
37            0         0         0         1         0         0         0         0         0         0
40            0         0         0         0         0         1         0         1         0         0
41            0         0         0         0         0         0         0         0         0         1
42            0         0         0         0         0         0         0         0         0         1
44            0         0         0         0         0         1         0         0         0         0
46            0         0         0         0         0         0         0         1         0         0
47            0         0         0         0         0         0         0         0         0         1
50            0         0         0         0         0         0         0         0         0         1
54            0         0         0         1         0         0         0         0         0         0
58            0         0         0         1         0         0         0         0         0         0
over:         0         0         0         0         0         0         0         0         0         0
count:   600002    600002    600002    600002    600002    600002    600002    600002    600002    600002
min:          0         1         0         1         0         1         0         1         0         1
avg:          0         5         0         5         0         4         0         4         0         5
max:         16        36        15        58        24        44        21        46        13        50

參見

rtla-timerlat(1), rtla-timerlat-top(1)

timerlat 跟蹤器文件:<https://kernel.linux.club.tw/doc/html/latest/trace/timerlat-tracer.html>

作者

Written by Daniel Bristot de Oliveira <bristot@kernel.org>