From 679d73e98bf5e51a02bc8d550253e4a3f15d58ca Mon Sep 17 00:00:00 2001 From: John Wren Kennedy Date: Wed, 3 Aug 2016 21:26:15 +0000 Subject: OpenZFS - Performance regression suite for zfstest Author: John Wren Kennedy Reviewed by: Prakash Surya Reviewed by: Dan Kimmel Reviewed by: Matt Ahrens Reviewed by: Paul Dagnelie Reviewed by: Don Brady Reviewed by: Richard Elling Reviewed by: Brian Behlendorf Reviewed-by: David Quigley Approved by: Richard Lowe Ported-by: Don Brady OpenZFS-issue: https://www.illumos.org/issues/6950 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/dcbf3bd6 Delphix-commit: https://github.com/delphix/delphix-os/commit/978ed49 Closes #4929 ZFS Test Suite Performance Regression Tests This was pulled into OpenZFS via the compressed arc featureand was separated out in zfsonlinux as a separate pull request from PR-4768. It originally came in as QA-4903 in Delphix-OS from John Kennedy. Expected Usage: $ DISKS="sdb sdc sdd" zfs-tests.sh -r perf-regression.run Porting Notes: 1. Added assertions in the setup script to make sure required tools (fio, mpstat, ...) are present. 2. For the config.json generation in perf.shlib used arcstats and other binaries instead of dtrace to query the values. 3. For the perf data collection: - use "zpool iostat -lpvyL" instead of the io.d dtrace script (currently not collecting zfs_read/write latency stats) - mpstat and iostat take different arguments - prefetch_io.sh is a placeholder that uses arcstats instead of dtrace 4. Build machines require fio, mdadm and sysstat pakage (YMMV). Future Work: - Need a way to measure zfs_read and zfs_write latencies per pool. - Need tools to takes two sets of output and display/graph the differences - Bring over additional regression tests from Delphix --- config/user-commands.m4 | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'config/user-commands.m4') diff --git a/config/user-commands.m4 b/config/user-commands.m4 index 112e4c18c..58633b4a0 100644 --- a/config/user-commands.m4 +++ b/config/user-commands.m4 @@ -26,10 +26,12 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_COMMON], [ AC_PATH_TOOL(DU, du, "") AC_PATH_TOOL(ECHO, echo, "") AC_PATH_TOOL(EGREP, egrep, "") + AC_PATH_TOOL(FALSE, false, "") AC_PATH_TOOL(FDISK, fdisk, "") AC_PATH_TOOL(FGREP, fgrep, "") AC_PATH_TOOL(FILE, file, "") AC_PATH_TOOL(FIND, find, "") + AC_PATH_TOOL(FIO, fio, "") AC_PATH_TOOL(FSCK, fsck, "") AC_PATH_TOOL(GNUDD, dd, "") AC_PATH_TOOL(GETCONF, getconf, "") @@ -74,6 +76,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_COMMON], [ AC_PATH_TOOL(SYNC, sync, "") AC_PATH_TOOL(TAIL, tail, "") AC_PATH_TOOL(TAR, tar, "") + AC_PATH_TOOL(TIMEOUT, timeout, "") AC_PATH_TOOL(TOUCH, touch, "") AC_PATH_TOOL(TR, tr, "") AC_PATH_TOOL(TRUNCATE, truncate, "") @@ -96,14 +99,21 @@ dnl # These commands may take different command line arguments. dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_LINUX], [ AC_PATH_TOOL(BLOCKDEV, blockdev, "") + AC_PATH_TOOL(CHACL, chacl, "") AC_PATH_TOOL(COMPRESS, gzip, "") AC_PATH_TOOL(FORMAT, parted, "") + AC_PATH_TOOL(FREE, free, "") + AC_PATH_TOOL(GETFACL, getfacl, "") + AC_PATH_TOOL(IOSTAT, iostat, "") AC_PATH_TOOL(LOCKFS, lsof, "") AC_PATH_TOOL(LSBLK, lsblk, "") AC_PATH_TOOL(MODUNLOAD, rmmod, "") + AC_PATH_TOOL(MPSTAT, mpstat, "") AC_PATH_TOOL(NEWFS, mke2fs, "") + AC_PATH_TOOL(NPROC, nproc, "") AC_PATH_TOOL(PFEXEC, sudo, "") AC_PATH_TOOL(READLINK, readlink, "") + AC_PATH_TOOL(SETFACL, setfacl, "") AC_PATH_TOOL(SHARE, exportfs, "") AC_PATH_TOOL(SWAP, swapon, "") AC_PATH_TOOL(SWAPADD, swapon, "") @@ -112,10 +122,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER_COMMANDS_LINUX], [ AC_PATH_TOOL(UFSRESTORE, restore, "") AC_PATH_TOOL(UNCOMPRESS, gunzip, "") AC_PATH_TOOL(UNSHARE, exportfs, "") - AC_PATH_TOOL(GETFACL, getfacl, "") - AC_PATH_TOOL(SETFACL, setfacl, "") - AC_PATH_TOOL(CHACL, chacl, "") - AC_PATH_TOOL(NPROC, nproc, "") + AC_PATH_TOOL(VMSTAT, vmstat, "") PAGESIZE=$($GETCONF PAGESIZE) AC_SUBST(PAGESIZE) -- cgit v1.2.3