All of lore.kernel.org
 help / color / mirror / Atom feed
* [Question] on blk_mq_map_queues()
@ 2017-10-05 13:28 John Garry
  2017-10-05 15:59 ` Christoph Hellwig
  0 siblings, 1 reply; 5+ messages in thread
From: John Garry @ 2017-10-05 13:28 UTC (permalink / raw)
  To: linux-block, axboe, hch, maxg; +Cc: Linuxarm

Hi All,

I have a question on the core-to-hw queue mapping in 
blk_mq_map_queues(). In looking at the latest version, we map the first 
$nr_queues cores to separate queues, and then map sibling threaded-cores 
to the same queue. First off, I am just curious why we always map the 
first batch of cores to separate queues.

As I understand for blk mq, we try to map cores which are physically 
close to the same hw queue (in the case of more cores than hw queues). 
So, by this rationale, we would not map the first $nr_queues cores to 
each separate queue, but would rather map core [0, $nr_cores/$nr_queues) 
to q0, [$nr_cores/$nr_queues, 2*$nr_cores/$nr_queues) to q1, and so on 
(assuming $nr_queues is evenly divisible into $nr_cores, for simplicity).

So what is the full desired mapping behaviour?

The specific problem I see is that for my 64-core system (no 
hyperthreading) and 16 hw queues, I see cores per 4-core cluster being 
mapped to different queues, when I would expect them to be mapped to 
same queue.

I know that we can add our own per-driver mapping function to solve, but 
I would expect that that generic mapper would cover a generic platform.

Thanks in advance,
John

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-10-05 17:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-05 13:28 [Question] on blk_mq_map_queues() John Garry
2017-10-05 15:59 ` Christoph Hellwig
2017-10-05 16:06   ` John Garry
2017-10-05 16:27     ` Christoph Hellwig
2017-10-05 17:19       ` John Garry

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.