xref: /spdk/scripts/perf/vhost/run_vhost_test.sh (revision 9dab033ad2d3ab22e65ac9a89fab71b0f726d9a2)
1008f8a86SMichal Berger#!/usr/bin/env bash
2eb53c232Spaul luse#  SPDX-License-Identifier: BSD-3-Clause
3eb53c232Spaul luse#  Copyright (C) 2022 Intel Corporation
4eb53c232Spaul luse#  All rights reserved.
5eb53c232Spaul luse#
6008f8a86SMichal Berger
70e70d6acSMichal Bergershopt -s nullglob extglob
80e70d6acSMichal Berger
9008f8a86SMichal Bergercurdir=$(readlink -f "$(dirname "$0")")
10008f8a86SMichal Bergerrootdir=$(readlink -f "$curdir/../../../")
11008f8a86SMichal Berger
12971451a8SMichal Berger# Allow for the fio_conf() to slurp extra config from the stdin.
13971451a8SMichal Bergerexec {fio_extra_conf}<&0
14971451a8SMichal Berger
15008f8a86SMichal Bergerfio_conf() {
16008f8a86SMichal Berger	cat <<- FIO
17008f8a86SMichal Berger		[global]
180ee37d25SMichal Berger		ioengine=${ioengine:-libaio}
19008f8a86SMichal Berger		thread=1
20008f8a86SMichal Berger		group_reporting=1
21008f8a86SMichal Berger		direct=1
22008f8a86SMichal Berger		verify=0
23008f8a86SMichal Berger		norandommap=1
240ee37d25SMichal Berger	FIO
25008f8a86SMichal Berger
260ee37d25SMichal Berger	if [[ $ioengine == io_uring ]]; then
270ee37d25SMichal Berger		cat <<- FIO_URING
280ee37d25SMichal Berger			fixedbufs=${fixedbufs:-1}
290ee37d25SMichal Berger			hipri=${hipri:-1}
300ee37d25SMichal Berger			registerfiles=${registerfiles:-1}
310ee37d25SMichal Berger			sqthread_poll=${sqthread_poll:-1}
320ee37d25SMichal Berger		FIO_URING
330ee37d25SMichal Berger	fi
340ee37d25SMichal Berger
35971451a8SMichal Berger	if [[ -e $fio_extra_conf ]]; then
363f912cf0SMichal Berger		# Overridden through cmdline|env
37971451a8SMichal Berger		cat "$fio_extra_conf"
38971451a8SMichal Berger	elif [[ ! -t $fio_extra_conf ]]; then
39971451a8SMichal Berger		# Attached to stdin
40971451a8SMichal Berger		cat <&"$fio_extra_conf"
41971451a8SMichal Berger	fi
42971451a8SMichal Berger
430ee37d25SMichal Berger	cat <<- FIO
44008f8a86SMichal Berger		[perf_test]
45008f8a86SMichal Berger		stonewall
46008f8a86SMichal Berger		description="Vhost performance test for a given workload"
47008f8a86SMichal Berger		bs=${blksize:-4k}
48008f8a86SMichal Berger		rw=${rw:-randread}
49008f8a86SMichal Berger		rwmixread=${rwmixread:-70}
50008f8a86SMichal Berger		iodepth=${iodepth:-128}
51008f8a86SMichal Berger		time_based=1
52008f8a86SMichal Berger		ramp_time=${ramptime:-10}
53008f8a86SMichal Berger		runtime=${runtime:-10}
54008f8a86SMichal Berger		numjobs=${numjobs:-1}
55008f8a86SMichal Berger		# This option is meant to be sed'ed by the vhost's run_fio()
56008f8a86SMichal Berger		filename=
57008f8a86SMichal Berger	FIO
58008f8a86SMichal Berger}
59008f8a86SMichal Berger
602be03354SKamil Godzwon(($#)) && eval "$*"
61008f8a86SMichal Berger
62*9dab033aSMichal Bergerperf_args+=(${vm_image:+--vm-image="$vm_image"})
63008f8a86SMichal Bergerperf_args+=("--ctrl-type=${ctrl_type:-spdk_vhost_scsi}")
64008f8a86SMichal Bergerperf_args+=(${split:+--use-split})
65008f8a86SMichal Bergerperf_args+=(${disk_map:+--disk-map="$disk_map"})
66008f8a86SMichal Bergerperf_args+=(${cpu_cfg:+--custom-cpu-cfg="$cpu_cfg"})
67008f8a86SMichal Berger
68c1e9ed6dSMichal Bergerif [[ $auto_cfg == yes || $auto_cfg_print == yes ]]; then
69c1e9ed6dSMichal Berger	if [[ $auto_cfg_print == yes ]]; then
70c1e9ed6dSMichal Berger		"$curdir/conf-generator" -p all || exit 1
71c1e9ed6dSMichal Berger		exit 0
72c1e9ed6dSMichal Berger	fi
73c1e9ed6dSMichal Berger	cpu_out=$curdir/auto-cpu.conf disk_out=$curdir/auto-disk.conf \
74c1e9ed6dSMichal Berger		"$curdir/conf-generator" -s || exit 1
75c1e9ed6dSMichal Berger	perf_args+=("--disk-map=$disk_out")
76c1e9ed6dSMichal Berger	perf_args+=("--custom-cpu-cfg=$cpu_out")
77c1e9ed6dSMichal Bergerfi
78c1e9ed6dSMichal Berger
79008f8a86SMichal Bergerif [[ -n $extra_params ]]; then
80008f8a86SMichal Berger	perf_args+=($extra_params)
81008f8a86SMichal Bergerfi
82008f8a86SMichal Berger
83fc1c9aafSMichal Bergerout_fio_conf=${out_fio_conf:-$curdir/fio.conf}
84fc1c9aafSMichal Bergerfio_conf > "$out_fio_conf"
85008f8a86SMichal Berger
86fc1c9aafSMichal Berger[[ -z $only_fio_conf ]] || exit 0
87fc1c9aafSMichal Berger
88fc1c9aafSMichal Bergertrap 'rm -f "$out_fio_conf"' EXIT
89008f8a86SMichal Berger
90008f8a86SMichal Berger"$rootdir/test/vhost/perf_bench/vhost_perf.sh" \
91fc1c9aafSMichal Berger	"${perf_args[@]}" --fio-jobs="$out_fio_conf"${fio_jobs:+",$fio_jobs"}
92