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 <andreas.dilger@intel.com>
Change-Id: I09fbdb58e71d042c57b6bac1f6f1ef82243ebbe5
Reviewed-on: http://review.whamcloud.com/20698
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: James Nunez <james.a.nunez@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
test_248() {
local my_error=error
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
# 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
# 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; }
# 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
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
# 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 ] ||
# verify that fast read is 4 times faster for cache read
[ $(bc <<< "4 * $t_fast < $t_slow") -eq 1 ] ||
# 1k non-cache read
cancel_lru_locks osc
# 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
# 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"
# 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"
rm -f $DIR/$tfile
}
run_test 248 "fast read verification"
+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
#
# Re-read the partition table on failover partner host.
# After a ZFS storage pool is created on a shared device, the partition table