mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-02-24 15:58:47 +03:00

Add support for the kernel's block multiqueue (blk-mq) interface in the zvol block driver. blk-mq creates multiple request queues on different CPUs rather than having a single request queue. This can improve zvol performance with multithreaded reads/writes. This implementation uses the blk-mq interfaces on 4.13 or newer kernels. Building against older kernels will fall back to the older BIO interfaces. Note that you must set the `zvol_use_blk_mq` module param to enable the blk-mq API. It is disabled by default. In addition, this commit lets the zvol blk-mq layer process whole `struct request` IOs at a time, rather than breaking them down into their individual BIOs. This reduces dbuf lock contention and overhead versus the legacy zvol submit_bio() codepath. sequential dd to one zvol, 8k volblocksize, no O_DIRECT: legacy submit_bio() 292MB/s write 453MB/s read this commit 453MB/s write 885MB/s read It also introduces a new `zvol_blk_mq_chunks_per_thread` module parameter. This parameter represents how many volblocksize'd chunks to process per each zvol thread. It can be used to tune your zvols for better read vs write performance (higher values favor write, lower favor read). Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com> Signed-off-by: Tony Hutter <hutter2@llnl.gov> Closes #13148 Issue #12483
226 lines
2.9 KiB
INI
226 lines
2.9 KiB
INI
#
|
|
# Copyright (c) 2016, 2019 by Delphix. All rights reserved.
|
|
# These variables are used by zfs-tests.sh to constrain which utilities
|
|
# may be used by the suite. The suite will create a directory which is
|
|
# the only element of $PATH and create symlinks from that dir to the
|
|
# binaries listed below.
|
|
#
|
|
# Please keep the contents of each variable sorted for ease of reading
|
|
# and maintenance.
|
|
#
|
|
export SYSTEM_FILES_COMMON='awk
|
|
basename
|
|
bc
|
|
bunzip2
|
|
bzcat
|
|
cat
|
|
chgrp
|
|
chmod
|
|
chown
|
|
cksum
|
|
cmp
|
|
cp
|
|
cpio
|
|
cut
|
|
date
|
|
dd
|
|
df
|
|
diff
|
|
dirname
|
|
dmesg
|
|
du
|
|
echo
|
|
env
|
|
expr
|
|
false
|
|
file
|
|
find
|
|
fio
|
|
getconf
|
|
getent
|
|
getfacl
|
|
grep
|
|
gunzip
|
|
gzip
|
|
head
|
|
hostname
|
|
id
|
|
iostat
|
|
kill
|
|
ksh
|
|
ldd
|
|
ln
|
|
ls
|
|
mkdir
|
|
mknod
|
|
mkfifo
|
|
mktemp
|
|
mount
|
|
mv
|
|
net
|
|
od
|
|
openssl
|
|
pamtester
|
|
pax
|
|
pgrep
|
|
ping
|
|
pkill
|
|
printf
|
|
ps
|
|
python3
|
|
readlink
|
|
rm
|
|
rmdir
|
|
rsync
|
|
scp
|
|
script
|
|
sed
|
|
seq
|
|
setfacl
|
|
sh
|
|
sleep
|
|
sort
|
|
ssh
|
|
stat
|
|
strings
|
|
sudo
|
|
swapoff
|
|
swapon
|
|
sync
|
|
tail
|
|
tar
|
|
timeout
|
|
touch
|
|
tr
|
|
true
|
|
truncate
|
|
umount
|
|
uname
|
|
uniq
|
|
vmstat
|
|
wc'
|
|
|
|
export SYSTEM_FILES_FREEBSD='chflags
|
|
compress
|
|
diskinfo
|
|
fsck
|
|
getextattr
|
|
gpart
|
|
jail
|
|
jexec
|
|
jls
|
|
lsextattr
|
|
md5
|
|
mdconfig
|
|
newfs
|
|
pw
|
|
rmextattr
|
|
setextattr
|
|
sha256
|
|
showmount
|
|
swapctl
|
|
sysctl
|
|
trim
|
|
uncompress'
|
|
|
|
export SYSTEM_FILES_LINUX='attr
|
|
blkid
|
|
blkdiscard
|
|
blockdev
|
|
chattr
|
|
exportfs
|
|
fallocate
|
|
free
|
|
getfattr
|
|
groupadd
|
|
groupdel
|
|
groupmod
|
|
hostid
|
|
losetup
|
|
lsattr
|
|
lsblk
|
|
lscpu
|
|
lsmod
|
|
lsscsi
|
|
md5sum
|
|
mkswap
|
|
modprobe
|
|
mpstat
|
|
parted
|
|
perf
|
|
setfattr
|
|
sha256sum
|
|
udevadm
|
|
useradd
|
|
userdel
|
|
usermod
|
|
|
|
flock
|
|
logger'
|
|
|
|
export ZFS_FILES='zdb
|
|
zfs
|
|
zhack
|
|
zinject
|
|
zpool
|
|
ztest
|
|
raidz_test
|
|
arc_summary
|
|
arcstat
|
|
dbufstat
|
|
mount.zfs
|
|
zed
|
|
zgenhostid
|
|
zstream
|
|
zfs_ids_to_path
|
|
zpool_influxdb'
|
|
|
|
export ZFSTEST_FILES='badsend
|
|
btree_test
|
|
chg_usr_exec
|
|
devname2devid
|
|
dir_rd_update
|
|
draid
|
|
file_append
|
|
file_check
|
|
file_trunc
|
|
file_write
|
|
get_diff
|
|
getversion
|
|
largest_file
|
|
libzfs_input_check
|
|
mkbusy
|
|
mkfile
|
|
mkfiles
|
|
mktree
|
|
mmap_exec
|
|
mmap_libaio
|
|
mmap_seek
|
|
mmap_sync
|
|
mmapwrite
|
|
nvlist_to_lua
|
|
randfree_file
|
|
randwritecomp
|
|
readmmap
|
|
read_dos_attributes
|
|
rename_dir
|
|
rm_lnkcnt_zero_file
|
|
send_doall
|
|
threadsappend
|
|
user_ns_exec
|
|
write_dos_attributes
|
|
xattrtest
|
|
stride_dd
|
|
zed_fd_spill-zedlet
|
|
suid_write_to_file
|
|
cp_files
|
|
blake3_test
|
|
edonr_test
|
|
skein_test
|
|
sha2_test
|
|
ctime
|
|
truncate_test
|
|
ereports
|
|
zfs_diff-socket
|
|
dosmode_readonly_write'
|