Re: Very slow qemu device access

From: Matthew Wilcox
Date: Sun Aug 09 2020 - 23:22:53 EST


On Mon, Aug 10, 2020 at 11:10:49AM +0800, Ming Lei wrote:
> On Sun, Aug 09, 2020 at 03:25:22PM +0100, Matthew Wilcox wrote:
> > On Sun, Aug 09, 2020 at 10:40:05AM +0800, Ming Lei wrote:
> > > Hello Matthew,
> > >
> > > On Fri, Aug 07, 2020 at 06:44:16PM +0100, Matthew Wilcox wrote:
> > > >
> > > > Everything starts going very slowly after this commit:
> > > >
> > > > commit 37f4a24c2469a10a4c16c641671bd766e276cf9f (refs/bisect/bad)
> > > > Author: Ming Lei <ming.lei@xxxxxxxxxx>
> > > > Date: Tue Jun 30 22:03:57 2020 +0800
> > > >
> > > > blk-mq: centralise related handling into blk_mq_get_driver_tag
> > >
> > > Yeah, the above is one known bad commit, which is reverted in
> > > 4e2f62e566b5 ("Revert "blk-mq: put driver tag when this request is completed")
> > >
> > > Finally the fixed patch of 'blk-mq: centralise related handling into blk_mq_get_driver_tag'
> > > is merged as 568f27006577 ("blk-mq: centralise related handling into blk_mq_get_driver_tag").
> > >
> > > So please test either 4e2f62e566b5 or 568f27006577 and see if there is
> > > such issue.
> >
> > 4e2f62e566b5 is good
> > 568f27006577 is bad
>
> Please try the following patch, and we shouldn't take flush request
> account into driver tag allocation, because it always shares the
> data request's tag:
>
> >From d508415eee08940ff9c78efe0eddddf594afdb94 Mon Sep 17 00:00:00 2001
> From: Ming Lei <ming.lei@xxxxxxxxxx>
> Date: Mon, 10 Aug 2020 11:06:15 +0800
> Subject: [PATCH] block: don't double account of flush request's driver tag
>
> In case of none scheduler, we share data request's driver tag for
> flush request, so have to mark the flush request as INFLIGHT for
> avoiding double account of this driver tag.

Yes, this fixes the problem. Thanks!