TUNED_PROFILES_CPU_PARTITIONING(7)

NAME
tuned-profiles-cpu-partitioning - Partition CPUs into isolated and housekeeping.

DESCRIPTION
The cpu-partitioning* profiles partition the system CPUs into isolated and housekeeping CPUs. These profiles are intended for latency-sensitive workloads. An isolated CPU incurs reduced jitter and reduced interruptions by the kernel. This is achieved by clearing the CPU from user-space processes, movable kernel threads, interruption handlers, kernel timers, etc. The only fixed source of interruptions is the 1Hz tick maintained by the kernel to keep CPU usage statistics. Otherwise, the incurred jitter and interruptions, if any, depend on the kernel services used by the thread running on the isolated CPU. Threads that run a busy loop without doing system calls, such as user-space drivers that access the hardware directly, are only expected to be interrupted once a second by the 1Hz tick. A housekeeping CPU is the opposite of an isolated CPU. Housekeeping CPUs run all daemons, shell processes, kernel threads, interruption handlers and work that can be dispatched from isolated CPUs such as disk I/O, RCU work, timers, etc.

PROFILES
The following profiles are provided:

cpu-partitioning
    Profile partitioning the system CPUs into isolated and housekeeping CPUs.

cpu-partitioning-powersave
    Profile similar to the cpu-partitioning profile, but with more flexibility on the C-states configuration.

CONFIGURATION
The cpu-partitioning profile is configured by editing the /etc/tuned/cpu-partitioning-variables.conf file. There are two configuration options:

isolated_cores=<CPU-LIST>
    List of CPUs to isolate. This option is mandatory. Any CPUs not in this list is automatically considered a housekeeping CPU.

no_balance_cores=<CPU-LIST>
    List of CPUs not be considered by the kernel when doing system wide process load-balancing. Usually, this list should be the same as isolated_cores=. This option is optional.

The cpu-partitioning-powersave profile is configured by editing the /etc/tuned/cpu-partitioning-powersave-variables.conf file. It supports the same options as the cpu-partitioning profile and one additional option:

max_power_state=<MAX_CSTATE>
    Maximum c-state the cores are allowed to enter. Can be expressed as it's name (C1E) or minimum wake-up latency, in micro-seconds. This parameter is provided as-is to `force_latency`. Default is set to "cstate.name:C1|10" to behave as cpu-partitioning profile.

IMPORTANT NOTES

*   The system should be rebooted after applying the cpu-partitioning* profiles for the first time or changing its configuration

*   The cpu-partitioning* profiles can be used in bare-metal and virtual machines

*   When using the cpu-partitioning* profiles in bare-metal, it is strongly recommended to "mask" the ksm and ksmtuned services in systemd (if they are installed). This can be done with the following command:
        # systemctl mask ksm ksmtuned

*   The cpu-partitioning* profiles do not use the kernel's isolcpus= feature

*   On a NUMA system, it is recommended to have at least one housekeeping CPU per NUMA node

*   The cpu-partitioning* profiles do not support isolating the L3 cache. This means that a housekeeping CPU can still thrash cache entries pertaining to isolated CPUs. It is recommended to use cache isolation technologies to remedy this problem, such as Intel's Cache Allocation Technology

*   Whether or not the kernel is going to be able to deactivate the tick on isolated CPUs depend on a few factors concerning the running thread behavior. Please, consult the nohz_full documentation in the kernel to learn more

*   The Linux real-time project has put together a document on the best practices for writing real-time applications. Even though the cpu-partitioning* profiles do not guarantee real-time response time, much of the techniques for writing real-time applications also apply for applications intended to run under the cpu-partitioning* profiles. Please, refer to this document at https://rt.wiki.kernel.org

FILES
/etc/tuned/cpu-partitioning-variables.conf
/etc/tuned/cpu-partitioning-powersave-variables.conf
/etc/tuned/tuned-main.conf

SEE ALSO
tuned(8) tuned-adm(8) tuned-profiles(7) tuned-profiles-atomic(7) tuned-profiles-sap(7) tuned-profiles-sap-hana(7) tuned-profiles-mssql(7) tuned-profiles-oracle(7) tuned-profiles-realtime(7) tuned-profiles-nfv-host(7) tuned-profiles-nfv-guest(7) tuned-profiles-compat(7) tuned-profiles-postgresql(7) tuned-profiles-openshift(7) tuned-profiles-spectrumscale-ece(7)

AUTHOR
Jaroslav Škarvada <jskarvad@redhat.com>
Luiz Capitulino <lcapitulino@redhat.com>
Andrew Theurer <atheurer@redhat.com>