[dm-devel] [for-3.19 PATCH 00/17] dm thin: performance improvements

Mike Snitzer snitzer at redhat.com
Fri Oct 17 06:06:50 UTC 2014


Here is a patchset that Joe and I have been working on for the past 2
weeks to address various performance problems reported against DM thin
provisioning.  DM thinp is now much more capable in the face of heavy
IO (be it random or sequential, multithreaded, etc).

I've just added these patches to linux-dm.git's 'for-next' branch so
that these changes get early exposure/testing for 3.19 inclusion.

Of all the changes the "dm bufio: evict buffers that are past the max
age but retain some buffers" is in the most need of review relative to
upstream code (given it is so different than the RHEL code we also
support -- due to shrinker differences).

Any review/testing is always appreciated, thanks.
Mike

BTW, Mikulas: I had a quick look at your dm-bufio
'max_kept_cache_size_bytes' patch but I need to review it closer (it
seemed a bit too elaborate but I'll revisit).  I also still need to
review/stage your dm-bufio-ratio.patch

Joe Thornber (13):
  dm bufio: switch from a huge hash table to an rbtree
  dm bufio: evict buffers that are past the max age but retain some buffers
  dm bio prison: switch to using a red black tree
  dm thin metadata: change dm_thin_find_block to allow blocking, but not issuing, IO
  dm transaction manager: add support for prefetching blocks of metadata
  dm thin: prefetch missing metadata pages
  dm thin: throttle incoming IO
  dm thin: grab a virtual cell before looking up the mapping
  dm thin: performance improvement to discard processing
  dm thin: defer whole cells rather than individual bios
  dm thin: remap the bios in a cell immediately
  dm thin: direct dispatch when breaking sharing
  dm thin: sort the deferred cells

Mike Snitzer (4):
  dm thin: adjust max_sectors_kb based on thinp blocksize
  dm: improve documentation and code clarity in dm_merge_bvec
  dm thin: implement thin_merge
  dm thin: factor out remap_and_issue_overwrite

 drivers/md/dm-bio-prison.c                         | 186 ++++---
 drivers/md/dm-bio-prison.h                         |  16 +-
 drivers/md/dm-bufio.c                              | 206 +++++---
 drivers/md/dm-cache-target.c                       |   3 +-
 drivers/md/dm-thin-metadata.c                      |  35 +-
 drivers/md/dm-thin-metadata.h                      |   9 +-
 drivers/md/dm-thin.c                               | 574 +++++++++++++++++----
 drivers/md/dm.c                                    |  12 +-
 .../md/persistent-data/dm-transaction-manager.c    |  77 ++-
 .../md/persistent-data/dm-transaction-manager.h    |   7 +
 10 files changed, 804 insertions(+), 321 deletions(-)

-- 
1.9.3




More information about the dm-devel mailing list