rtla-timerlat-hist

操作系统定时器延迟的直方图

手册章节:

1

概要

rtla timerlat hist [选项] ...

描述

rtla timerlat 工具是 timerlat 跟踪器的接口。timerlat 跟踪器为每个 CPU 调度一个内核线程。这些线程设置一个定期定时器来唤醒自身,然后返回睡眠状态。唤醒后,它们收集并生成有用的信息,用于调试操作系统定时器延迟。

timerlat 跟踪器以两种方式输出信息。它定期在定时器 IRQ 处理程序和 Thread 处理程序中打印定时器延迟。它还通过 osnoise: 跟踪点启用最相关信息的跟踪。

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 延迟高于参数(以微秒为单位),则停止跟踪。

-T, --thread us

如果 Thread 延迟高于参数(以微秒为单位),则停止跟踪。

-s, --stack us

如果 Thread 延迟高于参数(以微秒为单位),则在 IRQ 处保存堆栈跟踪。

-t, --trace [file]

将停止的跟踪保存到 [file|timerlat_trace.txt]。

--dma-latency us

将 /dev/cpu_dma_latency 设置为 us,旨在限制从空闲状态退出的延迟。cyclictest 默认将此值设置为 0,使用 --dma-latency 0 可以获得类似的结果。

--deepest-idle-state n

禁用运行 timerlat 线程的 CPU 的高于 n 的空闲状态,以减少从空闲状态退出的延迟。如果 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://linuxkernel.org.cn/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://linuxkernel.org.cn/doc/html/latest/trace/events.html#event-triggers

-P, --priority o:prio|r:prio|f:prio|d:runtime:period

设置 osnoise 跟踪器线程的调度参数,设置优先级的格式为

  • o:prio - 使用 prio 的 SCHED_OTHER;

  • r:prio - 使用 prio 的 SCHED_RR;

  • f:prio - 使用 prio 的 SCHED_FIFO;

  • d:runtime[us|ms|s]:period[us|ms|s] - 使用以纳秒为单位的 runtimeperiod 的 SCHED_DEADLINE。

-C, --cgroup[=cgroup]

为跟踪器的线程设置 cgroup。如果传递不带参数的 -C 选项,则跟踪器的线程将继承 rtlacgroup。否则,线程将放置在传递给该选项的 cgroup 上。

--warm-up s

在启动工作负载后,让它运行 s 秒,然后再开始收集数据,从而使系统预热。丢弃预热期间生成的统计数据。

--trace-buffer-size kB

以 kB 为单位设置每个 CPU 的跟踪缓冲区大小,用于跟踪输出。

-h, --help

打印帮助菜单。

--dump-tasks

如果满足停止条件(取决于 !--no-aa),则打印所有 CPU 上运行的任务

--no-aa

禁用自动分析,减少 rtla timerlat 的 CPU 使用率

示例

在下面的示例中,rtla timerlat hist 设置为在 CPU 0-4 中运行 10 分钟,跳过仅零 行。此外,rtla timerlat hist 将更改 timerlat 线程的优先级,以在 SCHED_DEADLINE 优先级下运行,每 1 毫秒周期运行 100 微秒的运行时。1 毫秒的周期也传递给 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://linuxkernel.org.cn/doc/html/latest/trace/timerlat-tracer.html>

作者

由 Daniel Bristot de Oliveira <bristot@kernel.org> 编写