xref: /spdk/scripts/prep_benchmarks.sh (revision ae7b5890ef728af40bd233a5011b924c482603bf)
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