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>
        
*** 3255,3275 ****
  
          if (vd->vdev_ops->vdev_op_leaf) {
                  vdev_queue_t *vq = &vd->vdev_queue;
  
                  mutex_enter(&vq->vq_lock);
!                 if (avl_numnodes(&vq->vq_pending_tree) > 0) {
                          spa_t *spa = vd->vdev_spa;
                          zio_t *fio;
                          uint64_t delta;
  
                          /*
                           * Look at the head of all the pending queues,
                           * if any I/O has been outstanding for longer than
                           * the spa_deadman_synctime we panic the system.
                           */
!                         fio = avl_first(&vq->vq_pending_tree);
                          delta = gethrtime() - fio->io_timestamp;
                          if (delta > spa_deadman_synctime(spa)) {
                                  zfs_dbgmsg("SLOW IO: zio timestamp %lluns, "
                                      "delta %lluns, last io %lluns",
                                      fio->io_timestamp, delta,
--- 3255,3275 ----
  
          if (vd->vdev_ops->vdev_op_leaf) {
                  vdev_queue_t *vq = &vd->vdev_queue;
  
                  mutex_enter(&vq->vq_lock);
!                 if (avl_numnodes(&vq->vq_active_tree) > 0) {
                          spa_t *spa = vd->vdev_spa;
                          zio_t *fio;
                          uint64_t delta;
  
                          /*
                           * Look at the head of all the pending queues,
                           * if any I/O has been outstanding for longer than
                           * the spa_deadman_synctime we panic the system.
                           */
!                         fio = avl_first(&vq->vq_active_tree);
                          delta = gethrtime() - fio->io_timestamp;
                          if (delta > spa_deadman_synctime(spa)) {
                                  zfs_dbgmsg("SLOW IO: zio timestamp %lluns, "
                                      "delta %lluns, last io %lluns",
                                      fio->io_timestamp, delta,