Thread (10 messages) 10 messages, 3 authors, 2018-11-14

Re: [PATCH V6 3/5] blk-mq: ensure hctx to be ran on mapped cpu when issue directly

From: Ming Lei <tom.leiming@gmail.com>
Date: 2018-11-14 03:03:15
Also in: lkml

On Wed, Nov 14, 2018 at 10:15 AM jianchao.wang
[off-list ref] wrote:
Hi Jens

Thanks for your kindly response.

On 11/13/18 9:44 PM, Jens Axboe wrote:
quoted
On 11/13/18 2:56 AM, Jianchao Wang wrote:
quoted
When issue request directly and the task is migrated out of the
original cpu where it allocates request, hctx could be ran on
the cpu where it is not mapped.
To fix this,
 - insert the request forcibly if BLK_MQ_F_BLOCKING is set.
 - check whether the current is mapped to the hctx, if not, insert
   forcibly.
 - invoke __blk_mq_issue_directly under preemption disabled.
I'm not too crazy about this one, adding a get/put_cpu() in the hot
path, and a cpumask test. The fact is that most/no drivers care
about strict placement. We always try to do so, if convenient,
since it's faster, but this seems to be doing the opposite.

I'd be more inclined to have a driver flag if it needs guaranteed
placement, using one an ops BLK_MQ_F_STRICT_CPU flag or similar.

What do you think?
I'd inclined blk-mq should comply with a unified rule, no matter the
issuing directly path or inserting one. Then blk-mq would have a simpler
model. And also this guarantee could be a little good for drivers,
especially the case where cpu and hw queue mapping is 1:1.
I guess it is quite hard to respect this rule 100%, such as in case of
CPU hotplug.

Thanks,
Ming Lei
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help