xref: /spdk/test/ftl/fio.sh (revision 1b566ac7d9e9159257b881d7dc5675cd9b7e1961)
125503b96SKozlowski Mateusz#!/usr/bin/env bash
2eb53c232Spaul luse#  SPDX-License-Identifier: BSD-3-Clause
3eb53c232Spaul luse#  Copyright (C) 2018 Intel Corporation
4eb53c232Spaul luse#  All rights reserved.
5eb53c232Spaul luse#
625503b96SKozlowski Mateusztestdir=$(readlink -f $(dirname $0))
725503b96SKozlowski Mateuszrootdir=$(readlink -f $testdir/../..)
825503b96SKozlowski Mateuszsource $rootdir/test/common/autotest_common.sh
925503b96SKozlowski Mateuszsource $testdir/common.sh
1025503b96SKozlowski Mateusz
1125503b96SKozlowski Mateuszdeclare -A suite
1225503b96SKozlowski Mateuszsuite['basic']='randw-verify randw-verify-j2 randw-verify-depth128'
13156b48b2SKozlowski Mateuszsuite['extended']='drive-prep randw-verify-qd128-ext randw-verify-qd2048-ext randw randr randrw unmap'
148ffe1a75SKozlowski Mateuszsuite['nightly']='drive-prep randw-verify-qd256-nght randw-verify-qd256-nght randw-verify-qd256-nght'
1525503b96SKozlowski Mateusz
1625503b96SKozlowski Mateuszrpc_py=$rootdir/scripts/rpc.py
1725503b96SKozlowski Mateusz
1825503b96SKozlowski Mateuszfio_kill() {
1925503b96SKozlowski Mateusz	killprocess $svcpid
2025503b96SKozlowski Mateusz	rm -f $FTL_JSON_CONF
2125503b96SKozlowski Mateusz}
2225503b96SKozlowski Mateusz
2325503b96SKozlowski Mateuszdevice=$1
2425503b96SKozlowski Mateuszcache_device=$2
2525503b96SKozlowski Mateusztests=${suite[$3]}
2625503b96SKozlowski Mateuszuuid=$4
2725503b96SKozlowski Mateusztimeout=240
2825503b96SKozlowski Mateusz
2925503b96SKozlowski Mateuszif [[ $CONFIG_FIO_PLUGIN != y ]]; then
3025503b96SKozlowski Mateusz	echo "FIO not available"
3125503b96SKozlowski Mateusz	exit 1
3225503b96SKozlowski Mateuszfi
3325503b96SKozlowski Mateusz
3425503b96SKozlowski Mateuszif [ -z "$tests" ]; then
3525503b96SKozlowski Mateusz	echo "Invalid test suite '$2'"
3625503b96SKozlowski Mateusz	exit 1
3725503b96SKozlowski Mateuszfi
3825503b96SKozlowski Mateusz
3925503b96SKozlowski Mateuszexport FTL_BDEV_NAME=ftl0
4025503b96SKozlowski Mateuszexport FTL_JSON_CONF=$testdir/config/ftl.json
4125503b96SKozlowski Mateusz
4225503b96SKozlowski Mateusztrap "fio_kill; exit 1" SIGINT SIGTERM EXIT
4325503b96SKozlowski Mateusz
4425503b96SKozlowski Mateusz"$SPDK_BIN_DIR/spdk_tgt" -m 7 &
4525503b96SKozlowski Mateuszsvcpid=$!
4625503b96SKozlowski Mateuszwaitforlisten $svcpid
4725503b96SKozlowski Mateusz
4825503b96SKozlowski Mateuszsplit_bdev=$(create_base_bdev nvme0 $device $((1024 * 101)))
4925503b96SKozlowski Mateusznv_cache=$(create_nv_cache_bdev nvc0 $cache_device $split_bdev)
5025503b96SKozlowski Mateusz
51e7e5bc07SKozlowski Mateuszl2p_percentage=60
52e7e5bc07SKozlowski Mateuszif [ $SPDK_TEST_FTL_NIGHTLY -eq 1 ]; then
53e7e5bc07SKozlowski Mateusz	l2p_percentage=12
54e7e5bc07SKozlowski Mateuszfi
55e7e5bc07SKozlowski Mateusz
56e7e5bc07SKozlowski Mateuszl2p_dram_size_mb=$(($(get_bdev_size $split_bdev) * l2p_percentage / 100 / 1024))
57e7e5bc07SKozlowski Mateusz
5870c2bd88SKozlowski Mateuszif [ -z "$uuid" ]; then
5970c2bd88SKozlowski Mateusz	# First FTL creation takes longer due to scrubbing, so extending the timeout
60e7e5bc07SKozlowski Mateusz	$rpc_py -t $timeout bdev_ftl_create -b ftl0 -d $split_bdev -c $nv_cache --l2p_dram_limit $l2p_dram_size_mb
6170c2bd88SKozlowski Mateuszelse
6270c2bd88SKozlowski Mateusz	$rpc_py bdev_ftl_create -b ftl0 -d $split_bdev -c $nv_cache -u $uuid --l2p_dram_limit $l2p_dram_size_mb
6370c2bd88SKozlowski Mateuszfi
6425503b96SKozlowski Mateusz
6525503b96SKozlowski Mateuszwaitforbdev ftl0
6625503b96SKozlowski Mateusz
6725503b96SKozlowski Mateusz(
6825503b96SKozlowski Mateusz	echo '{"subsystems": ['
6925503b96SKozlowski Mateusz	$rpc_py save_subsystem_config -n bdev
7025503b96SKozlowski Mateusz	echo ']}'
7170c2bd88SKozlowski Mateusz) > $FTL_JSON_CONF
7225503b96SKozlowski Mateusz
73*1b566ac7Swanghailiangx$rpc_py bdev_ftl_unload -b ftl0
74*1b566ac7Swanghailiangx
7525503b96SKozlowski Mateuszkillprocess $svcpid
7625503b96SKozlowski Mateusztrap - SIGINT SIGTERM EXIT
7725503b96SKozlowski Mateusz
7825503b96SKozlowski Mateuszfor test in ${tests}; do
7925503b96SKozlowski Mateusz	timing_enter $test
8025503b96SKozlowski Mateusz	fio_bdev $testdir/config/fio/$test.fio
8125503b96SKozlowski Mateusz	timing_exit $test
8225503b96SKozlowski Mateuszdone
8325503b96SKozlowski Mateusz
8425503b96SKozlowski Mateuszrm -f $FTL_JSON_CONF
85818b9c05SArtur Paszkiewiczremove_shm
86