limingming3
14f08c976f
tools/rtla: Replace setting prio with nice for SCHED_OTHER
...
Since the sched_priority for SCHED_OTHER is always 0, it makes no
sence to set it.
Setting nice for SCHED_OTHER seems more meaningful.
Link: https://lkml.kernel.org/r/20240207065142.1753909-1-limingming3@lixiang.com
Cc: stable@vger.kernel.org
Fixes: b1696371d8 ("rtla: Helper functions for rtla")
Signed-off-by: limingming3 <limingming3@lixiang.com >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
2024-02-12 10:56:36 +01:00
Daniel Bristot de Oliveira
cdca4f4e5e
rtla/timerlat_top: Add timerlat user-space support
...
Add the support for running timerlat threads in user-space. In this
mode, enabled with -u/--user-threads, timerlat dispatches user-space
processes that will loop in the timerlat_fd, measuring the overhead
for going to user-space and then returning to the kernel - in addition
to the existing measurements.
Here is one example of the tool's output with -u enabled:
$ sudo timerlat top -u -d 600 -q
Timer Latency
0 00:10:01 | IRQ Timer Latency (us) | Thread Timer Latency (us) | Ret user Timer Latency (us)
CPU COUNT | cur min avg max | cur min avg max | cur min avg max
0 #600001 | 0 0 0 3 | 2 1 2 9 | 3 2 3 15
1 #600001 | 0 0 0 2 | 2 1 2 13 | 2 2 3 18
2 #600001 | 0 0 0 10 | 2 1 2 16 | 3 2 3 20
3 #600001 | 0 0 0 7 | 2 1 2 10 | 3 2 3 11
4 #600000 | 0 0 0 16 | 2 1 2 41 | 3 2 3 58
5 #600000 | 0 0 0 3 | 2 1 2 10 | 3 2 3 13
6 #600000 | 0 0 0 5 | 2 1 2 7 | 3 2 3 10
7 #600000 | 0 0 0 1 | 2 1 2 7 | 3 2 3 10
The tuning setup like -p or -C work for the user-space threads as well.
Link: https://lkml.kernel.org/r/758ad2292a0a1d884138d08219e1a0f572d257a2.1686066600.git.bristot@kernel.org
Cc: William White <chwhite@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Tested-by: Juri Lelli <juri.lelli@redhat.com >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2023-06-13 16:38:51 -04:00
Daniel Bristot de Oliveira
c58a3f8c7f
rtla: Automatically move rtla to a house-keeping cpu
...
When the user sets -c <cpu-list> try to move rtla out of the <cpu-list>,
even without an -H option. This is useful to avoid having rtla
interfering with the workload.
This works by removing <cpu-list> from rtla's current affinity.
If rtla fails to move itself away it is not that of a problem as this
is an automatic measure.
Link: https://lkml.kernel.org/r/c54304d90c777310fb85a3e658d1449173759aab.1686066600.git.bristot@kernel.org
Cc: William White <chwhite@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Tested-by: Juri Lelli <juri.lelli@redhat.com >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2023-06-13 16:30:13 -04:00
Daniel Bristot de Oliveira
272ced2556
rtla: Add --house-keeping option
...
To avoid having rtla interfering with the measurement threads, add an
option for the user to set the CPUs in which rtla should run. For
instance:
# rtla timerlat top -H 0 -c 1-7
Will place rtla in the CPU 0, while running the measurement threads in
the CPU 1-7.
Link: https://lkml.kernel.org/r/6a6c78a579a96ba8b02ae67ee1e0ba2cb5e03c4a.1686066600.git.bristot@kernel.org
Cc: William White <chwhite@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Tested-by: Juri Lelli <juri.lelli@redhat.com >
Suggested-by: Juri Lelli <juri.lelli@redhat.com >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2023-06-13 16:26:03 -04:00
Daniel Bristot de Oliveira
a957cbc025
rtla: Add -C cgroup support
...
The -C option sets a cgroup to the tracer's threads. If the -C option is
passed without arguments, the tracer's thread will inherit rtla's
cgroup. Otherwise, the threads will be placed on the cgroup passed
to the option.
Link: https://lkml.kernel.org/r/cb051477331d292f17c08bf1d66f0e0384bbe5a5.1686066600.git.bristot@kernel.org
Cc: William White <chwhite@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Tested-by: Juri Lelli <juri.lelli@redhat.com >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2023-06-13 16:25:13 -04:00
Daniel Bristot de Oliveira
27e348b221
rtla/timerlat: Add auto-analysis core
...
Currently, timerlat displays a summary of the timerlat tracer results
saving the trace if the system hits a stop condition.
While this represented a huge step forward, the root cause was not
that is accessible to non-expert users.
The auto-analysis fulfill this gap by parsing the trace timerlat runs,
printing an intuitive auto-analysis.
Link: https://lkml.kernel.org/r/1ee073822f6a2cbb33da0c817331d0d4045e837f.1675179318.git.bristot@kernel.org
Cc: Daniel Bristot de Oliveira <bristot@kernel.org >
Cc: Jonathan Corbet <corbet@lwn.net >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2023-02-02 10:48:03 -05:00
Daniel Bristot de Oliveira
dada03db9b
rtla: Remove procps-ng dependency
...
Daniel Wagner reported to me that readproc.h got deprecated. Also,
while the procps-ng library was available on Fedora, it was not available
on RHEL, which is a piece of evidence that it was not that used.
rtla uses procps-ng only to find the PID of the tracers' workload.
I used the procps-ng library to avoid reinventing the wheel. But in this
case, reinventing the wheel took me less time than the time we already
took trying to work around problems.
Implement a function that reads /proc/ entries, checking if:
- the entry is a directory
- the directory name is composed only of digits (PID)
- the directory contains the comm file
- the comm file contains a comm that matches the tracers'
workload prefix.
- then return true; otherwise, return false.
And use it instead of procps-ng.
Link: https://lkml.kernel.org/r/e8276e122ee9eb2c5a0ba8e673fb6488b924b825.1652423574.git.bristot@kernel.org
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Tao Zhou <tao.zhou@linux.dev >
Fixes: b1696371d8 ("rtla: Helper functions for rtla")
Reported-by: Daniel Wagner <dwagner@suse.de >
Reviewed-by: Daniel Wagner <dwagner@suse.de >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-05-26 15:20:46 -04:00
Daniel Bristot de Oliveira
7d0dc9576d
rtla/timerlat: Add --dma-latency option
...
Add the --dma-latency to set /dev/cpu_dma_latency to the
specified value, this aims to avoid having exit from idle
states latencies that could be influencing the analysis.
Link: https://lkml.kernel.org/r/72ddb0d913459f13217086dadafad88a7c46dd28.1646247211.git.bristot@kernel.org
Cc: Daniel Bristot de Oliveira <bristot@kernel.org >
Cc: Clark Williams <williams@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-03-15 14:36:50 -04:00
Daniel Bristot de Oliveira
b1696371d8
rtla: Helper functions for rtla
...
This is a set of utils and tracer helper functions. They are used by
rtla mostly to parse config, display data and some trace operations that
are not part of libtracefs (because they are only useful it for this
case).
Link: https://lkml.kernel.org/r/a94c128aba9e6e66d502b7094f2e8c7ac95b12e5.1639158831.git.bristot@kernel.org
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Tom Zanussi <zanussi@kernel.org >
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Cc: Daniel Bristot de Oliveira <bristot@kernel.org >
Cc: linux-rt-users@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt <rostedt@goodmis.org >
2022-01-13 17:02:42 -05:00