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