Server

tuned Performance Profiles

By Prabath Thalangama· October 24, 2026· 3 min read
#linux#performance#tuning

Introduction

tuned is a daemon (default on RHEL) that applies a coherent set of performance tweaks based on a profile. Instead of hand-editing sysctl, CPU governor, I/O scheduler, and THP settings separately, you pick a profile that matches the machine's role.

The built-in profiles

tuned-adm list
Profile For
balanced desktop / general (default) — moderate power saving
throughput-performance servers where throughput > latency & power; disables power saving, tunes VM/network for bulk work
latency-performance low, predictable latency — CPU governor performance, low dirty_ratio, disables THP
network-latency latency-performance + network stack tuning, busy-poll
network-throughput large buffers, tuned for bulk network transfer
virtual-guest a VM — adjusts dirty ratios and readahead for virtualized I/O
virtual-host a hypervisor
powersave laptops on battery
accelerator-performance, hpc-compute GPU / HPC nodes
tuned-adm active                       # current profile
tuned-adm recommend                    # what tuned thinks this machine should use
tuned-adm profile throughput-performance
tuned-adm verify                       # did all settings actually apply?

What a profile actually changes

A profile is a set of plugins. throughput-performance for example:

  • CPU — governor performance (no frequency scaling down), energy_perf_bias performance.
  • sysctl — vm.dirty_ratio, vm.dirty_background_ratio, vm.swappiness=10, kernel.sched_*, net.core.*mem_max bumped.
  • Disk — I/O scheduler (mq-deadline/none for SSD/NVMe), readahead.
  • Transparent Hugepages — usually left always for throughput, set to never for latency/DB profiles.
  • Kernel command-line additions (via tuned bootloader plugin) — e.g. skew_tick, isolated CPUs — these need a reboot.

Inspect a profile:

cat /usr/lib/tuned/throughput-performance/tuned.conf

A custom profile

Inherit from a built-in and override:

# /etc/tuned/myapp/tuned.conf
[main]
summary=App server: throughput base, DB-friendly memory, no THP
include=throughput-performance

[vm]
transparent_hugepages=never

[sysctl]
vm.swappiness=1
vm.max_map_count=262144
net.core.somaxconn=4096
net.ipv4.tcp_congestion_control=bbr

[disk]
readahead=4096

[bootloader]
cmdline_myapp=+processor.max_cstate=1 intel_idle.max_cstate=0
tuned-adm profile myapp
tuned-adm verify
# if [bootloader] changed the cmdline:
grubby --info=ALL | grep args      # confirm, then reboot

Files in /etc/tuned/ override /usr/lib/tuned/.

Verification and troubleshooting

tuned-adm active
tuned-adm verify                    # reports any setting that doesn't match the profile
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
cat /sys/block/nvme0n1/queue/scheduler
cat /sys/kernel/mm/transparent_hugepage/enabled
sysctl vm.swappiness net.ipv4.tcp_congestion_control
journalctl -u tuned
  • tuned-adm verify reports mismatches — something else is overriding tuned: a /etc/sysctl.d/ file (loaded after tuned, or before — order matters), a cloud-init bootcmd, another daemon, or a cpupower/cpufreq service. tuned re-applies on its own schedule but a persistent override wins.
  • Profile applied but performance unchanged — the profile isn't the bottleneck (the app, the disk, the network are), or the machine role doesn't match the profile (running powersave on a server, or virtual-guest on bare metal).
  • [bootloader] cmdline changes not taking effect — those need a reboot; tuned-adm verify will flag the cmdline mismatch until then.
  • Latency profile hurt throughput (or vice versa) — expected trade-off. THP never helps DB/latency but can reduce throughput for some workloads; test with your actual load.
  • tuned fighting a manual sysctl -w — tuned owns the settings in its profile; put your override in a custom profile's [sysctl] section, not in /etc/sysctl.d/ where it's ambiguous.
  • Cloud instance recommends virtual-guest — good default; add a custom profile inheriting it for app-specific sysctl.
PrabathStuck on something this site can't fix?Reach out to Prabath directly on LinkedIn.