1#!/usr/bin/env bash 2 3function configure_performance() { 4 echo -n "Placing all CPUs in performance mode..." 5 for governor in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do 6 echo -n performance > $governor 7 done 8 echo "Done" 9 10 if [ -f "/sys/devices/system/cpu/intel_pstate/no_turbo" ]; then 11 echo -n "Disabling Turbo Boost..." 12 echo -n 1 > /sys/devices/system/cpu/intel_pstate/no_turbo 13 echo "Done" 14 fi 15 16 echo -n "Disabling irqbalance service..." 17 service irqbalance stop 2> /dev/null 18 echo "Done" 19 20 echo -n "Moving all interrupts off of core 0..." 21 count=$(expr $(nproc) / 4) 22 cpumask="e" 23 for ((i=1; i<$count; i++)); do 24 if [ $(expr $i % 8) -eq 0 ]; then 25 cpumask=",$cpumask" 26 fi 27 cpumask="f$cpumask" 28 done 29 for file in /proc/irq/*/smp_affinity; do 30 echo "$cpumask" > $file 2> /dev/null 31 done 32 echo "Done" 33 34 echo -n "Configuring kernel blk-mq for NVMe SSDs..." 35 for queue in /sys/block/nvme*n*/queue; do 36 if [ -f "$queue/nomerges" ]; then 37 echo "1" > $queue/nomerges 38 fi 39 40 if [ -f "$queue/io_poll" ]; then 41 echo "1" > $queue/io_poll 42 fi 43 44 if [ -f "$queue/io_poll_delay" ]; then 45 echo "-1" > $queue/io_poll_delay 46 fi 47 done 48 echo "Done" 49} 50 51function reset_performance() { 52 echo -n "Placing all CPUs in powersave mode..." 53 for governor in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do 54 echo -n powersave > $governor 55 done 56 echo "Done" 57 58 if [ -f "/sys/devices/system/cpu/intel_pstate/no_turbo" ]; then 59 echo -n "Enabling Turbo Boost..." 60 echo -n 0 > /sys/devices/system/cpu/intel_pstate/no_turbo 61 echo "Done" 62 fi 63 64 echo -n "Enabling irqbalance service..." 65 service irqbalance start 2> /dev/null 66 echo "Done" 67} 68 69if [ "$1" = "reset" ]; then 70 reset_performance 71else 72 configure_performance 73fi 74