From 7838d3e18e65db2d64263af47fc7aa99d5059de2 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 16 Dec 2019 13:10:36 -0500 Subject: [PATCH] qa/workunit/rbd: fixed QoS throughput unit parsing The 'rbd bench' command was recently modified to print IEC units instead of bytes/sec. This broke the handling for QoS throughput tests since it was incorrectly evaluating the available RBD throughput. Additionally, the QoS tests should use a "<=" comparison operator since the QoS is the upper-bound limit. Signed-off-by: Jason Dillaman --- qa/workunits/rbd/qos.sh | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/qa/workunits/rbd/qos.sh b/qa/workunits/rbd/qos.sh index b536fbc65001b..feb1d5144d40d 100755 --- a/qa/workunits/rbd/qos.sh +++ b/qa/workunits/rbd/qos.sh @@ -21,12 +21,15 @@ rbd_bench() { fi # parse `rbd bench` output for string like this: - # elapsed: 25 ops: 2560 ops/sec: 100.08 bytes/sec: 409928.13 + # elapsed: 25 ops: 2560 ops/sec: 100.08 bytes/sec: 409.13 MiB iops_bps=$(${timeout_cmd} rbd bench "${image}" \ --io-type ${type} --io-size 4K \ --io-total ${total} --rbd-cache=false \ --rbd_qos_${qos_type}_limit ${qos_limit} | - awk '/elapsed:/ {print int($6) ":" int($8)}') + awk '/elapsed:.* GiB/ {print int($6) ":" int($8) * 1024 * 1024 * 1024} + /elapsed:.* MiB/ {print int($6) ":" int($8) * 1024 * 1024} + /elapsed:.* KiB/ {print int($6) ":" int($8) * 1024} + /elapsed:.* B/ {print int($6) ":" int($8)}') eval ${iops_var_name}=${iops_bps%:*} eval ${bps_var_name}=${iops_bps#*:} } @@ -43,16 +46,16 @@ test "${iops_unlimited}" -ge 20 || exit 0 io_total=$((bps_unlimited * 30)) rbd_bench "${POOL}/${IMAGE}" write ${io_total} iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" write ${io_total} write_iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" write ${io_total} bps $((bps_unlimited / 2)) iops bps -test "${bps}" -lt $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${bps}" -le $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" write ${io_total} write_bps $((bps_unlimited / 2)) iops bps -test "${bps}" -lt $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${bps}" -le $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} iops 0 iops bps iops_unlimited=$iops @@ -63,24 +66,24 @@ test "${iops_unlimited}" -ge 20 || exit 0 io_total=$((bps_unlimited * 30)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} read_iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} bps $((bps_unlimited / 2)) iops bps -test "${bps}" -lt $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${bps}" -le $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} read_bps $((bps_unlimited / 2)) iops bps -test "${bps}" -lt $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${bps}" -le $((bps_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) # test a config override is applied rbd config image set "${POOL}/${IMAGE}" rbd_qos_iops_limit $((iops_unlimited / 4)) rbd_bench "${POOL}/${IMAGE}" read ${io_total} iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 4 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 4 * (100 + TOLERANCE_PRCNT) / 100)) rbd config image remove "${POOL}/${IMAGE}" rbd_qos_iops_limit rbd_bench "${POOL}/${IMAGE}" read ${io_total} iops $((iops_unlimited / 2)) iops bps -test "${iops}" -lt $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) +test "${iops}" -le $((iops_unlimited / 2 * (100 + TOLERANCE_PRCNT) / 100)) rbd rm "${POOL}/${IMAGE}" -- 2.39.5