1. 01 10月, 2006 4 次提交
  2. 21 8月, 2006 1 次提交
  3. 25 7月, 2006 1 次提交
  4. 01 7月, 2006 1 次提交
  5. 23 6月, 2006 6 次提交
    • J
      [PATCH] rbtree: support functions used by the io schedulers · dd67d051
      Jens Axboe 提交于
      They all duplicate macros to check for empty root and/or node, and
      clearing a node. So put those in rbtree.h.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      dd67d051
    • J
      [PATCH] cfq-iosched: rq update fixes · fd61af03
      Jens Axboe 提交于
      - Remember to set ->last_sector so that the cfq_choose_req() logic
        works correctly.
      
      - Remove redundant call to cfq_choose_req()
      Signed-off-by: NJens Axboe <axboe@suse.de>
      fd61af03
    • J
      [PATCH] cfq-iosched: many performance fixes · caaa5f9f
      Jens Axboe 提交于
      This is a collection of patches that greatly improve CFQ performance
      in some circumstances.
      
      - Change the idling logic to only kick in after a request is done and we
        are deciding what to do. Before the idling included the request service
        time, so it was hard to adjust. Now it's true think/idle time.
      
      - Take advantage of TCQ/NCQ/queueing for seeky sync workloads, but keep
        it in control for sync and sequential (or close to) workloads.
      
      - Expire queues immediately and move on to other busy queues, if we are
        not going to idle after the current one finishes.
      
      - Don't rearm idle timer if there are no busy queues. Just leave the
        system idle.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      caaa5f9f
    • J
      [PATCH] cfq-iosched: correctly set ioprio on both targets · 35e6077c
      Jens Axboe 提交于
      Patch originally from Vasily Tarasov <vtaras@sw.ru>
      
      If you set io-priority of process 1 using sys_ioprio_set system call by
      another process 2 (like ionice do), then cfq_init_prio_data() function
      sets priority of process 2 (current) on queue of process 1 and clears
      the flag, that designates change of ioprio.  So the process  1 will work
      like with priority of process 2.
      
      I propose not to call cfq_init_prio_data() on io-priority change, but
      only mark queue as queue with changed prority.  Every time when new
      request comes cfq-scheduler checks for this flag and atomaticaly changes
      priority of queue to new value.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      35e6077c
    • J
      [PATCH] Kill PF_SYNCWRITE flag · b31dc66a
      Jens Axboe 提交于
      A process flag to indicate whether we are doing sync io is incredibly
      ugly. It also causes performance problems when one does a lot of async
      io and then proceeds to sync it. Part of the io will go out as async,
      and the other part as sync. This causes a disconnect between the
      previously submitted io and the synced io. For io schedulers such as CFQ,
      this will cause us lost merges and suboptimal behaviour in scheduling.
      
      Remove PF_SYNCWRITE completely from the fsync/msync paths, and let
      the O_DIRECT path just directly indicate that the writes are sync
      by using WRITE_SYNC instead.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      b31dc66a
    • J
      [PATCH] cfq-iosched: Don't set the queue batching limits · 271f18f1
      Jens Axboe 提交于
      We cannot update them if the user changes nr_requests, so don't
      set it in the first place. The gains are pretty questionable as
      well. The batching loss has been shown to decrease throughput.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      271f18f1
  6. 21 6月, 2006 1 次提交
  7. 15 6月, 2006 1 次提交
  8. 09 6月, 2006 1 次提交
    • J
      [PATCH] elevator switching race · bc1c1169
      Jens Axboe 提交于
      There's a race between shutting down one io scheduler and firing up the
      next, in which a new io could enter and cause the io scheduler to be
      invoked with bad or NULL data.
      
      To fix this, we need to maintain the queue lock for a bit longer.
      Unfortunately we cannot do that, since the elevator init requires to be
      run without the lock held.  This isn't easily fixable, without also
      changing the mempool API.  So split the initialization into two parts,
      and alloc-init operation and an attach operation.  Then we can
      preallocate the io scheduler and related structures, and run the attach
      inside the lock after we detach the old one.
      
      This patch has survived 30 minutes of 1 second io scheduler switching
      with a very busy io load.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      bc1c1169
  9. 02 6月, 2006 1 次提交
  10. 01 6月, 2006 4 次提交
  11. 31 5月, 2006 1 次提交
  12. 21 4月, 2006 1 次提交
  13. 19 4月, 2006 1 次提交
  14. 18 4月, 2006 2 次提交
  15. 28 3月, 2006 3 次提交
    • J
      [BLOCK] cfq-iosched: seek and async performance fixes · 206dc69b
      Jens Axboe 提交于
      Detect whether a given process is seeky and if so disable (mostly) the
      idle window if it is. We still allow just a little idle time, just enough
      to allow that process to submit a new request. That is needed to maintain
      fairness across priority groups.
      
      In some cases, we could setup several async queues. This is not optimal
      from a performance POV, since we want all async io in one queue to perform
      good sorting on it. It also impacted sync queues, as async io got too much
      slice time.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      206dc69b
    • A
      [PATCH] cfq-iosched: small cfq_choose_req() optimization · e8a99053
      Andreas Mohr 提交于
      this is a small optimization to cfq_choose_req() in the CFQ I/O scheduler
      (this function is a semi-often invoked candidate in an oprofile log):
      by using a bit mask variable, we can use a simple switch() to check
      the various cases instead of having to query two variables for each check.
      Benefit: 251 vs. 285 bytes footprint of cfq_choose_req().
      Also, common case 0 (no request wrapping) is now checked first in code.
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NJens Axboe <axboe@suse.de>
      e8a99053
    • J
      [PATCH] [BLOCK] cfq-iosched: change cfq io context linking from list to tree · e2d74ac0
      Jens Axboe 提交于
      On setups with many disks, we spend a considerable amount of time
      looking up the process-disk mapping on each queue of io. Testing with
      a NULL based block driver, this costs 40-50% reduction in throughput
      for 1000 disks.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      e2d74ac0
  16. 27 3月, 2006 1 次提交
  17. 19 3月, 2006 10 次提交