mbox series

[V3,0/3] block/dm: support bio polling

Message ID 20210623074032.1484665-1-ming.lei@redhat.com (mailing list archive)
Headers show
Series block/dm: support bio polling | expand

Message

Ming Lei June 23, 2021, 7:40 a.m. UTC
Hello Guys,

Based on Christoph's bio based polling model[1], implement DM bio polling
with one very simple approach.

Patch 1 adds helper of blk_queue_poll().

Patch 2 adds .bio_poll() callback to block_device_operations, so bio
driver can implement its own logic for io polling.

Patch 3 implements bio polling for device mapper.


V3:
	- patch style change as suggested by Christoph(2/3)
	- fix kernel panic issue caused by nested dm polling, which is found
	  & figured out by Jeffle Xu (3/3)
	- re-organize setup polling code (3/3)
	- remove RFC

V2:
	- drop patch to add new fields into bio
	- support io polling for dm native bio splitting
	- add comment

Ming Lei (3):
  block: add helper of blk_queue_poll
  block: add ->poll_bio to block_device_operations
  dm: support bio polling

 block/blk-core.c         |  18 +++---
 block/blk-sysfs.c        |   4 +-
 block/genhd.c            |   2 +
 drivers/md/dm-table.c    |  24 +++++++
 drivers/md/dm.c          | 131 ++++++++++++++++++++++++++++++++++++++-
 drivers/nvme/host/core.c |   2 +-
 include/linux/blkdev.h   |   2 +
 7 files changed, 170 insertions(+), 13 deletions(-)

Comments

Mike Snitzer Feb. 28, 2022, 4:27 p.m. UTC | #1
On Wed, Jun 23 2021 at  3:40P -0400,
Ming Lei <ming.lei@redhat.com> wrote:

> Hello Guys,
> 
> Based on Christoph's bio based polling model[1], implement DM bio polling
> with one very simple approach.
> 
> Patch 1 adds helper of blk_queue_poll().
> 
> Patch 2 adds .bio_poll() callback to block_device_operations, so bio
> driver can implement its own logic for io polling.
> 
> Patch 3 implements bio polling for device mapper.
> 
> 
> V3:
> 	- patch style change as suggested by Christoph(2/3)
> 	- fix kernel panic issue caused by nested dm polling, which is found
> 	  & figured out by Jeffle Xu (3/3)
> 	- re-organize setup polling code (3/3)
> 	- remove RFC
> 
> V2:
> 	- drop patch to add new fields into bio
> 	- support io polling for dm native bio splitting
> 	- add comment
> 
> Ming Lei (3):
>   block: add helper of blk_queue_poll
>   block: add ->poll_bio to block_device_operations
>   dm: support bio polling
> 
>  block/blk-core.c         |  18 +++---
>  block/blk-sysfs.c        |   4 +-
>  block/genhd.c            |   2 +
>  drivers/md/dm-table.c    |  24 +++++++
>  drivers/md/dm.c          | 131 ++++++++++++++++++++++++++++++++++++++-
>  drivers/nvme/host/core.c |   2 +-
>  include/linux/blkdev.h   |   2 +
>  7 files changed, 170 insertions(+), 13 deletions(-)
> 
> -- 
> 2.31.1
> 

Hey Ming,

I'd like us to follow-through with adding bio-based polling support.
Kind of strange none of us that were sent this V3 ever responded,
sorry about that!

Do you have interest in rebasing this patchset (against linux-dm.git's
"dm-5.18" branch since there has been quite some churn)?  Or are you
OK with me doing the rebase?

thanks,
Mike

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
Ming Lei March 1, 2022, 12:58 a.m. UTC | #2
On Mon, Feb 28, 2022 at 11:27:44AM -0500, Mike Snitzer wrote:
> On Wed, Jun 23 2021 at  3:40P -0400,
> Ming Lei <ming.lei@redhat.com> wrote:
> 
> > Hello Guys,
> > 
> > Based on Christoph's bio based polling model[1], implement DM bio polling
> > with one very simple approach.
> > 
> > Patch 1 adds helper of blk_queue_poll().
> > 
> > Patch 2 adds .bio_poll() callback to block_device_operations, so bio
> > driver can implement its own logic for io polling.
> > 
> > Patch 3 implements bio polling for device mapper.
> > 
> > 
> > V3:
> > 	- patch style change as suggested by Christoph(2/3)
> > 	- fix kernel panic issue caused by nested dm polling, which is found
> > 	  & figured out by Jeffle Xu (3/3)
> > 	- re-organize setup polling code (3/3)
> > 	- remove RFC
> > 
> > V2:
> > 	- drop patch to add new fields into bio
> > 	- support io polling for dm native bio splitting
> > 	- add comment
> > 
> > Ming Lei (3):
> >   block: add helper of blk_queue_poll
> >   block: add ->poll_bio to block_device_operations
> >   dm: support bio polling
> > 
> >  block/blk-core.c         |  18 +++---
> >  block/blk-sysfs.c        |   4 +-
> >  block/genhd.c            |   2 +
> >  drivers/md/dm-table.c    |  24 +++++++
> >  drivers/md/dm.c          | 131 ++++++++++++++++++++++++++++++++++++++-
> >  drivers/nvme/host/core.c |   2 +-
> >  include/linux/blkdev.h   |   2 +
> >  7 files changed, 170 insertions(+), 13 deletions(-)
> > 
> > -- 
> > 2.31.1
> > 
> 
> Hey Ming,
> 
> I'd like us to follow-through with adding bio-based polling support.
> Kind of strange none of us that were sent this V3 ever responded,
> sorry about that!
> 
> Do you have interest in rebasing this patchset (against linux-dm.git's
> "dm-5.18" branch since there has been quite some churn)?  Or are you
> OK with me doing the rebase?

Hi Mike,

Actually I have one local v5.17 rebase:

https://github.com/ming1/linux/tree/my_v5.17-dm-io-poll

Also one for-5.18/block rebase which is done just now:

https://github.com/ming1/linux/tree/my_v5.18-dm-bio-poll

In my previous test on v5.17 rebase, the IOPS improvement is a bit small,
so I didn't post it out. Recently not get time to investigate
the performance further, so please feel free to work on it.


Thanks,
Ming

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
Mike Snitzer March 1, 2022, 9:19 p.m. UTC | #3
On Mon, Feb 28 2022 at  7:58P -0500,
Ming Lei <ming.lei@redhat.com> wrote:

> On Mon, Feb 28, 2022 at 11:27:44AM -0500, Mike Snitzer wrote:
> > 
> > Hey Ming,
> > 
> > I'd like us to follow-through with adding bio-based polling support.
> > Kind of strange none of us that were sent this V3 ever responded,
> > sorry about that!
> > 
> > Do you have interest in rebasing this patchset (against linux-dm.git's
> > "dm-5.18" branch since there has been quite some churn)?  Or are you
> > OK with me doing the rebase?
> 
> Hi Mike,
> 
> Actually I have one local v5.17 rebase:
> 
> https://github.com/ming1/linux/tree/my_v5.17-dm-io-poll
> 
> Also one for-5.18/block rebase which is done just now:
> 
> https://github.com/ming1/linux/tree/my_v5.18-dm-bio-poll
> 
> In my previous test on v5.17 rebase, the IOPS improvement is a bit small,
> so I didn't post it out. Recently not get time to investigate
> the performance further, so please feel free to work on it.

OK, I've rebased it on dm-5.18.

Can you please share the exact test(s) you were running?  I assume you
were running directly against a request-based device and then
comparing polling perf through dm-linear to the same underlying
request-based device?

Thanks,
Mike

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
Ming Lei March 2, 2022, 12:45 a.m. UTC | #4
On Tue, Mar 01, 2022 at 04:19:42PM -0500, Mike Snitzer wrote:
> On Mon, Feb 28 2022 at  7:58P -0500,
> Ming Lei <ming.lei@redhat.com> wrote:
> 
> > On Mon, Feb 28, 2022 at 11:27:44AM -0500, Mike Snitzer wrote:
> > > 
> > > Hey Ming,
> > > 
> > > I'd like us to follow-through with adding bio-based polling support.
> > > Kind of strange none of us that were sent this V3 ever responded,
> > > sorry about that!
> > > 
> > > Do you have interest in rebasing this patchset (against linux-dm.git's
> > > "dm-5.18" branch since there has been quite some churn)?  Or are you
> > > OK with me doing the rebase?
> > 
> > Hi Mike,
> > 
> > Actually I have one local v5.17 rebase:
> > 
> > https://github.com/ming1/linux/tree/my_v5.17-dm-io-poll
> > 
> > Also one for-5.18/block rebase which is done just now:
> > 
> > https://github.com/ming1/linux/tree/my_v5.18-dm-bio-poll
> > 
> > In my previous test on v5.17 rebase, the IOPS improvement is a bit small,
> > so I didn't post it out. Recently not get time to investigate
> > the performance further, so please feel free to work on it.
> 
> OK, I've rebased it on dm-5.18.
> 
> Can you please share the exact test(s) you were running?  I assume you
> were running directly against a request-based device and then
> comparing polling perf through dm-linear to the same underlying
> request-based device?

I run io_uring over dm-linear and dm-stripe, over two nvme disks with
2 poll_queues.

IOPS improvement can be observed, but not big.

Thanks,
Ming

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel