All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] genirq/affinity: irq vector spread among online CPUs as far as possible
@ 2018-02-06 12:17 ` Ming Lei
  0 siblings, 0 replies; 24+ messages in thread
From: Ming Lei @ 2018-02-06 12:17 UTC (permalink / raw)
  To: Jens Axboe, Christoph Hellwig, Thomas Gleixner, linux-kernel
  Cc: linux-block, linux-nvme, Laurence Oberman, Ming Lei

Hi,

This patchset tries to spread among online CPUs as far as possible, so
that we can avoid to allocate too less irq vectors with online CPUs
mapped.

For example, in a 8cores system, 4 cpu cores(4~7) are offline/non present,
on a device with 4 queues:

1) before this patchset
	irq 39, cpu list 0-2
	irq 40, cpu list 3-4,6
	irq 41, cpu list 5
	irq 42, cpu list 7

2) after this patchset
	irq 39, cpu list 0,4
	irq 40, cpu list 1,6
	irq 41, cpu list 2,5
	irq 42, cpu list 3,7

Without this patchset, only two vectors(39, 40) can be active, but there
can be 4 active irq vectors after applying this patchset.

One disadvantage is that CPUs from different NUMA node can be mapped to
one same irq vector. Given generally one CPU should be enough to handle
one irq vector, it shouldn't be a big deal. Especailly more vectors have
to be allocated, otherwise performance can be hurt in current
assignment.

Thanks
Ming

Ming Lei (5):
  genirq/affinity: rename *node_to_possible_cpumask as *node_to_cpumask
  genirq/affinity: move actual irq vector spread into one helper
  genirq/affinity: support to do irq vectors spread starting from any
    vector
  genirq/affinity: irq vector spread among online CPUs as far as
    possible
  nvme: pci: pass max vectors as num_possible_cpus() to
    pci_alloc_irq_vectors

 drivers/nvme/host/pci.c |   2 +-
 kernel/irq/affinity.c   | 145 +++++++++++++++++++++++++++++++-----------------
 2 files changed, 95 insertions(+), 52 deletions(-)

-- 
2.9.5

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

end of thread, other threads:[~2018-03-02 23:08 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-06 12:17 [PATCH 0/5] genirq/affinity: irq vector spread among online CPUs as far as possible Ming Lei
2018-02-06 12:17 ` Ming Lei
2018-02-06 12:17 ` [PATCH 1/5] genirq/affinity: rename *node_to_possible_cpumask as *node_to_cpumask Ming Lei
2018-02-06 12:17   ` Ming Lei
2018-03-02 23:06   ` Christoph Hellwig
2018-03-02 23:06     ` Christoph Hellwig
2018-02-06 12:17 ` [PATCH 2/5] genirq/affinity: move actual irq vector spread into one helper Ming Lei
2018-02-06 12:17   ` Ming Lei
2018-03-02 23:07   ` Christoph Hellwig
2018-03-02 23:07     ` Christoph Hellwig
2018-02-06 12:17 ` [PATCH 3/5] genirq/affinity: support to do irq vectors spread starting from any vector Ming Lei
2018-02-06 12:17   ` Ming Lei
2018-03-02 23:07   ` Christoph Hellwig
2018-03-02 23:07     ` Christoph Hellwig
2018-02-06 12:17 ` [PATCH 4/5] genirq/affinity: irq vector spread among online CPUs as far as possible Ming Lei
2018-02-06 12:17   ` Ming Lei
2018-03-02 23:08   ` Christoph Hellwig
2018-03-02 23:08     ` Christoph Hellwig
2018-02-06 12:17 ` [PATCH 5/5] nvme: pci: pass max vectors as num_possible_cpus() to pci_alloc_irq_vectors Ming Lei
2018-02-06 12:17   ` Ming Lei
2018-03-01  0:52   ` Christoph Hellwig
2018-03-01  0:52     ` Christoph Hellwig
2018-03-01 17:17     ` Keith Busch
2018-03-01 17:17       ` Keith Busch

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.