1. 11 May, 2011 1 commit
  2. 05 May, 2011 4 commits
  3. 27 Apr, 2011 1 commit
  4. 26 Apr, 2011 2 commits
    • Konrad Rzeszutek Wilk's avatar
      xen/blkback: Stick REQ_SYNC on WRITEs to deal with CFQ I/O scheduler. · 013c3ca1
      Konrad Rzeszutek Wilk authored
      If one runs a simple fio request with random read/write with a
      20%/80% ratio, the numbers are incredibly bad when using the CFQ scheduler.
      
      IOmeter       |       |      |          |
      64K, randrw   |  NOOP | CFQ  | deadline |
      randrwmix=80  |       |      |          |
      --------------+-------+------+----------+
      blkback       |103/27 |32/10 | 102/27   |
      --------------+-------+------+----------+
      QEMU qdisk    |103/27 |102/27| 102/27   |
      
      The problem as explained by Vivek Goyal was:
      
      ".. that difference is that sync vs async requests. In the case of
      a kernel thread submitting IO, [..] all the WRITES might be being
      considered as async and will go in a different queue. If you mix those
      with some READS, they are always sync and will go in differnet queue.
      In presence of sync queue, CFQ will idle and choke up WRITES in
      an attempt to improve latencies of READs.
      
      In case of AIO [note: this is what QEMU qdisk is doing] , [..]
      it is direct IO and both READS and WRITES will be considered SYNC
      and will go in a single queue and no choking of WRITES will take place."
      
      The solution is quite simple, tack on REQ_SYNC (which is
      what the WRITE_ODIRECT macro points to) and the numbers go
      back up.
      
      Suggested-by: Vivek Goyal <vgoyal@redhat.com
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      013c3ca1
    • Konrad Rzeszutek Wilk's avatar
      xen/blkback: Move the plugging/unplugging to a higher level. · 97961ef4
      Konrad Rzeszutek Wilk authored
      We used to the plug/unplug on the submit_bio. But that means
      if within a stream of WRITE, WRITE, WRITE,...,WRITE we have
      one READ, it could stall the pipeline (as the 'submio_bio'
      could trigger the unplug_fnc to be called and stall/sync
      when doing the READ). Instead we want to move the unplugging
      when the whole (or as a much as possible) ring buffer has been
      processed. This also eliminates us doing plug/unplug for
      each request.
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      97961ef4
  5. 20 Apr, 2011 4 commits
  6. 18 Apr, 2011 4 commits
  7. 15 Apr, 2011 5 commits
  8. 14 Apr, 2011 19 commits