1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. 4# All rights reserved. 5# 6 7testdir=$(readlink -f $(dirname $0)) 8rootdir=$(readlink -f $testdir/../../..) 9source $rootdir/test/common/autotest_common.sh 10source $rootdir/test/nvmf/common.sh 11 12function gen_accel_mlx5_json() { 13 accel_qp_size=${1:-256} 14 accel_num_requests=${2:-2047} 15 accel_driver=${3:-false} 16 17 jq . <<- JSON 18 { 19 "subsystems": [ 20 { 21 "subsystem": "accel", 22 "config": [ 23 { 24 "method": "mlx5_scan_accel_module", 25 "params": { 26 "qp_size": ${accel_qp_size}, 27 "num_requests": ${accel_num_requests}, 28 "enable_driver": ${accel_driver} 29 } 30 } 31 ] 32 } 33 ] 34 } 35 JSON 36} 37 38accelperf=$rootdir/build/examples/accel_perf 39 40$accelperf -c <(gen_accel_mlx5_json) -w crc32c -t 5 -m 0xf -y -C 1 -o 4096 -q 64 41$accelperf -c <(gen_accel_mlx5_json) -w crc32c -t 5 -m 0xf -y -C 33 -o 4096 -q 64 42$accelperf -c <(gen_accel_mlx5_json) -w crc32c -t 5 -m 0xf -y -C 33 -o 131072 -q 128 43# accel perf consumes to much memory in this test, lower qd and number of cores 44$accelperf -c <(gen_accel_mlx5_json) -w crc32c -t 5 -m 0x3 -y -C 77 -o 524288 -q 64 45 46$accelperf -c <(gen_accel_mlx5_json) -w copy_crc32c -t 5 -m 0xf -y -C 1 -o 4096 -q 64 47$accelperf -c <(gen_accel_mlx5_json) -w copy_crc32c -t 5 -m 0xf -y -C 33 -o 4096 -q 64 48$accelperf -c <(gen_accel_mlx5_json) -w copy_crc32c -t 5 -m 0xf -y -C 33 -o 131072 -q 128 49# accel perf consumes to much memory in this test, lower qd and number of cores 50$accelperf -c <(gen_accel_mlx5_json) -w copy_crc32c -t 5 -m 0x3 -y -C 77 -o 524288 -q 64 51 52# Test with small amount of resources 53$accelperf -c <(gen_accel_mlx5_json 16 2047) -w crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 54$accelperf -c <(gen_accel_mlx5_json 256 32) -w crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 55$accelperf -c <(gen_accel_mlx5_json 16 32) -w crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 56 57$accelperf -c <(gen_accel_mlx5_json 16 2047) -w copy_crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 58$accelperf -c <(gen_accel_mlx5_json 256 32) -w copy_crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 59$accelperf -c <(gen_accel_mlx5_json 16 32) -w copy_crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 60 61# Test copy operation with fragmented payload and platform driver enabled 62$accelperf -c <(gen_accel_mlx5_json 256 2047 true) -w crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 63$accelperf -c <(gen_accel_mlx5_json 256 2047 true) -w copy_crc32c -t 5 -m 0x3 -y -C 17 -o 131072 -q 128 64 65if [ "$TEST_TRANSPORT" != "tcp" ]; then 66 exit 0 67fi 68 69MALLOC_BDEV_SIZE=256 70MALLOC_BLOCK_SIZE=512 71 72function gen_accel_mlx5_crc_json() { 73 74 jq . <<- JSON 75 { 76 "subsystems": [ 77 { 78 "subsystem": "accel", 79 "config": [ 80 { 81 "method": "mlx5_scan_accel_module", 82 "params": { 83 } 84 } 85 ] 86 }, 87 { 88 "subsystem": "bdev", 89 "config": [ 90 { 91 "method": "bdev_nvme_attach_controller", 92 "params": { 93 "name": "Nvme0", 94 "trtype": "$TEST_TRANSPORT", 95 "adrfam": "IPv4", 96 "traddr": "$NVMF_FIRST_TARGET_IP", 97 "trsvcid": "$NVMF_PORT", 98 "subnqn": "nqn.2016-06.io.spdk:cnode0", 99 "ddgst": true 100 } 101 }, 102 { 103 "method": "bdev_wait_for_examine" 104 } 105 ] 106 } 107 ] 108 } 109 JSON 110} 111 112nvmftestinit 113nvmfappstart -m 0x3 114 115$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS 116$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc0 117$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode0 -a -s SPDK00000000000001 118$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode0 Malloc0 119$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode0 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 120 121# test crc32c with TCP data digest 122bdevperf=$rootdir/build/examples/bdevperf 123$bdevperf --json <(gen_accel_mlx5_crc_json) -q 128 -o 4096 -t 5 -w randrw -M 50 -m 0xc -r /var/tmp/bdev.sock 124$bdevperf --json <(gen_accel_mlx5_crc_json) -q 128 -o 131072 -t 5 -w randrw -M 50 -m 0xc -r /var/tmp/bdev.sock 125 126trap - SIGINT SIGTERM EXIT 127 128nvmftestfini 129