From be186f641e2bccba29d1e30f23f38f69c5c420c1 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 25 Apr 2017 14:04:07 -0700 Subject: [PATCH] fio: Add a script to prep a system for benchmarks Also update the example fio file Change-Id: I2a9074d524072e95340cc0e87041e87e3bb7d4f8 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/362069 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris --- examples/nvme/fio_plugin/full_bench.fio | 43 +++++++++++++++++++++++++ scripts/prep_benchmarks.sh | 41 +++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 examples/nvme/fio_plugin/full_bench.fio create mode 100755 scripts/prep_benchmarks.sh diff --git a/examples/nvme/fio_plugin/full_bench.fio b/examples/nvme/fio_plugin/full_bench.fio new file mode 100644 index 000000000..af4fd3756 --- /dev/null +++ b/examples/nvme/fio_plugin/full_bench.fio @@ -0,0 +1,43 @@ +[global] +ioengine=./examples/nvme/fio_plugin/fio_plugin +thread=1 +group_reporting=1 +direct=1 +verify=0 +norandommap=1 +cpumask=1 +percentile_list=50:99:99.9:99.99:99.999 + +[precondition-trim] +description="Trim the entire device" +rw=trim +iodepth=128 +bs=1M + +[precondition-sequential] +stonewall +description="Sequentially write to the device twice" +rw=write +iodepth=128 +bs=128k +loops=2 + +[4k_randwrite_qd1] +stonewall +description="4KiB Random Write QD=1" +bs=4k +rw=randwrite +iodepth=1 +time_based=1 +ramp_time=60 +runtime=240 + +[4k_randread_qd1] +stonewall +description="4KiB Random Read QD=1" +bs=4k +rw=randread +iodepth=1 +time_based=1 +ramp_time=60 +runtime=240 diff --git a/scripts/prep_benchmarks.sh b/scripts/prep_benchmarks.sh new file mode 100755 index 000000000..4ecefb6c9 --- /dev/null +++ b/scripts/prep_benchmarks.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +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" + +echo -n "Disabling irqbalance service..." +service irqbalance stop 2> /dev/null +echo "Done" + +echo -n "Moving all interrupts off of core 0..." +count=`expr $(nproc) / 4` +cpumask="e" +for ((i=1; i<$count; i++)); do + if [ `expr $i % 8` -eq 0 ]; then + cpumask=",$cpumask" + fi + cpumask="f$cpumask" +done +for file in /proc/irq/*/smp_affinity; do + echo "$cpumask" > $file 2> /dev/null +done +echo "Done" + +echo -n "Configuring kernel blk-mq for for NVMe SSDs..." +for queue in /sys/block/nvme*n*/queue; do + if [ -f "$queue/nomerges" ]; then + echo "1" > $queue/nomerges + fi + + if [ -f "$queue/io_poll" ]; then + echo "1" > $queue/io_poll + fi + + if [ -f "$queue/io_poll_delay" ]; then + echo "-1" > $queue/io_poll_delay + fi +done +echo "Done"