diff --git a/test/vhost/perf_bench/vhost_perf.sh b/test/vhost/perf_bench/vhost_perf.sh index e6e879894..e0aba42d8 100755 --- a/test/vhost/perf_bench/vhost_perf.sh +++ b/test/vhost/perf_bench/vhost_perf.sh @@ -395,10 +395,23 @@ for vm_num in $used_vms; do fi if [[ -n "$vm_throttle" ]]; then + # Check whether cgroups or cgroupsv2 is used on guest system + # Simple, naive & quick approach as it should do the trick for simple + # VMs used for performance tests + c_gr_ver=2 + if vm_exec "$vm_num" "grep '^cgroup ' /proc/mounts"; then + c_gr_ver=1 + fi block=$(printf '%s' $SCSI_DISK) major_minor=$(vm_exec "$vm_num" "cat /sys/block/$block/dev") - vm_exec "$vm_num" "echo \"$major_minor $vm_throttle\" > /sys/fs/cgroup/blkio/blkio.throttle.read_iops_device" - vm_exec "$vm_num" "echo \"$major_minor $vm_throttle\" > /sys/fs/cgroup/blkio/blkio.throttle.write_iops_device" + + if [[ $c_gr_ver == 1 ]]; then + vm_exec "$vm_num" "echo \"$major_minor $vm_throttle\" > /sys/fs/cgroup/blkio/blkio.throttle.read_iops_device" + vm_exec "$vm_num" "echo \"$major_minor $vm_throttle\" > /sys/fs/cgroup/blkio/blkio.throttle.write_iops_device" + elif [[ $c_gr_ver == 2 ]]; then + vm_exec "$vm_num" "echo '+io' > /sys/fs/cgroup/cgroup.subtree_control" + vm_exec "$vm_num" "echo \"$major_minor riops=$vm_throttle wiops=$vm_throttle\" > /sys/fs/cgroup/user.slice/io.max" + fi fi fio_disks+=" --vm=${vm_num}$(printf ':/dev/%s' $SCSI_DISK)"