On 10/29/18 11:00 AM, Jens Axboe wrote: > On 10/28/18 8:40 PM, jianchao.wang wrote: >> >> >> On 10/29/18 10:02 AM, jianchao.wang wrote: >>> Hi Jens >>> >>> On 10/28/18 12:52 AM, Jens Axboe wrote: >>>> On 10/27/18 10:48 AM, Jens Axboe wrote: >>>>> On 10/27/18 8:19 AM, jianchao.wang wrote: >>>>>> Hi Jens >>>>>> >>>>>> On 10/26/18 5:16 AM, Jens Axboe wrote: >>>>>>> It's just a pointer to set->mq_map, use that instead. >>>>>> Instead of using the set->mq_map and then a two-dimensional set->mq_map, >>>>>> how about migrate the mq_map from per-set to per-cpuctx ? >>>>>> something like: >>>>>> q->queue_hw_ctx[ctx->map[type]] >>>>> >>>>> I think the current series is pretty clean in that regard, it goes >>>>> from members -> map -> map array. I'd be willing to look at a >>>>> conversion on top of that, if it makes things cleaner. >>>> >>>> On top of that, this: >>>> >>>> q->queue_hw_ctx[set->map[type].mq_map[cpu]] >>>> >>>> is one less pointer dereference, so more efficient. >>>> >>> >>> Saving the blk_mq_hw_ctx into blk_mq_ctx direclty maybe more direct and efficient. >>> something like, >>> >>> ctx->map_hctxs[type] >>> >>> all of the memory accessing is local. >>> >>> What we need to pay for this is do mapping for every request_queue. >> >> Actually not, this could be done in blk_mq_map_swqueue. > > I'm not interested in pursuing this for this series. If you want > to work on it on top and have it tested and evaluated separately, > then that's obviously fine. But there's no point in mixing it > up with these changes, as it's an orthogonal change. > Yes, got it. Thanks for your kindly response. Sincerely Jianchao