From a42ca2c3d8900c94c3a7b7de88911a3d6b5320e8 Mon Sep 17 00:00:00 2001 From: Ameer Hamza Date: Tue, 12 Nov 2024 19:46:13 +0500 Subject: [PATCH] zvol_os.c: Increase optimal IO size Since zvol read and write operations can process up to (DMU_MAX_ACCESS / 2) bytes in a single operation, the current optimal I/O size is set too low. SCST directly reports this value as the optimal transfer length for the target SCSI device. Increasing it from the previous volblocksize significantly improves performance for VDIv2 workloads. Signed-off-by: Ameer Hamza --- module/os/linux/zfs/zvol_os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c index d1e3061b50e6..6a050c172ce7 100644 --- a/module/os/linux/zfs/zvol_os.c +++ b/module/os/linux/zfs/zvol_os.c @@ -1193,7 +1193,7 @@ zvol_queue_limits_init(zvol_queue_limits_t *limits, zvol_state_t *zv, limits->zql_max_segment_size = UINT_MAX; } - limits->zql_io_opt = zv->zv_volblocksize; + limits->zql_io_opt = DMU_MAX_ACCESS/2; limits->zql_physical_block_size = zv->zv_volblocksize; limits->zql_max_discard_sectors =