Print this page
4045 zfs write throttle & i/o scheduler performance work
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
*** 97,112 ****
avl_tree_t vc_offset_tree;
avl_tree_t vc_lastused_tree;
kmutex_t vc_lock;
};
struct vdev_queue {
! avl_tree_t vq_deadline_tree;
! avl_tree_t vq_read_tree;
! avl_tree_t vq_write_tree;
! avl_tree_t vq_pending_tree;
! hrtime_t vq_io_complete_ts;
kmutex_t vq_lock;
};
/*
* Virtual device descriptor
--- 97,122 ----
avl_tree_t vc_offset_tree;
avl_tree_t vc_lastused_tree;
kmutex_t vc_lock;
};
+ typedef struct vdev_queue_class {
+ uint32_t vqc_active;
+
+ /*
+ * Sorted by offset or timestamp, depending on if the queue is
+ * LBA-ordered vs FIFO.
+ */
+ avl_tree_t vqc_queued_tree;
+ } vdev_queue_class_t;
+
struct vdev_queue {
! vdev_t *vq_vdev;
! vdev_queue_class_t vq_class[ZIO_PRIORITY_NUM_QUEUEABLE];
! avl_tree_t vq_active_tree;
! uint64_t vq_last_offset;
! hrtime_t vq_io_complete_ts; /* time last i/o completed */
kmutex_t vq_lock;
};
/*
* Virtual device descriptor