mbox series

[PATCHv2,00/15] dm-zoned: multi-device support

Message ID 20200527062225.72849-1-hare@suse.de (mailing list archive)
Headers show
Series dm-zoned: multi-device support | expand

Message

Hannes Reinecke May 27, 2020, 6:22 a.m. UTC
Hi all,

here's the second version of my patchset to support multiple zoned
drives with dm-zoned.
This patchset:
- Converts the zone array to using xarray for better scalability
- Separates out shared structures into per-device structure
- Enforce drive-locality for allocating and reclaiming zones
- Lifts the restriction of 2 devices to handle an arbitrary number
  of drives.

This gives me a near-perfect scalability by increasing the write
speed from 150MB/s (for a cache and one zoned drive) to 300MB/s
(for a cache and two zoned drives).

Changes to v1:
- Include reviews from Damien
- Reshuffle patches

Hannes Reinecke (15):
  dm-zoned: add debugging message for reading superblocks
  dm-zoned: secondary superblock must reside on the same devices than
    primary superblock
  dm-zoned: improve logging messages for reclaim
  dm-zoned: add a 'reserved' zone flag
  dm-zoned: convert to xarray
  dm-zoned: temporary superblock for tertiary devices
  dm-zoned: add device pointer to struct dm_zone
  dm-zoned: add metadata pointer to struct dmz_dev
  dm-zoned: allocate dm devices dynamically
  dm-zoned: per-device reclaim
  dm-zoned: move random and sequential zones into struct dmz_dev
  dm-zoned: support arbitrary number of devices
  dm-zoned: allocate zone by device index
  dm-zoned: select reclaim zone based on device index
  dm-zoned: prefer full zones for reclaim

 drivers/md/dm-zoned-metadata.c | 448 ++++++++++++++++++++++++-----------------
 drivers/md/dm-zoned-reclaim.c  |  95 +++++----
 drivers/md/dm-zoned-target.c   | 169 ++++++++++------
 drivers/md/dm-zoned.h          |  77 ++++---
 4 files changed, 481 insertions(+), 308 deletions(-)

Comments

Mike Snitzer May 27, 2020, 1:41 p.m. UTC | #1
On Wed, May 27 2020 at  2:22am -0400,
Hannes Reinecke <hare@suse.de> wrote:

> Hi all,
> 
> here's the second version of my patchset to support multiple zoned
> drives with dm-zoned.
> This patchset:
> - Converts the zone array to using xarray for better scalability
> - Separates out shared structures into per-device structure
> - Enforce drive-locality for allocating and reclaiming zones
> - Lifts the restriction of 2 devices to handle an arbitrary number
>   of drives.
> 
> This gives me a near-perfect scalability by increasing the write
> speed from 150MB/s (for a cache and one zoned drive) to 300MB/s
> (for a cache and two zoned drives).
> 
> Changes to v1:
> - Include reviews from Damien
> - Reshuffle patches
> 
> Hannes Reinecke (15):
>   dm-zoned: add debugging message for reading superblocks
>   dm-zoned: secondary superblock must reside on the same devices than
>     primary superblock
>   dm-zoned: improve logging messages for reclaim
>   dm-zoned: add a 'reserved' zone flag
>   dm-zoned: convert to xarray
>   dm-zoned: temporary superblock for tertiary devices
>   dm-zoned: add device pointer to struct dm_zone
>   dm-zoned: add metadata pointer to struct dmz_dev
>   dm-zoned: allocate dm devices dynamically
>   dm-zoned: per-device reclaim
>   dm-zoned: move random and sequential zones into struct dmz_dev
>   dm-zoned: support arbitrary number of devices
>   dm-zoned: allocate zone by device index
>   dm-zoned: select reclaim zone based on device index
>   dm-zoned: prefer full zones for reclaim
> 
>  drivers/md/dm-zoned-metadata.c | 448 ++++++++++++++++++++++++-----------------
>  drivers/md/dm-zoned-reclaim.c  |  95 +++++----
>  drivers/md/dm-zoned-target.c   | 169 ++++++++++------
>  drivers/md/dm-zoned.h          |  77 ++++---
>  4 files changed, 481 insertions(+), 308 deletions(-)

Would you still like to wait until the 5.9 merge window?

Or would you prefer to see these changes land for 5.8 so as to limit the
variants of related code that needs to be supported?

If you and Damien are OK with 5.8 (and testing backs that up) then I
should be able to get it to land.

Let me know, thanks.
Mike

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
Damien Le Moal May 28, 2020, 4:20 a.m. UTC | #2
On Wed, 2020-05-27 at 09:41 -0400, Mike Snitzer wrote:
> On Wed, May 27 2020 at  2:22am -0400,
> Hannes Reinecke <hare@suse.de> wrote:
> 
> > Hi all,
> > 
> > here's the second version of my patchset to support multiple zoned
> > drives with dm-zoned.
> > This patchset:
> > - Converts the zone array to using xarray for better scalability
> > - Separates out shared structures into per-device structure
> > - Enforce drive-locality for allocating and reclaiming zones
> > - Lifts the restriction of 2 devices to handle an arbitrary number
> >   of drives.
> > 
> > This gives me a near-perfect scalability by increasing the write
> > speed from 150MB/s (for a cache and one zoned drive) to 300MB/s
> > (for a cache and two zoned drives).
> > 
> > Changes to v1:
> > - Include reviews from Damien
> > - Reshuffle patches
> > 
> > Hannes Reinecke (15):
> >   dm-zoned: add debugging message for reading superblocks
> >   dm-zoned: secondary superblock must reside on the same devices than
> >     primary superblock
> >   dm-zoned: improve logging messages for reclaim
> >   dm-zoned: add a 'reserved' zone flag
> >   dm-zoned: convert to xarray
> >   dm-zoned: temporary superblock for tertiary devices
> >   dm-zoned: add device pointer to struct dm_zone
> >   dm-zoned: add metadata pointer to struct dmz_dev
> >   dm-zoned: allocate dm devices dynamically
> >   dm-zoned: per-device reclaim
> >   dm-zoned: move random and sequential zones into struct dmz_dev
> >   dm-zoned: support arbitrary number of devices
> >   dm-zoned: allocate zone by device index
> >   dm-zoned: select reclaim zone based on device index
> >   dm-zoned: prefer full zones for reclaim
> > 
> >  drivers/md/dm-zoned-metadata.c | 448 ++++++++++++++++++++++++-----------------
> >  drivers/md/dm-zoned-reclaim.c  |  95 +++++----
> >  drivers/md/dm-zoned-target.c   | 169 ++++++++++------
> >  drivers/md/dm-zoned.h          |  77 ++++---
> >  4 files changed, 481 insertions(+), 308 deletions(-)
> 
> Would you still like to wait until the 5.9 merge window?
> 
> Or would you prefer to see these changes land for 5.8 so as to limit the
> variants of related code that needs to be supported?
> 
> If you and Damien are OK with 5.8 (and testing backs that up) then I
> should be able to get it to land.

Yes, it would be nice to have all the recent changes under dm-zoned V2.
I just reviewed Hannes V2 series and I am running tests right now. So
far so good. Will send results by the end of my day.

What is your deadline for a final series to make it to 5.8 ? This end
of week ? If Hannes has time to rework another round, we should be good
then.

Thanks.

> 
> Let me know, thanks.
> Mike
>
Damien Le Moal May 28, 2020, 8:24 a.m. UTC | #3
On Wed, 2020-05-27 at 08:22 +0200, Hannes Reinecke wrote:
> Hi all,
> 
> here's the second version of my patchset to support multiple zoned
> drives with dm-zoned.
> This patchset:
> - Converts the zone array to using xarray for better scalability
> - Separates out shared structures into per-device structure
> - Enforce drive-locality for allocating and reclaiming zones
> - Lifts the restriction of 2 devices to handle an arbitrary number
>   of drives.
> 
> This gives me a near-perfect scalability by increasing the write
> speed from 150MB/s (for a cache and one zoned drive) to 300MB/s
> (for a cache and two zoned drives).

Finished running 3 tests (2 hours each) for single drive, Optane SSD +
single disk and Optane SSD + 2 disks. No problems detected.

See the attached file for a plot of the results. I also get near
perfect avergare performance scaling with the cache device from 185
MB/s with ssd+single disk to 367 MB/s with ssd+2 disks. And that is
more than 10 times higher than the legacy single drive setup at 34 MB/s
in average.

> 
> Changes to v1:
> - Include reviews from Damien
> - Reshuffle patches
> 
> Hannes Reinecke (15):
>   dm-zoned: add debugging message for reading superblocks
>   dm-zoned: secondary superblock must reside on the same devices than
>     primary superblock
>   dm-zoned: improve logging messages for reclaim
>   dm-zoned: add a 'reserved' zone flag
>   dm-zoned: convert to xarray
>   dm-zoned: temporary superblock for tertiary devices
>   dm-zoned: add device pointer to struct dm_zone
>   dm-zoned: add metadata pointer to struct dmz_dev
>   dm-zoned: allocate dm devices dynamically
>   dm-zoned: per-device reclaim
>   dm-zoned: move random and sequential zones into struct dmz_dev
>   dm-zoned: support arbitrary number of devices
>   dm-zoned: allocate zone by device index
>   dm-zoned: select reclaim zone based on device index
>   dm-zoned: prefer full zones for reclaim
> 
>  drivers/md/dm-zoned-metadata.c | 448 ++++++++++++++++++++++++-----------------
>  drivers/md/dm-zoned-reclaim.c  |  95 +++++----
>  drivers/md/dm-zoned-target.c   | 169 ++++++++++------
>  drivers/md/dm-zoned.h          |  77 ++++---
>  4 files changed, 481 insertions(+), 308 deletions(-)
>