#!/usr/bin/env bash # SPDX-License-Identifier: BSD-3-Clause # Copyright (C) 2022 Intel Corporation # All rights reserved. # curdir=$(readlink -f "$(dirname "$0")") rootdir=$(readlink -f "$curdir/../../../") source "$rootdir/test/vhost/common.sh" # Allow for the fio_conf() to slurp extra config from the stdin. exec {fio_extra_conf}<&0 fio_conf() { cat <<- FIO [global] ioengine=${ioengine:-libaio} thread=1 group_reporting=1 direct=1 verify=0 norandommap=1 FIO if [[ $ioengine == io_uring ]]; then cat <<- FIO_URING fixedbufs=${fixedbufs:-1} hipri=${hipri:-1} registerfiles=${registerfiles:-1} sqthread_poll=${sqthread_poll:-1} FIO_URING fi if [[ -e $fio_extra_conf ]]; then # Overridden through cmdline|env cat "$fio_extra_conf" elif [[ ! -t $fio_extra_conf ]]; then # Attached to stdin cat <&"$fio_extra_conf" fi cat <<- FIO [perf_test] stonewall description="Vhost performance test for a given workload" bs=${blksize:-4k} rw=${rw:-randread} rwmixread=${rwmixread:-70} iodepth=${iodepth:-128} time_based=1 ramp_time=${ramptime:-10} runtime=${runtime:-10} numjobs=${numjobs:-1} # This option is meant to be sed'ed by the vhost's run_fio() filename= FIO } (($#)) && eval "$*" perf_args+=("--vm-image=${vm_image:-$VM_IMAGE}") perf_args+=("--ctrl-type=${ctrl_type:-spdk_vhost_scsi}") perf_args+=(${split:+--use-split}) perf_args+=(${disk_map:+--disk-map="$disk_map"}) perf_args+=(${cpu_cfg:+--custom-cpu-cfg="$cpu_cfg"}) if [[ -n $extra_params ]]; then perf_args+=($extra_params) fi out_fio_conf=${out_fio_conf:-$curdir/fio.conf} fio_conf > "$out_fio_conf" [[ -z $only_fio_conf ]] || exit 0 trap 'rm -f "$out_fio_conf"' EXIT "$rootdir/test/vhost/perf_bench/vhost_perf.sh" \ "${perf_args[@]}" --fio-jobs="$out_fio_conf"${fio_jobs:+",$fio_jobs"}