Suppose that a system has 8 logical CPUs(4 cores with hyperthread)
and that 5 hardware queues are provided by a block driver.
With the current algorithm this will lead to the following assignment
of logical CPU to hardware queue:
HWQ 0: 0 1
HWQ 1: 2 3
HWQ 2: 4 5
HWQ 3: 6 7
HWQ 4: (none)
One way to fix it is to change the algorithm so the assignment may be:
HWQ 0: 0 1
HWQ 1: 2 3
HWQ 2: 4 5
HWQ 3: 6
HWQ 4: 7
This has been suggested before, but the previous mapping is actually
what I originally intended, so that it's symmetric. So by design, not a
bug. It's not that I'm completely adverse to changing it, but I've yet
to see a compelling reason to do so (and your patch doesn't have that
either, it just states that it changes the mapping from X to Y).
I tend to agree that there is no good reason for this sort of artificial
mapping. I'd be happy if blk_mq_alloc_tag_set will fail (with an
explanatory log message) when given a weird mapping such as more
HW queues than cpus or non-symmetric number of HW queues...
Thoughts?
--
To unsubscribe from this list: send the line "unsubscribe linux-block" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html