Add vdev property to disable vdev scheduler

Added vdev property to disable the vdev scheduler.
The intention behind this property is to improve IOPS
performance when using o_direct.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: MigeljanImeri <ImeriMigel@gmail.com>
Closes #17358
This commit is contained in:
MigeljanImeri
2026-02-23 12:34:33 -05:00
committed by GitHub
parent d2f5cb3a50
commit 4975430cf5
14 changed files with 206 additions and 2 deletions
+13
View File
@@ -389,9 +389,22 @@ typedef enum {
VDEV_PROP_SIT_OUT,
VDEV_PROP_AUTOSIT,
VDEV_PROP_SLOW_IO_EVENTS,
VDEV_PROP_SCHEDULER,
VDEV_NUM_PROPS
} vdev_prop_t;
/*
* Different scheduling behaviors for vdev scheduler property.
* VDEV_SCHEDULER_AUTO = Let ZFS decide - currently use scheduler on HDDs only.
* VDEV_SCHEDULER_ON = Always queue.
* VDEV_SCHEDULER_OFF = Never queue.
*/
typedef enum {
VDEV_SCHEDULER_AUTO,
VDEV_SCHEDULER_ON,
VDEV_SCHEDULER_OFF
} vdev_scheduler_type_t;
/*
* Dataset property functions shared between libzfs and kernel.
*/
+2
View File
@@ -425,6 +425,7 @@ struct vdev {
boolean_t vdev_resilver_deferred; /* resilver deferred */
boolean_t vdev_kobj_flag; /* kobj event record */
boolean_t vdev_attaching; /* vdev attach ashift handling */
boolean_t vdev_is_blkdev; /* vdev is backed by block device */
vdev_queue_t vdev_queue; /* I/O deadline schedule queue */
spa_aux_vdev_t *vdev_aux; /* for l2cache and spares vdevs */
zio_t *vdev_probe_zio; /* root of current probe */
@@ -473,6 +474,7 @@ struct vdev {
boolean_t vdev_slow_io_events;
uint64_t vdev_slow_io_n;
uint64_t vdev_slow_io_t;
uint64_t vdev_scheduler; /* control how I/Os are submitted */
};
#define VDEV_PAD_SIZE (8 << 10)