dm: improve performance by moving dm_io structure to per-bio-data
authorMike Snitzer <snitzer@redhat.com>
Tue, 12 Dec 2017 04:17:47 +0000 (23:17 -0500)
committerMike Snitzer <snitzer@redhat.com>
Sun, 17 Dec 2017 01:43:13 +0000 (20:43 -0500)
commit64f52b0e31489b46465cff2e61ab2e1f60a3b4eb
treedf8fa456e546efbff6aa8bf39157a18caf32047e
parent745dc570b2c379730d2a78acdeb65b5239e833c6
dm: improve performance by moving dm_io structure to per-bio-data

Eliminates need for a separate mempool to allocate 'struct dm_io'
objects from.  As such, it saves an extra mempool allocation for each
original bio that DM core is issued.

This complicates the per-bio-data accessor functions by needing to
conditonally add extra padding to get to a target's per-bio-data.  But
in the end this provides a decent performance improvement for all
bio-based DM devices.

On an NVMe-loop based testbed to a ramdisk (~3100 MB/s): bio-based
DM linear performance improved by 2% (went from 2665 to 2777 MB/s).

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-core.h
drivers/md/dm.c
include/linux/device-mapper.h