diff options
-rwxr-xr-x | common/scripts/mmtests.sh | 76 | ||||
-rw-r--r-- | ubuntu/mmtests.yaml | 9 |
2 files changed, 67 insertions, 18 deletions
diff --git a/common/scripts/mmtests.sh b/common/scripts/mmtests.sh index 3a43968..eb5ac34 100755 --- a/common/scripts/mmtests.sh +++ b/common/scripts/mmtests.sh @@ -22,6 +22,8 @@ # Milosz Wasilewski <milosz.wasilewski@linaro.org> # Naresh Kamboju <naresh.kamboju@linaro.org> # + +set -x TESTS=$1 KernelVersion=`uname -r` DIR=`pwd` @@ -29,40 +31,51 @@ DIR=`pwd` # Download tests directly, rather than use the customized mirror. sed -i '/WEBROOT/s/^/#/' $DIR/shellpacks/common-config.sh +# Calculate the mean, min and max of data stored in a file +min_max_mean(){ + eval `awk '{if(min=="") {min=max=$1}; if($1>max) {max=$1}; if($1< min) {min=$1}; total+=$1; count+=1} \ + END {print "mean="total/count, "min="min, "max="max}' $1` +} + # Result parser -result_parse(){ +result_parser(){ local TEST_ID=$1 case $TEST_ID in + # dd bench dd|dd-tmpfs|ddsync) - if [ -z `grep copied $DIR/work/log/loopdd-$KernelVersion/noprofile/mmtests.log` ]; then + if [ -z "`grep copied $DIR/work/log/loopdd-$KernelVersion/noprofile/mmtests.log`" ]; then lava-test-case $TEST_ID --result fail else - units=`grep copied $DIR/work/log/loopdd-$KernelVersion/noprofile/mmtests.log | tail -1 | awk '{print $9}'` + dd_units=`grep copied $DIR/work/log/loopdd-$KernelVersion/noprofile/mmtests.log | tail -1 | awk '{print $9}'` # Get the min, max and mean scores of the 30 iterations grep copied $DIR/work/log/loopdd-$KernelVersion/noprofile/mmtests.log | awk '{print $8}' > $DIR/$TEST_ID-data.txt - eval `awk '{if(min=="") {min=max=$1}; if($1>max) {max=$1}; if($1< min) {min=$1}; total+=$1; count+=1} \ - END {print "mean="total/count, "min="min, "max="max}' $DIR/$TEST_ID-data.txt` - lava-test-case $TEST_ID-min --result pass --measurement $min --units $units - lava-test-case $TEST_ID-max --result pass --measurement $max --units $units - lava-test-case $TEST_ID-mean --result pass --measurement $mean --units $units + min_max_mean $DIR/$TEST_ID-data.txt + lava-test-case $TEST_ID-min --result pass --measurement $min --units $dd_units + lava-test-case $TEST_ID-max --result pass --measurement $max --units $dd_units + lava-test-case $TEST_ID-mean --result pass --measurement $mean --units $dd_units + fi + if [ "$TEST_ID" = "dd-tmpfs" ]; then + umount $DIR/work/testdisk fi ;; + # Measure the latency in the Linux network stack between kernel and user space. ku-latency) - if [ -z `grep "Average.*us" $DIR/work/log/ku_latency-$KernelVersion/noprofile/ku-latency.log` ]; then + if [ -z "`grep "Average.*us" $DIR/work/log/ku_latency-$KernelVersion/noprofile/ku-latency.log`" ]; then lava-test-case $TEST_ID --result fail else # Use the final total average value as measurement ku_total_average=`grep "Total Average.*us" $DIR/work/log/ku_latency-$KernelVersion/noprofile/ku-latency.log \ - | tail -1 | awk '{print $6}'` + | tail -1 | awk '{print $6}'` # Use the final rolling average value as measurement ku_rolling_average=`grep "Rolling Average.*us" $DIR/work/log/ku_latency-$KernelVersion/noprofile/ku-latency.log \ - | tail -1 | awk '{print $6}'` + | tail -1 | awk '{print $6}'` lava-test-case $TEST_ID-total-average --result pass --measurement $ku_total_average --units us lava-test-case $TEST_ID-rolling-average --result pass --measurement $ku_rolling_average --units us fi ;; + # Measure the performance of various system and library calls. libmicro) - if [ -z `grep Running $DIR/work/log/libmicro-$KernelVersion/noprofile/mmtests.log` ]; then + if [ -z "`grep Running $DIR/work/log/libmicro-$KernelVersion/noprofile/mmtests.log`" ]; then lava-test-case $TEST_ID --result fail else for i in `ls $DIR/work/log/libmicro-$KernelVersion/noprofile/memset*`; do @@ -73,16 +86,47 @@ result_parse(){ done fi ;; + # vm scalability test, measure spread of dd performance + vmscale) + if [ -z "`grep copied $DIR/work/log/vmscale-$KernelVersion/noprofile/lru-file-ddspread.log`" ]; then + lava-test-case $TEST_ID --result fail + else + vmscale_units=`grep copied $DIR/work/log/vmscale-$KernelVersion/noprofile/lru-file-ddspread.log | tail -1 | awk '{print $9}'` + # Get the min, max and mean scores of all iterations, the number of iterations equal to the number of processors. + grep copied $DIR/work/log/vmscale-$KernelVersion/noprofile/lru-file-ddspread.log | awk '{print $8}' > $DIR/$TEST_ID-data.txt + min_max_mean $DIR/$TEST_ID-data.txt + lava-test-case $TEST_ID-ddspread-min --result pass --measurement $min --units $vmscale_units + lava-test-case $TEST_ID-ddspread-max --result pass --measurement $max --units $vmscale_units + lava-test-case $TEST_ID-ddspread-mean --result pass --measurement $mean --units $vmscale_units + fi + ;; + # Time how long it takes to allocate a large buffer + timedalloc) + if [ -z "`grep elapsed $DIR/work/log/timedalloc-$KernelVersion/noprofile/time`" ]; then + lava-test-case $TEST_ID --result fail + else + # Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in seconds. + timedalloc_kernel="`grep elapsed $DIR/work/log/timedalloc-$KernelVersion/noprofile/time | awk '{print substr($2, 1, 4)}'`" + # Total number of CPU-seconds that the process used directly (in user mode), in seconds. + timedalloc_user="`grep elapsed $DIR/work/log/timedalloc-$KernelVersion/noprofile/time | awk '{print substr($1, 1, 4)}'`" + lava-test-case $TEST_ID-kernel-mode --result pass --measurement $timedalloc_kernel --units seconds + lava-test-case $TEST_ID-user-mode --result pass --measurement $timedalloc_user --units seconds + fi + ;; esac } -## Run tests +# Run tests for SUB_TEST in $TESTS; do - $DIR/run-mmtests.sh --no-monitor --config configs/config-global-dhp__$SUB_TEST $KernelVersion + # Clean up and check disk space. + rm -rf $DIR/work/testdisk/tmp + df -h + + # Run test by configuration. + $DIR/run-mmtests.sh --no-monitor --config $DIR/configs/config-global-dhp__$SUB_TEST $KernelVersion if [ $? -ne 0 ]; then lava-test-case $SUB_TEST --result fail else - result_parse $SUB_TEST + result_parser $SUB_TEST fi - rm -rf $DIR/work/testdisk/tmp done diff --git a/ubuntu/mmtests.yaml b/ubuntu/mmtests.yaml index d3476d1..0a91b4e 100644 --- a/ubuntu/mmtests.yaml +++ b/ubuntu/mmtests.yaml @@ -1,7 +1,7 @@ metadata: name: mmtests format: "Lava-Test-Shell Test Definition 1.0" - description: "Run mmtests suite on Ubuntu" + description: "Run tests from mmtests suite on Ubuntu" maintainer: - chase.qi@linaro.org - milosz.wasilewski@linaro.org @@ -27,7 +27,12 @@ install: - time params: - TESTS: 'dd dd-tmpfs ddsync ku-latency libmicro' + # dd, dd-tmpfs, ddsync: loopdd bench. + # ku-latency: measure the latency in the Linux network stack between kernel and user space. + # libmicro: measure the performance of various system and library calls. + # vmscale: vm scalability test, measure spread of dd performance. + # timedalloc: time how long it takes to allocate a large buffer. + TESTS: 'dd dd-tmpfs ddsync ku-latency libmicro vmscale timedalloc' run: steps: |