From 39582273a7a52fb1118ddcca4d62769f43c6f5cb Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Wed, 8 Jun 2016 17:33:31 -0600 Subject: [PATCH] LU-8248 tests: fix sanity test_248 VM checks Skip test on clients that do not have fast_read support. If running in any VM, not just kvm, ignore perf test failures. Test-Parameters: trivial Signed-off-by: Andreas Dilger Change-Id: I09fbdb58e71d042c57b6bac1f6f1ef82243ebbe5 Reviewed-on: http://review.whamcloud.com/20698 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Jinshan Xiong Reviewed-by: James Nunez Reviewed-by: Oleg Drokin --- lustre/tests/sanity.sh | 35 ++++++++++++++++++----------------- lustre/tests/test-framework.sh | 13 +++++++++++++ 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 4fec6de..dab737d 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -13769,33 +13769,34 @@ run_test 247e "mount .. as fileset" test_248() { local my_error=error - # This test case is time sensitive and maloo uses kvm to run auto test. + local fast_read_sav=$($LCTL get_param -n llite.*.fast_read 2>/dev/null) + [ -z "$fast_read_sav" ] && skip "no fast read support" && return + + # This test case is time sensitive and Maloo uses KVM to run autotest. # Therefore the complete time of I/O task is unreliable and depends on - # the work load on the host machine when the task is running. - which virt-what 2> /dev/null && [ "$(virt-what)" != "kvm" ] || - { echo "no virt-what installed or running in kvm; ignore error"; - my_error="error_ignore env=kvm"; } + # the workload on the host machine when the task is running. + local virt=$(running_in_vm) + [ -n "$virt" ] && echo "running in VM '$virt', ignore error" && + my_error="error_ignore env=$virt" # create a large file for fast read verification - dd if=/dev/zero of=$DIR/$tfile bs=128M count=1 > /dev/null 2>&1 + dd if=/dev/zero of=$DIR/$tfile bs=1M count=128 > /dev/null 2>&1 # make sure the file is created correctly $CHECKSTAT -s $((128*1024*1024)) $DIR/$tfile || { rm -f $DIR/$tfile; skip "file creation error" && return; } - local saved_fast_read=$($LCTL get_param -n llite.*.fast_read) - echo "Test 1: verify that fast read is 4 times faster on cache read" # small read with fast read enabled $LCTL set_param -n llite.*.fast_read=1 - local t_fast=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 | - awk '/real/ { print $2 }') + local t_fast=$(dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 | + awk '/copied/ { print $6 }') # small read with fast read disabled $LCTL set_param -n llite.*.fast_read=0 - local t_slow=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 | - awk '/real/ { print $2 }') + local t_slow=$(dd if=$DIR/$tfile of=/dev/null bs=4k 2>&1 | + awk '/copied/ { print $6 }') # verify that fast read is 4 times faster for cache read [ $(bc <<< "4 * $t_fast < $t_slow") -eq 1 ] || @@ -13806,19 +13807,19 @@ test_248() { # 1k non-cache read cancel_lru_locks osc - local t_1k=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 | - awk '/real/ { print $2 }') + local t_1k=$(dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 | + awk '/copied/ { print $6 }') # 1M non-cache read cancel_lru_locks osc - local t_1m=$(eval time -p dd if=$DIR/$tfile of=/dev/null bs=1M 2>&1 | - awk '/real/ { print $2 }') + local t_1m=$(dd if=$DIR/$tfile of=/dev/null bs=1k 2>&1 | + awk '/copied/ { print $6 }') # verify that big IO is not 4 times faster than small IO [ $(bc <<< "4 * $t_1k >= $t_1m") -eq 1 ] || $my_error "bigger IO is way too fast: $t_1k vs $t_1m" - $LCTL set_param -n llite.*.fast_read=$saved_fast_read + $LCTL set_param -n llite.*.fast_read=$fast_read_sav rm -f $DIR/$tfile } run_test 248 "fast read verification" diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 08d19ec..fed6964 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -978,6 +978,19 @@ facet_vdevice() { echo -n $device } +running_in_vm() { + local virt=$(virt-what 2> /dev/null) + + [ $? -eq 0 ] && [ -n "$virt" ] && { echo $virt; return; } + + virt=$(dmidecode -s system-product-name | awk '{print $1}') + + case $virt in + VMware|KVM|VirtualBox|Parallels) echo ${virt,,} ;; + *) ;; + esac +} + # # Re-read the partition table on failover partner host. # After a ZFS storage pool is created on a shared device, the partition table -- 1.8.3.1