A tuned daemon uses the udev daemon to monitor connected devices and statically and dynamically tunes system settings according to a selected profile. The tuned daemon has predefined profiles such as Throughput-performance, Balanced, and Virtual-guest for common use cases. System administrators can also create custom profiles for their workloads.

In the Red Hat Enterprise Linux (RHEL) version 7 operating system, the default profile is Throughput-performance. The Virtual-guest profile is selected for virtual machines and the Balanced profile is selected for all other cases. The Balanced profile is the default profile in the CentOS 7.x operating system. The tuned daemon has a set of rules that recommend or select one of the profiles as the default profile. These rules use regular expressions to match the computenode|server strings in the /etc/system-release-cpe file and also use the output of the virt-what command. If the first expression is true and the output of the virt-what command is empty, the Throughput-performance profile is recommended. If the output of the virt-what command displays data about the virtual machine, the Virtual-guest profile is recommended. When both these rules are not met, the Balanced profile is selected as the default profile in the Tuned daemon.

Throughput-performance profile

Systems with operating systems that act as compute nodes always aim for best throughput performance. The Throughput-performance profile is a server profile that is optimized for high throughput. This profile disables energy savings mechanisms and enables the sysctl settings that improve the throughput performance of the disk, network I/O, and switches to the deadline scheduler. The CPU governor parameter is set to performance.

Balanced profile

The goal of this profile is balanced performance and energy consumption. It is intended to be a solution in between performance and energy consumption and uses auto-scaling and auto-tuning whenever possible. It has good results for most loads. Increased latency is a drawback with this profile.

This profile enables the processor, disk, audio, and video plug-ins and activates the on-demand governor policy, which is a CPU frequency governor policy. The radeon_powersave parameter of the Radeon video graphics card is set to auto.

You can change or switch between these profiles by using the tuned-adm command. For example, run the tuned-adm profile <profile> command. You can select the profile that is best suited for your workload. The Throughput-performance and Balanced profiles are the default profiles on non-virtual systems.

Virtual-guest profile

This profile is optimized for virtual machines. The settings of this profile decrease virtual memory swappiness and increase disk read-ahead values.

Comparison of profile parameters

The following table describes the comparison of a few system parameters that differ between these profiles.

Table 1. Comparing profile parameters
System parameter Default value for Throughput-performance profile Default value for Balanced profile Description
kernel.sched_wakeup_granularity_ns 15 microseconds/B5s 20 microseconds/B5s The ability of the task that is being activated to pre-empt the current task. If you set this parameter to a larger value, it is difficult for other tasks to force pre-emption. This parameter is used to reduce overscheduling. Lowering the value of this parameter reduces wakeup delays on one hand. However, it might cause frequent switches.
kernel.sched_min_granularity_ns 10 microseconds/B5s 15 microseconds/B5s The minimum time after which a task becomes eligible to be pre-empted. This parameter controls the amount of time that tasks might run without pre-emption. Set this parameter to a lower value for latency-sensitive tasks (or huge thread count) and to a higher value for compute-bound or throughput-oriented workloads.
vm.dirty_ratio 40% 20% Represents the percentage of MemTotal (total usable memory) that can consume dirty pages before all processes write dirty buffers back to the disk. When this value is reached, all I/O is blocked for all new write operations until dirty pages are flushed. If you set this parameter to a low value, the kernel flushes small write operations more often. If you set this parameter to higher values, small write operations stack up in the memory.
vm.swappiness 10 60 A high value of this parameter improves file system performance while aggressively swapping less active processes out of RAM. A low value avoids swapping processes out of memory, which usually decreases latency at the cost of I/O performance. For interactive applications, setting this parameter to a low value helps as it decreases response latency.
CPU governor Performance (sets the processor statically to the highest frequency within the borders of the scaling_min_freq and scaling_max_freq parameters) Ondemand (sets the processor frequency depending on the current system load) The processor raises and lowers its frequency based on the requirement. The performance governor parameter keeps a fixed high frequency. It does not change based on load. It is best for performance and consumes more energy. The value of the ondemand parameter increases the frequency quickly based on workload and reduces slowly when the workload is complete.