]> git.proxmox.com Git - mirror_zfs.git/blame - tests/zfs-tests/tests/perf/regression/sequential_writes.ksh
OpenZFS 9076 - Adjust perf test concurrency settings
[mirror_zfs.git] / tests / zfs-tests / tests / perf / regression / sequential_writes.ksh
CommitLineData
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
40log_assert "Measure IO stats during sequential write load"
41log_onexit cleanup
42
43function 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
52trap "log_fail \"Measure IO stats during random read load\"" SIGTERM
53
679d73e9
JWK
54export TESTFS=$PERFPOOL/testfs
55recreate_perfpool
c1d9abf9 56log_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.
59export TOTAL_SIZE=$(($(get_prop avail $TESTFS) * 3 / 2))
60
61# Variables for use by fio.
62if [[ -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'}
68elif [[ -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'}
74fi
75
76# Set up the scripts and output files that will log performance data.
77lun_list=$(pool_to_lun_list $PERFPOOL)
78log_note "Collecting backend IO stats with lun list $lun_list"
79if 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")
83else
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
86fi
87
88log_note "Sequential writes with $PERF_RUNTYPE settings"
c1d9abf9 89do_fio_run sequential_writes.fio true false
679d73e9 90log_pass "Measure IO stats during sequential write load"