• Bart Van Assche's avatar
    blk-mq: Use all available hardware queues · 959f5f5b
    Bart Van Assche authored
    Suppose that a system has two CPU sockets, three cores per socket,
    that it does not support hyperthreading and that four hardware
    queues are provided by a block driver. With the current algorithm
    this will lead to the following assignment of CPU cores to hardware
    queues:
    
      HWQ 0: 0 1
      HWQ 1: 2 3
      HWQ 2: 4 5
      HWQ 3: (none)
    
    This patch changes the queue assignment into:
    
      HWQ 0: 0 1
      HWQ 1: 2
      HWQ 2: 3 4
      HWQ 3: 5
    
    In other words, this patch has the following three effects:
    - All four hardware queues are used instead of only three.
    - CPU cores are spread more evenly over hardware queues. For the
      above example the range of the number of CPU cores associated
      with a single HWQ is reduced from [0..2] to [1..2].
    - If the number of HWQ's is a multiple of the number of CPU sockets
      it is now guaranteed that all CPU cores associated with a single
      HWQ reside on the same CPU socket.
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Reviewed-by: default avatarSagi Grimberg <sagig@mellanox.com>
    Cc: Jens Axboe <axboe@fb.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ming Lei <ming.lei@canonical.com>
    Cc: Alexander Gordeev <agordeev@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    959f5f5b
blk-mq-cpumap.c 2.45 KB