Commit b9150897 authored by Karol Latecki's avatar Karol Latecki Committed by Tomasz Zawadzki
Browse files

test/nvme_perf: move fio config generation into one place



Configuration file generation was split into multiple
places/functions in scripts. Move it into a single
function. "time_based" fio parameter has been moved to
fio config template file as it is not configurable.
There is still a lot of room for improvement here, because
create_fio_config() function uses mixed local variables
(as function arguments) and global variables.

Change-Id: Ica3717d0d28692d24c861c2d32e729761c5c8647
Signed-off-by: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3345


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent d3e1aa05
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -211,6 +211,34 @@ function create_fio_config() {
	local disks_per_core=$((disk_no / no_cores))
	local disks_per_core_mod=$((disk_no % no_cores))

	# SPDK fio plugin supports submitting/completing I/Os to multiple SSDs from a single thread.
	# Therefore, the per thread queue depth is set to the desired IODEPTH/device X the number of devices per thread.
	# TODO: Shouldn't this be applicable to running kernel fio tests as well? Because, what's the difference?
	QD=$IODEPTH
	if [[ "$PLUGIN" =~ "spdk-plugin" ]] && [[ "$NOIOSCALING" = false ]]; then
		QD=$((IODEPTH * DISKNO))
	fi

	# Following part of this function still leverages global variables a lot.
	# It's a mix of local variables passed as aruments to function with global variables. This is messy.
	# TODO: Modify this to be consistent with how variables are used here. Aim for using only
	# local variables to get rid of globals as much as possible.
	desc="\"Test io_plugin=$PLUGIN Blocksize=${BLK_SIZE} Workload=$RW MIX=${MIX} qd=${IODEPTH}\""
	cp "$testdir/config.fio.tmp" "$testdir/config.fio"
	cat <<- EOF >> $testdir/config.fio
		description=$desc

		rw=$RW
		rwmixread=$MIX
		iodepth=$QD
		bs=$BLK_SIZE
		runtime=$RUNTIME
		ramp_time=$RAMP_TIME
		numjobs=$NUMJOBS
		log_avg_msec=$SAMPLING_INT

	EOF

	# For kernel dirver, each disk will be alligned with all cpus on the same NUMA node
	if [[ "$plugin" =~ "kernel" ]]; then
		for ((i = 0; i < disk_no; i++)); do
@@ -271,6 +299,9 @@ function create_fio_config() {
			echo "" >> $testdir/config.fio
		done
	fi

	echo "INFO: Generated fio configuration file:"
	cat $testdir/config.fio
}

function preconditioning() {
+3 −2
Original line number Diff line number Diff line
[global]
thread=1
group_reporting=1
direct=1
thread=1
norandommap=1
group_reporting=1
time_based=1
+0 −26
Original line number Diff line number Diff line
@@ -212,16 +212,6 @@ fi

#Run each workolad $REPEAT_NO times
for ((j = 0; j < REPEAT_NO; j++)); do
	cp $testdir/config.fio.tmp $testdir/config.fio
	echo "" >> $testdir/config.fio
	#The SPDK fio plugin supports submitting/completing I/Os to multiple SSDs from a single thread.
	#Therefore, the per thread queue depth is set to the desired IODEPTH/device X the number of devices per thread.
	if [[ "$PLUGIN" =~ "spdk-plugin" ]] && [[ "$NOIOSCALING" = false ]]; then
		qd=$((IODEPTH * DISKNO))
	else
		qd=$IODEPTH
	fi

	if [ $PLUGIN = "spdk-perf-bdev" ]; then
		run_bdevperf > $TMP_RESULT_FILE
		iops_disks=$((iops_disks + $(get_bdevperf_results iops)))
@@ -239,23 +229,7 @@ for ((j = 0; j < REPEAT_NO; j++)); do

		cp $TMP_RESULT_FILE $result_dir/perf_results_${MIX}_${PLUGIN}_${NO_CORES}cpus_${DATE}_${k}_disks_${j}.output
	else
		desc="Running Test: Blocksize=${BLK_SIZE} Workload=$RW MIX=${MIX} qd=${IODEPTH} io_plugin/driver=$PLUGIN"
		cat <<- EOF >> $testdir/config.fio
			rw=$RW
			rwmixread=$MIX
			iodepth=$qd
			bs=$BLK_SIZE
			runtime=$RUNTIME
			ramp_time=$RAMP_TIME
			numjobs=$NUMJOBS
			time_based=1
			description=$desc
			log_avg_msec=$SAMPLING_INT
		EOF

		create_fio_config $DISKNO $PLUGIN "$DISK_NAMES" "$DISKS_NUMA" "$CORES"
		echo "USING CONFIG:"
		cat $testdir/config.fio

		if [[ "$PLUGIN" =~ "spdk-plugin" ]]; then
			run_spdk_nvme_fio $PLUGIN "--output=$TMP_RESULT_FILE" \