2017-04-25 14:04:07 -07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2018-01-05 14:53:30 -07:00
|
|
|
function configure_performance() {
|
|
|
|
echo -n "Placing all CPUs in performance mode..."
|
|
|
|
for governor in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
|
|
|
|
echo -n performance > $governor
|
|
|
|
done
|
|
|
|
echo "Done"
|
2017-04-25 14:04:07 -07:00
|
|
|
|
2018-01-05 14:55:14 -07:00
|
|
|
if [ -f "/sys/devices/system/cpu/intel_pstate/no_turbo" ]; then
|
|
|
|
echo -n "Disabling Turbo Boost..."
|
|
|
|
echo -n 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
|
|
|
|
echo "Done"
|
|
|
|
fi
|
|
|
|
|
2018-01-05 14:53:30 -07:00
|
|
|
echo -n "Disabling irqbalance service..."
|
|
|
|
service irqbalance stop 2> /dev/null
|
|
|
|
echo "Done"
|
2017-04-25 14:04:07 -07:00
|
|
|
|
2018-01-05 14:53:30 -07:00
|
|
|
echo -n "Moving all interrupts off of core 0..."
|
2019-10-10 07:48:25 +02:00
|
|
|
count=$(($(nproc) / 4))
|
2018-01-05 14:53:30 -07:00
|
|
|
cpumask="e"
|
2019-11-05 10:28:35 +01:00
|
|
|
for ((i=1; i<count; i++)); do
|
2019-10-10 07:48:25 +02:00
|
|
|
if [ $((i % 8)) -eq 0 ]; then
|
2018-01-05 14:53:30 -07:00
|
|
|
cpumask=",$cpumask"
|
|
|
|
fi
|
|
|
|
cpumask="f$cpumask"
|
|
|
|
done
|
|
|
|
for file in /proc/irq/*/smp_affinity; do
|
|
|
|
echo "$cpumask" > $file 2> /dev/null
|
|
|
|
done
|
|
|
|
echo "Done"
|
2017-04-25 14:04:07 -07:00
|
|
|
|
2018-01-05 14:55:43 -07:00
|
|
|
echo -n "Configuring kernel blk-mq for NVMe SSDs..."
|
2018-01-05 14:53:30 -07:00
|
|
|
for queue in /sys/block/nvme*n*/queue; do
|
|
|
|
if [ -f "$queue/nomerges" ]; then
|
|
|
|
echo "1" > $queue/nomerges
|
|
|
|
fi
|
2017-04-25 14:04:07 -07:00
|
|
|
|
2018-01-05 14:53:30 -07:00
|
|
|
if [ -f "$queue/io_poll" ]; then
|
|
|
|
echo "1" > $queue/io_poll
|
|
|
|
fi
|
2017-04-25 14:04:07 -07:00
|
|
|
|
2018-01-05 14:53:30 -07:00
|
|
|
if [ -f "$queue/io_poll_delay" ]; then
|
|
|
|
echo "-1" > $queue/io_poll_delay
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
echo "Done"
|
|
|
|
}
|
|
|
|
|
2018-01-04 10:54:11 -07:00
|
|
|
function reset_performance() {
|
|
|
|
echo -n "Placing all CPUs in powersave mode..."
|
|
|
|
for governor in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
|
|
|
|
echo -n powersave > $governor
|
|
|
|
done
|
|
|
|
echo "Done"
|
|
|
|
|
|
|
|
if [ -f "/sys/devices/system/cpu/intel_pstate/no_turbo" ]; then
|
|
|
|
echo -n "Enabling Turbo Boost..."
|
|
|
|
echo -n 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
|
|
|
|
echo "Done"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo -n "Enabling irqbalance service..."
|
|
|
|
service irqbalance start 2> /dev/null
|
|
|
|
echo "Done"
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ "$1" = "reset" ]; then
|
|
|
|
reset_performance
|
|
|
|
else
|
|
|
|
configure_performance
|
|
|
|
fi
|