1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 ============ 3 ============ 4 rtla-hwnoise 4 rtla-hwnoise 5 ============ 5 ============ 6 ------------------------------------------ 6 ------------------------------------------ 7 Detect and quantify hardware-related noise 7 Detect and quantify hardware-related noise 8 ------------------------------------------ 8 ------------------------------------------ 9 9 10 :Manual section: 1 10 :Manual section: 1 11 11 12 SYNOPSIS 12 SYNOPSIS 13 ======== 13 ======== 14 14 15 **rtla hwnoise** [*OPTIONS*] 15 **rtla hwnoise** [*OPTIONS*] 16 16 17 DESCRIPTION 17 DESCRIPTION 18 =========== 18 =========== 19 19 20 **rtla hwnoise** collects the periodic summary 20 **rtla hwnoise** collects the periodic summary from the *osnoise* tracer 21 running with *interrupts disabled*. By disabli 21 running with *interrupts disabled*. By disabling interrupts, and the scheduling 22 of threads as a consequence, only non-maskable 22 of threads as a consequence, only non-maskable interrupts and hardware-related 23 noise is allowed. 23 noise is allowed. 24 24 25 The tool also allows the configurations of the 25 The tool also allows the configurations of the *osnoise* tracer and the 26 collection of the tracer output. 26 collection of the tracer output. 27 27 28 OPTIONS 28 OPTIONS 29 ======= 29 ======= 30 .. include:: common_osnoise_options.rst 30 .. include:: common_osnoise_options.rst 31 31 32 .. include:: common_top_options.rst 32 .. include:: common_top_options.rst 33 33 34 .. include:: common_options.rst 34 .. include:: common_options.rst 35 35 36 EXAMPLE 36 EXAMPLE 37 ======= 37 ======= 38 In the example below, the **rtla hwnoise** too 38 In the example below, the **rtla hwnoise** tool is set to run on CPUs *1-7* 39 on a system with 8 cores/16 threads with hyper 39 on a system with 8 cores/16 threads with hyper-threading enabled. 40 40 41 The tool is set to detect any noise higher tha 41 The tool is set to detect any noise higher than *one microsecond*, 42 to run for *ten minutes*, displaying a summary 42 to run for *ten minutes*, displaying a summary of the report at the 43 end of the session:: 43 end of the session:: 44 44 45 # rtla hwnoise -c 1-7 -T 1 -d 10m -q 45 # rtla hwnoise -c 1-7 -T 1 -d 10m -q 46 Hard 46 Hardware-related Noise 47 duration: 0 00:10:00 | time is in us 47 duration: 0 00:10:00 | time is in us 48 CPU Period Runtime Noise % CPU 48 CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 49 1 #599 599000000 138 99. 49 1 #599 599000000 138 99.99997 3 3 4 74 50 2 #599 599000000 85 99. 50 2 #599 599000000 85 99.99998 3 3 4 75 51 3 #599 599000000 86 99. 51 3 #599 599000000 86 99.99998 4 3 6 75 52 4 #599 599000000 81 99. 52 4 #599 599000000 81 99.99998 4 4 2 75 53 5 #599 599000000 85 99. 53 5 #599 599000000 85 99.99998 2 2 2 75 54 6 #599 599000000 76 99. 54 6 #599 599000000 76 99.99998 2 2 0 75 55 7 #599 599000000 77 99. 55 7 #599 599000000 77 99.99998 3 3 0 75 56 56 57 57 58 The first column shows the *CPU*, and the seco 58 The first column shows the *CPU*, and the second column shows how many 59 *Periods* the tool ran during the session. The 59 *Periods* the tool ran during the session. The *Runtime* is the time 60 the tool effectively runs on the CPU. The *Noi 60 the tool effectively runs on the CPU. The *Noise* column is the sum of 61 all noise that the tool observed, and the *% C 61 all noise that the tool observed, and the *% CPU Aval* is the relation 62 between the *Runtime* and *Noise*. 62 between the *Runtime* and *Noise*. 63 63 64 The *Max Noise* column is the maximum hardware 64 The *Max Noise* column is the maximum hardware noise the tool detected in a 65 single period, and the *Max Single* is the max 65 single period, and the *Max Single* is the maximum single noise seen. 66 66 67 The *HW* and *NMI* columns show the total numb 67 The *HW* and *NMI* columns show the total number of *hardware* and *NMI* noise 68 occurrence observed by the tool. 68 occurrence observed by the tool. 69 69 70 For example, *CPU 3* ran *599* periods of *1 s 70 For example, *CPU 3* ran *599* periods of *1 second Runtime*. The CPU received 71 *86 us* of noise during the entire execution, 71 *86 us* of noise during the entire execution, leaving *99.99997 %* of CPU time 72 for the application. In the worst single perio 72 for the application. In the worst single period, the CPU caused *4 us* of 73 noise to the application, but it was certainly 73 noise to the application, but it was certainly caused by more than one single 74 noise, as the *Max Single* noise was of *3 us* 74 noise, as the *Max Single* noise was of *3 us*. The CPU has *HW noise,* at a 75 rate of *six occurrences*/*ten minutes*. The C 75 rate of *six occurrences*/*ten minutes*. The CPU also has *NMIs*, at a higher 76 frequency: around *seven per second*. 76 frequency: around *seven per second*. 77 77 78 The tool should report *0* hardware-related no 78 The tool should report *0* hardware-related noise in the ideal situation. 79 For example, by disabling hyper-threading to r 79 For example, by disabling hyper-threading to remove the hardware noise, 80 and disabling the TSC watchdog to remove the N 80 and disabling the TSC watchdog to remove the NMI (it is possible to identify 81 this using tracing options of **rtla hwnoise** 81 this using tracing options of **rtla hwnoise**), it was possible to reach 82 the ideal situation in the same hardware:: 82 the ideal situation in the same hardware:: 83 83 84 # rtla hwnoise -c 1-7 -T 1 -d 10m -q 84 # rtla hwnoise -c 1-7 -T 1 -d 10m -q 85 Hard 85 Hardware-related Noise 86 duration: 0 00:10:00 | time is in us 86 duration: 0 00:10:00 | time is in us 87 CPU Period Runtime Noise % CPU 87 CPU Period Runtime Noise % CPU Aval Max Noise Max Single HW NMI 88 1 #599 599000000 0 100. 88 1 #599 599000000 0 100.00000 0 0 0 0 89 2 #599 599000000 0 100. 89 2 #599 599000000 0 100.00000 0 0 0 0 90 3 #599 599000000 0 100. 90 3 #599 599000000 0 100.00000 0 0 0 0 91 4 #599 599000000 0 100. 91 4 #599 599000000 0 100.00000 0 0 0 0 92 5 #599 599000000 0 100. 92 5 #599 599000000 0 100.00000 0 0 0 0 93 6 #599 599000000 0 100. 93 6 #599 599000000 0 100.00000 0 0 0 0 94 7 #599 599000000 0 100. 94 7 #599 599000000 0 100.00000 0 0 0 0 95 95 96 SEE ALSO 96 SEE ALSO 97 ======== 97 ======== 98 98 99 **rtla-osnoise**\(1) 99 **rtla-osnoise**\(1) 100 100 101 Osnoise tracer documentation: <https://www.ker 101 Osnoise tracer documentation: <https://www.kernel.org/doc/html/latest/trace/osnoise-tracer.html> 102 102 103 AUTHOR 103 AUTHOR 104 ====== 104 ====== 105 Written by Daniel Bristot de Oliveira <bristot@ 105 Written by Daniel Bristot de Oliveira <bristot@kernel.org> 106 106 107 .. include:: common_appendix.rst 107 .. include:: common_appendix.rst
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.