Chapter 24. Reviewing a system by using the tuna interface
The tuna tool reduces complexity of performing tuning tasks. You can use tuna to adjust scheduler tunables parameters, tune thread priority, IRQ handlers, and isolate CPU cores and sockets. By using tuna, you can perform the following operations:
- List the CPUs on a system.
- List the interrupt requests (IRQs), currently running on a system.
- Change policy and priority information about threads.
- Display the current policies and priorities of a system.
24.1. Installing the tuna tool Copy linkLink copied to clipboard!
The tuna tool is designed to be used on a running system. The application-specific measurement tools can start analyzing system performance immediately after making the changes.
Procedure
Install the
tunatool:# dnf install tuna
Verification
Display the available tuna
CLIoptions:# tuna -hFor more information, see the
tuna(8)man page on your system.
24.2. Viewing the system status by using the tuna tool Copy linkLink copied to clipboard!
You can use the tuna command-line interface (CLI) tool to view the system status.
Prerequisites
-
The
tunatool is installed. For details, see Installing the tuna tool.
Procedure
View the current policies and priorities:
# tuna show_threadspid SCHED_ rtpri affinity cmd 1 OTHER 0 0,1 init 2 FIFO 99 0 migration/0 3 OTHER 0 0 ksoftirqd/0 4 FIFO 99 0 watchdog/0Alternatively, view a specific thread corresponding to a PID or matching a command name:
# tuna show_threads -t pid_or_cmd_listThe pid_or_cmd_list argument is a list of comma-separated PIDs or command-name patterns.
Depending on the scenario, perform one of the following actions:
- To tune CPUs by using the tuna CLI, complete the steps in Tuning CPUs by using the tuna tool.
- To tune the IRQs by using the tuna tool, complete the steps in Tuning IRQs by using the tuna tool.
Save the changed configuration:
# tuna save filenameThis command saves only currently running kernel threads. Processes that are not running are not saved.
24.3. Tuning CPUs by using the tuna tool Copy linkLink copied to clipboard!
tuna commands can manage individual CPUs. By using the tuna tool, you can perform the following actions:
- Isolate CPUs
- All tasks running on the specified CPU move to the next available CPU. Isolating a CPU makes this CPU unavailable by removing it from the affinity mask of all threads.
- Include CPUs
- Enables tasks to run on the specified CPU.
- Restore CPUs
- Restores the specified CPU to its previous configuration.
Prerequisites
-
The
tunatool is installed. For more information, see Installing the tuna tool.
Procedure
List all currently running processes:
# ps ax | awk 'BEGIN { ORS="," }{ print $1 }'PID,1,2,3,4,5,6,8,10,11,12,13,14,15,16,17,19Display the thread list in the
tunainterface:# tuna show_threads -t 'thread_list from above cmd'Depending on your scenario, use this command to manage CPU affinity of processes with one of the following actions:
# tuna [command] --cpus cpu_list-
The cpu_list argument is a list of comma-separated CPU numbers, for example,
--cpus 0,2. -
To add a specific CPU to the current cpu_list, use, for example,
--cpus +0.
-
The cpu_list argument is a list of comma-separated CPU numbers, for example,
Depending on your scenario, perform one of the following actions:
To isolate a CPU, enter:
# tuna isolate --cpus cpu_listTo include a CPU, enter:
# tuna include --cpus cpu_list
To use a system with four or more processors, make all
sshthreads run on CPU0and1and allhttpthreads on CPU2and3:# tuna move --cpus 0,1 -t ssh*# tuna move --cpus 2,3 -t http\*
Verification
Verify the applied changes by displaying the current configuration:
# tuna show_threads -t ssh*pid SCHED_ rtpri affinity voluntary nonvoluntary cmd 855 OTHER 0 0,1 23 15 sshd# tuna show_threads -t http\*pid SCHED_ rtpri affinity voluntary nonvoluntary cmd 855 OTHER 0 2,3 23 15 httpFor more information, see the
/proc/cpuinfofile and thetuna(8)man page on your system.
24.4. Tuning IRQs by using the tuna tool Copy linkLink copied to clipboard!
The /proc/interrupts file records interrupt counts per IRQ including the interrupt type and the device name.
Prerequisites
-
The
tunatool is installed. For more information, see Installing the tuna tool.
Procedure
View the current IRQs and their affinity:
# tuna show_irqs# users affinity 0 timer 0 1 i8042 0 7 parport0 0Specify the list of IRQs to be affected by a command:
# tuna <command> --irqs irq_list --cpus cpu_list- The irq_list argument is a list of comma-separated IRQ numbers or user-name patterns.
-
Replace
<command>with, for example,--spread.
Move an interrupt to a specified CPU:
# tuna show_irqs --irqs <128>users affinity 128 iwlwifi 0,1,2,3# tuna move --irqs 128 --cpus 3-
Replace 128 with the irq_list argument and
3with the cpu_list argument. -
The cpu_list argument is a list of comma-separated CPU numbers, for example,
--cpus 0,2. For more information, see Tuning CPUs by using the tuna tool.
-
Replace 128 with the irq_list argument and
Verification
Compare the state of the selected IRQs before and after moving any interrupt to a specified CPU:
# tuna show_irqs --irqs 128users affinity 128 iwlwifi 3For more information, see the
/proc/interruptsfile and thetuna(8)man page on your system.