Hi Xiao,

I like to idea of not blocking the other tests. Couple of comments below.

On 05/06/2019 10:47 PM, Xiao Liang wrote:
> In some bad situation, fio needs taking over several hours to complete
> random read operations with specipied size. The test may skip out in such
> cases and does not block other cases run.
s/specipied/specified/
>
> With this patch, the case will be ended within $TIMEOUT(if set) or 900s.
> block/005 => nvme1n1 (switch schedulers while doing IO)      [failed]
>      runtime      ...  1800.477s
>      read iops    ...
>      --- tests/block/005.out  2019-03-31 14:29:39.905449312 +0000
>      +++ /home/ec2-user/blktests/results/nvme1n1/block/005.out.bad    
> 2019-05-07 04:10:16.026681842 +0000
>      @@ -1,2 +1,4 @@
>       Running block/005
>      +fio did not finish after 900 seconds which probably caused by
>      +lower disk performance
>       Test complete
>
> Signed-off-by: Xiao Liang <[email protected]>
> ---
>   tests/block/005 | 10 ++++++++++
>   tests/block/008 | 10 ++++++++++
>   2 files changed, 20 insertions(+)
>
> diff --git a/tests/block/005 b/tests/block/005
> index 8ab6791..96b16a4 100755
> --- a/tests/block/005
> +++ b/tests/block/005
> @@ -31,10 +31,20 @@ test_device() {
>       _run_fio_rand_io --filename="$TEST_DEV" --size="$size" &
>
>       # while job is running, switch between schedulers
> +     # fio test may take too long time to complete read/write in special 
> size on some bad
> +     # performance disks. Set a timeout here which does not block overall 
> test.
> +     start_time=$(date +%s)
> +     timeout=${TIMEOUT:=900}
>       while kill -0 $! 2>/dev/null; do
>               idx=$((RANDOM % ${#scheds[@]}))
>               _test_dev_queue_set scheduler "${scheds[$idx]}"
>               sleep .2
> +             end_time=$(date +%s)
> +             if (( end_time - start_time > timeout )); then
> +                     echo "fio did not finish after $timeout seconds which 
> probably caused by
> +lower disk performance"
Can we make this message more generic instead of calling out disk 
performance ?
> +                     break
> +             fi
>       done
>
>       FIO_PERF_FIELDS=("read iops")
> diff --git a/tests/block/008 b/tests/block/008
> index 4a88056..c25b908 100755
> --- a/tests/block/008
> +++ b/tests/block/008
> @@ -45,6 +45,10 @@ test_device() {
>       done
>
>       # while job is running, hotplug CPUs
> +     # fio test may take too long time to complete read/write in special 
> size on some bad
> +     # performance disks. Set a timeout here which does not block overall 
> test.
> +     start_time=$(date +%s)
> +     timeout=${TIMEOUT:=900}
>       while sleep .2; kill -0 $! 2> /dev/null; do
>               if (( offlining && ${#offline_cpus[@]} == max_offline )); then
>                       offlining=0
> @@ -65,6 +69,12 @@ test_device() {
>                       unset offline_cpus["$idx"]
>                       offline_cpus=("${offline_cpus[@]}")
>               fi
> +             end_time=$(date +%s)
> +             if (( end_time - start_time > timeout )); then
> +                     echo "fio did not finish after $timeout seconds which 
> probably caused by
> +lower disk performance"
Same here.
> +                     break
> +             fi
>       done
>
>       FIO_PERF_FIELDS=("read iops")
>

Reply via email to