nvme/perf: add bdevperf
Adding capability to use bdevperf to this script. We need to use bdevperf to demonstrate performance of up to 10 million IOPS per core. fio overhead limits that number to less than 3 million IOPS/core. Signed-off-by: John Kariuki <John.K.Kariuki@intel.com> Change-Id: Iad81fc73a961b05e168befbed01bf800b9888564 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459695 Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
ed486dc4ef
commit
4af44c234f
@ -5,6 +5,7 @@ BASE_DIR=$(readlink -f $(dirname $0))
|
||||
ROOT_DIR=$(readlink -f $BASE_DIR/../../..)
|
||||
PLUGIN_DIR_NVME=$ROOT_DIR/examples/nvme/fio_plugin
|
||||
PLUGIN_DIR_BDEV=$ROOT_DIR/examples/bdev/fio_plugin
|
||||
BDEVPERF_DIR=$ROOT_DIR/test/bdev/bdevperf
|
||||
. $ROOT_DIR/scripts/common.sh || exit 1
|
||||
. $ROOT_DIR/test/common/autotest_common.sh
|
||||
NVME_FIO_RESULTS=$BASE_DIR/result.json
|
||||
@ -50,7 +51,7 @@ function get_numa_node(){
|
||||
echo $(cat /sys/bus/pci/devices/$bdf/numa_node)
|
||||
fi
|
||||
done
|
||||
elif [ "$plugin" = "bdev" ]; then
|
||||
elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then
|
||||
local bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf)
|
||||
for name in $disks; do
|
||||
local bdev_bdf=$(jq -r ".[] | select(.name==\"$name\").driver_specific.nvme.pci_address" <<< $bdevs)
|
||||
@ -72,7 +73,7 @@ function get_disks(){
|
||||
echo "$bdf"
|
||||
fi
|
||||
done
|
||||
elif [ "$plugin" = "bdev" ]; then
|
||||
elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then
|
||||
local bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf)
|
||||
echo $(jq -r '.[].name' <<< $bdevs)
|
||||
else
|
||||
@ -239,6 +240,21 @@ function get_results(){
|
||||
esac
|
||||
}
|
||||
|
||||
function get_bdevperf_results(){
|
||||
case "$1" in
|
||||
iops)
|
||||
iops=$(grep Total $NVME_FIO_RESULTS | awk -F 'Total' '{print $2}' | awk '{print $2}')
|
||||
iops=${iops%.*}
|
||||
echo $iops
|
||||
;;
|
||||
bw_Kibs)
|
||||
bw_MBs=$(grep Total $NVME_FIO_RESULTS | awk -F 'Total' '{print $2}' | awk '{print $4}')
|
||||
bw_MBs=${bw_MBs%.*}
|
||||
echo $(( $bw_MBs * 1024 ))
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function run_spdk_nvme_fio(){
|
||||
local plugin=$1
|
||||
echo "** Running fio test, this can take a while, depending on the run-time and ramp-time setting."
|
||||
@ -259,6 +275,12 @@ function run_nvme_fio(){
|
||||
sleep 1
|
||||
}
|
||||
|
||||
function run_bdevperf(){
|
||||
echo "** Running bdevperf test, this can take a while, depending on the run-time setting."
|
||||
echo $($BDEVPERF_DIR/bdevperf -c $BASE_DIR/bdev.conf -q $IODEPTH -o $BLK_SIZE -w $RW -M $MIX -t $RUNTIME)
|
||||
sleep 1
|
||||
}
|
||||
|
||||
function usage()
|
||||
{
|
||||
set +x
|
||||
@ -316,7 +338,7 @@ done
|
||||
trap 'rm -f *.state $BASE_DIR/bdev.conf; print_backtrace' ERR SIGTERM SIGABRT
|
||||
mkdir -p $BASE_DIR/results
|
||||
date="$(date +'%m_%d_%Y_%H%M%S')"
|
||||
if [ $PLUGIN = "bdev" ]; then
|
||||
if [[ $PLUGIN == "bdev" ]] || [[ $PLUGIN == "bdevperf" ]]; then
|
||||
$ROOT_DIR/scripts/gen_nvme.sh >> $BASE_DIR/bdev.conf
|
||||
fi
|
||||
|
||||
|
@ -88,6 +88,12 @@ do
|
||||
qd=$IODEPTH
|
||||
fi
|
||||
|
||||
if [ $PLUGIN = "bdevperf" ]; then
|
||||
run_bdevperf > $NVME_FIO_RESULTS
|
||||
iops_disks[$k]=$((${iops_disks[$k]} + $(get_bdevperf_results iops)))
|
||||
bw[$k]=$((${bw[$k]} + $(get_bdevperf_results bw_Kibs)))
|
||||
cp $NVME_FIO_RESULTS $BASE_DIR/results/$result_dir/perf_results_${MIX}_${PLUGIN}_${no_cores}cpus_${date}_${k}_disks_${j}.output
|
||||
else
|
||||
create_fio_config $k $PLUGIN "$disk_names" "$disks_numa" "$cores"
|
||||
desc="Running Test: Blocksize=${BLK_SIZE} Workload=$RW MIX=${MIX} qd=${IODEPTH} io_plugin/driver=$PLUGIN"
|
||||
|
||||
@ -116,6 +122,7 @@ do
|
||||
cp $NVME_FIO_RESULTS $BASE_DIR/results/$result_dir/perf_results_${MIX}_${PLUGIN}_${no_cores}cpus_${date}_${k}_disks_${j}.json
|
||||
cp $BASE_DIR/config.fio $BASE_DIR/results/$result_dir/config_${MIX}_${PLUGIN}_${no_cores}cpus_${date}_${k}_disks_${j}.fio
|
||||
rm -f $BASE_DIR/config.fio
|
||||
fi
|
||||
|
||||
#if tested on only one number of disk
|
||||
if $ONEWORKLOAD; then
|
||||
@ -127,12 +134,23 @@ done
|
||||
for (( k=$DISKNO; k >= 1; k-=2 ))
|
||||
do
|
||||
iops_disks[$k]=$((${iops_disks[$k]} / $REPEAT_NO))
|
||||
|
||||
if [ $PLUGIN != "bdevperf" ]; then
|
||||
mean_lat_disks_usec[$k]=$((${mean_lat_disks_usec[$k]} / $REPEAT_NO))
|
||||
p99_lat_disks_usec[$k]=$((${p99_lat_disks_usec[$k]} / $REPEAT_NO))
|
||||
p99_99_lat_disks_usec[$k]=$((${p99_99_lat_disks_usec[$k]} / $REPEAT_NO))
|
||||
stdev_disks_usec[$k]=$((${stdev_disks_usec[$k]} / $REPEAT_NO))
|
||||
mean_slat_disks_usec[$k]=$((${mean_slat_disks_usec[$k]} / $REPEAT_NO))
|
||||
mean_clat_disks_usec[$k]=$((${mean_clat_disks_usec[$k]} / $REPEAT_NO))
|
||||
else
|
||||
mean_lat_disks_usec[$k]=0
|
||||
p99_lat_disks_usec[$k]=0
|
||||
p99_99_lat_disks_usec[$k]=0
|
||||
stdev_disks_usec[$k]=0
|
||||
mean_slat_disks_usec[$k]=0
|
||||
mean_clat_disks_usec[$k]=0
|
||||
fi
|
||||
|
||||
bw[$k]=$((${bw[$k]} / $REPEAT_NO))
|
||||
|
||||
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s\n" ${k} ${iops_disks[$k]} ${mean_lat_disks_usec[$k]} ${p99_lat_disks_usec[$k]}\
|
||||
|
Loading…
Reference in New Issue
Block a user