]>
Commit | Line | Data |
---|---|---|
679d73e9 JWK |
1 | #!/bin/ksh |
2 | ||
3 | # | |
4 | # This file and its contents are supplied under the terms of the | |
5 | # Common Development and Distribution License ("CDDL"), version 1.0. | |
6 | # You may only use this file in accordance with the terms of version | |
7 | # 1.0 of the CDDL. | |
8 | # | |
9 | # A full copy of the text of the CDDL should have accompanied this | |
10 | # source. A copy of the CDDL is also available via the Internet at | |
11 | # http://www.illumos.org/license/CDDL. | |
12 | # | |
13 | ||
14 | # | |
c1d9abf9 | 15 | # Copyright (c) 2015, 2016 by Delphix. All rights reserved. |
679d73e9 JWK |
16 | # |
17 | ||
18 | # | |
19 | # Description: | |
20 | # Trigger fio runs using the sequential_writes job file. The number of runs and | |
21 | # data collected is determined by the PERF_* variables. See do_fio_run for | |
22 | # details about these variables. | |
23 | # | |
24 | # Prior to each fio run the dataset is recreated, and fio writes new files | |
25 | # into an otherwise empty pool. | |
26 | # | |
8a2a9db8 SB |
27 | # Thread/Concurrency settings: |
28 | # PERF_NTHREADS defines the number of files created in the test filesystem, | |
29 | # as well as the number of threads that will simultaneously drive IO to | |
30 | # those files. The settings chosen are from measurements in the | |
31 | # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that | |
32 | # are at peak throughput but lowest latency. Higher concurrency introduces | |
33 | # queue time latency and would reduce the impact of code-induced performance | |
34 | # regressions. | |
35 | # | |
679d73e9 JWK |
36 | |
37 | . $STF_SUITE/include/libtest.shlib | |
38 | . $STF_SUITE/tests/perf/perf.shlib | |
39 | ||
40 | log_assert "Measure IO stats during sequential write load" | |
41 | log_onexit cleanup | |
42 | ||
43 | function cleanup | |
44 | { | |
251cb8df | 45 | # kill fio and iostat |
c1d9abf9 JWK |
46 | pkill ${fio##*/} |
47 | pkill ${iostat##*/} | |
48 | log_must_busy zfs destroy $TESTFS | |
49 | log_must_busy zpool destroy $PERFPOOL | |
679d73e9 JWK |
50 | } |
51 | ||
251cb8df GDN |
52 | trap "log_fail \"Measure IO stats during random read load\"" SIGTERM |
53 | ||
679d73e9 JWK |
54 | export TESTFS=$PERFPOOL/testfs |
55 | recreate_perfpool | |
c1d9abf9 | 56 | log_must zfs create $PERF_FS_OPTS $TESTFS |
679d73e9 JWK |
57 | |
58 | # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. | |
59 | export TOTAL_SIZE=$(($(get_prop avail $TESTFS) * 3 / 2)) | |
60 | ||
61 | # Variables for use by fio. | |
62 | if [[ -n $PERF_REGRESSION_WEEKLY ]]; then | |
63 | export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} | |
64 | export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} | |
8a2a9db8 | 65 | export PERF_NTHREADS=${PERF_NTHREADS:-'1 4 8 16 32 64 128'} |
679d73e9 JWK |
66 | export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'0 1'} |
67 | export PERF_IOSIZES=${PERF_IOSIZES:-'8k 128k 1m'} | |
68 | elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then | |
69 | export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} | |
70 | export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} | |
8a2a9db8 | 71 | export PERF_NTHREADS=${PERF_NTHREADS:-'16 32'} |
679d73e9 JWK |
72 | export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} |
73 | export PERF_IOSIZES=${PERF_IOSIZES:-'8k 128k 1m'} | |
74 | fi | |
75 | ||
76 | # Set up the scripts and output files that will log performance data. | |
77 | lun_list=$(pool_to_lun_list $PERFPOOL) | |
78 | log_note "Collecting backend IO stats with lun list $lun_list" | |
79 | if is_linux; then | |
c1d9abf9 JWK |
80 | export collect_scripts=("zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" |
81 | "vmstat 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -dxyz 1" | |
679d73e9 JWK |
82 | "iostat") |
83 | else | |
84 | export collect_scripts=("$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" | |
c1d9abf9 | 85 | "vmstat 1" "vmstat" "mpstat 1" "mpstat" "iostat -xcnz 1" "iostat") |
679d73e9 JWK |
86 | fi |
87 | ||
88 | log_note "Sequential writes with $PERF_RUNTYPE settings" | |
c1d9abf9 | 89 | do_fio_run sequential_writes.fio true false |
679d73e9 | 90 | log_pass "Measure IO stats during sequential write load" |