#
# tuned configuration
#
# Dependencies:
#
# - tuna
# - awk
# - wc

[main]
summary=Optimize for KVM guests running realtime workloads
include=realtime

[variables]
# User is responsible for adding isolated_cores=X-Y to realtime-virtual-host-variables.conf
include=/etc/tuned/realtime-virtual-host-variables.conf

isolated_cores_assert_check = \\${isolated_cores}
# Fail if isolated_cores are not set
assert1=${f:assertion_non_equal:isolated_cores are set:${isolated_cores}:${isolated_cores_assert_check}}

isolated_cores_expanded=${f:cpulist_unpack:${isolated_cores}}
isolated_cores_online_expanded=${f:cpulist_online:${isolated_cores}}

# Fail if isolated_cores contains CPUs which are not online
assert2=${f:assertion:isolated_cores contains online CPU(s):${isolated_cores_expanded}:${isolated_cores_online_expanded}}

[scheduler]
# group.group_name=rule_priority:scheduler_policy:scheduler_priority:core_affinity_in_hex:process_name_regex
# for i in `pgrep ksoftirqd` ; do grep Cpus_allowed_list /proc/$i/status ; done
group.ksoftirqd=0:f:2:*:ksoftirqd.*

# for i in `pgrep rcuc` ; do grep Cpus_allowed_list /proc/$i/status ; done
group.rcuc=0:f:4:*:rcuc.*

# for i in `pgrep rcub` ; do grep Cpus_allowed_list /proc/$i/status ; done
group.rcub=0:f:4:*:rcub.*

# for i in `pgrep ktimersoftd` ; do grep Cpus_allowed_list /proc/$i/status ; done
group.ktimersoftd=0:f:3:*:ktimersoftd.*

ps_blacklist=ksoftirqd.*;rcuc.*;rcub.*;ktimersoftd.*;.*pmd.*;.*PMD.*;^DPDK;.*qemu-kvm.*

[script]
script=${i:PROFILE_DIR}/script.sh

[bootloader]
cmdline_rvh=+nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores}
