Re: [PATCH v3] block: fix blk-iolatency accounting underflow
From: Liu Bo <hidden>
Date: 2018-12-17 23:23:52
Also in:
cgroups, lkml
On Mon, Dec 17, 2018 at 1:28 PM Dennis Zhou [off-list ref] wrote:
On Mon, Dec 17, 2018 at 11:42:28AM -0800, Liu Bo wrote:quoted
On Mon, Dec 17, 2018 at 8:04 AM Dennis Zhou [off-list ref] wrote:quoted
The blk-iolatency controller measures the time from rq_qos_throttle() to rq_qos_done_bio() and attributes this time to the first bio that needs to create the request. This means if a bio is plug-mergeable or bio-mergeable, it gets to bypass the blk-iolatency controller.Hi, I have a question about merging in plug list, since plug merges are done before rq_qos_throttle(), why would plug-mergeable bios bypass the controller? thanks, liuboHi Liubo, BIO_TRACKED is tagging the bio that is responsible for allocating a new request, so that rq_qos controllers can decide whether or not they want to process the bio any part of the way. I should have phrased that a little better in the commit message. It's not that the bio itself is bypassing the blk-iolatency controller, but the blk-iolatency controller deciding to not do anything based on the BIO_TRACKED flag. This doesn't change any of the function calls made on a bio/request.
Thanks for the explanation. I see it now, so the mentioned series had associated all bios with a blkg if possible so that done_bio() bumps up inflight counter even in case a bio has been merged in a previous request. BIO_TRACKED seems to be too generic to use, but otherwise it makes sense to me, Reviewed-by: Liu Bo <redacted> thanks, liubo
Thanks, Dennis