diff --git a/test/vhost/lvol/autotest.config b/test/vhost/lvol/autotest.config new file mode 100644 index 0000000000..4b9f6f9148 --- /dev/null +++ b/test/vhost/lvol/autotest.config @@ -0,0 +1,74 @@ +vhost_reactor_mask=0xfffffffff +vhost_master_core=0 + +VM_0_qemu_mask=0x2 +VM_0_qemu_numa_node=0 + +VM_1_qemu_mask=0x4 +VM_1_qemu_numa_node=0 + +VM_2_qemu_mask=0x8 +VM_2_qemu_numa_node=0 + +VM_3_qemu_mask=0x10 +VM_3_qemu_numa_node=0 + +VM_4_qemu_mask=0x20 +VM_4_qemu_numa_node=0 + +VM_5_qemu_mask=0x40 +VM_5_qemu_numa_node=0 + +VM_6_qemu_mask=0x80 +VM_6_qemu_numa_node=0 + +VM_7_qemu_mask=0x100 +VM_7_qemu_numa_node=0 + +VM_8_qemu_mask=0x200 +VM_8_qemu_numa_node=0 + +VM_9_qemu_mask=0x400 +VM_9_qemu_numa_node=0 + +VM_10_qemu_mask=0x800 +VM_10_qemu_numa_node=0 + +VM_11_qemu_mask=0x1000 +VM_11_qemu_numa_node=0 + +VM_12_qemu_mask=0x40000 +VM_12_qemu_numa_node=1 + +VM_13_qemu_mask=0x80000 +VM_13_qemu_numa_node=1 + +VM_14_qemu_mask=0x100000 +VM_14_qemu_numa_node=1 + +VM_15_qemu_mask=0x200000 +VM_15_qemu_numa_node=1 + +VM_16_qemu_mask=0x400000 +VM_16_qemu_numa_node=1 + +VM_17_qemu_mask=0x800000 +VM_17_qemu_numa_node=1 + +VM_18_qemu_mask=0x1000000 +VM_18_qemu_numa_node=1 + +VM_19_qemu_mask=0x2000000 +VM_19_qemu_numa_node=1 + +VM_20_qemu_mask=0x4000000 +VM_20_qemu_numa_node=1 + +VM_21_qemu_mask=0x8000000 +VM_21_qemu_numa_node=1 + +VM_22_qemu_mask=0x10000000 +VM_22_qemu_numa_node=1 + +VM_23_qemu_mask=0x20000000 +VM_23_qemu_numa_node=1 diff --git a/test/vhost/lvol/lvol_test.sh b/test/vhost/lvol/lvol_test.sh index 94c3d6a09b..06a8dd0394 100755 --- a/test/vhost/lvol/lvol_test.sh +++ b/test/vhost/lvol/lvol_test.sh @@ -14,6 +14,7 @@ max_disks="" ctrl_type="vhost_scsi" use_fs=false nested_lvol=false +distribute_cores=false base_bdev_size=10000 nest_bdev_size="" @@ -39,6 +40,9 @@ function usage() echo " (NVMe->lvol_store->lvol_bdev->lvol_store->lvol_bdev)" echo " Default: False" echo "-x set -x for script debug" + echo " --distribute-cores Use custom config file and run vhost controllers" + echo " on different CPU cores instead of single core." + echo " Default: False" exit 0 } @@ -52,6 +56,7 @@ while getopts 'xh-:' optchar; do max-disks=*) max_disks="${OPTARG#*=}" ;; ctrl-type=*) ctrl_type="${OPTARG#*=}" ;; nested-lvol) nested_lvol=true ;; + distribute-cores) distribute_cores=true ;; *) usage $0 "Invalid argument '$OPTARG'" ;; esac ;; @@ -75,7 +80,20 @@ is lower than number of requested disks for test ($max_disks)" exit 1 fi -trap 'error_exit "${FUNCNAME}" "${LINENO}"' ERR +if $distribute_cores; then + cp $COMMON_DIR/autotest.config $COMMON_DIR/autotest.config.bak + cp $BASE_DIR/autotest.config $COMMON_DIR/autotest.config + . $COMMON_DIR/common.sh +fi + +function restore_acfg() +{ + if $distribute_cores; then + mv $COMMON_DIR/autotest.config.bak $COMMON_DIR/autotest.config + fi +} + +trap 'restore_acfg; error_exit "${FUNCNAME}" "${LINENO}"' ERR vm_kill_all @@ -123,7 +141,7 @@ fi # For each VM create one lvol bdev on each 'normal' and nested lvol store for (( i=0; i<$vm_count; i++)); do bdevs=() - echo "INFO: Creating lvol bdevs for VM $j" + echo "INFO: Creating lvol bdevs for VM $i" for lvol_store in "${lvol_stores[@]}"; do lb_guid=$($rpc_py construct_lvol_bdev $lvol_store 10000) lvol_bdevs+=("$lb_guid") @@ -149,8 +167,13 @@ for (( i=0; i<$vm_count; i++)); do setup_cmd+=" --os=/home/sys_sgsw/vhost_vm_image.qcow2" # Create single SCSI controller or multiple BLK controllers for this VM + if $distribute_cores; then + mask="VM_${i}_qemu_mask" + mask_arg="--cpumask ${!mask}" + fi + if [[ "$ctrl_type" == "vhost_scsi" ]]; then - $rpc_py construct_vhost_scsi_controller naa.0.$i + $rpc_py construct_vhost_scsi_controller naa.0.$i $mask_arg for (( j=0; j<${#bdevs[@]}; j++)); do $rpc_py add_vhost_scsi_lun naa.0.$i $j ${bdevs[$j]} done @@ -158,7 +181,7 @@ for (( i=0; i<$vm_count; i++)); do elif [[ "$ctrl_type" == "vhost_blk" ]]; then disk="" for (( j=0; j<${#bdevs[@]}; j++)); do - $rpc_py construct_vhost_blk_controller naa.$j.$i ${bdevs[$j]} + $rpc_py construct_vhost_blk_controller naa.$j.$i ${bdevs[$j]} $mask_arg disk+="${j}_size_1500M:" done disk="${disk::-1}" @@ -266,3 +289,4 @@ $rpc_py get_luns echo "INFO: Shutting down SPDK vhost app..." spdk_vhost_kill +restore_acfg