nvme: utilize two queue maps, one for reads and one for writes
authorJens Axboe <axboe@kernel.dk>
Wed, 31 Oct 2018 14:36:31 +0000 (08:36 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 7 Nov 2018 02:47:54 +0000 (19:47 -0700)
commit9cc1d6b1190fc67471b65f34a32881ce0e73cbdf
treeff52e673fd7e0215cd9fb90326404a644fabfd48
parent60e051319f569e2f6e8c60b7550633a81a3e7928
nvme: utilize two queue maps, one for reads and one for writes

NVMe does round-robin between queues by default, which means that
sharing a queue map for both reads and writes can be problematic
in terms of read servicing. It's much easier to flood the queue
with writes and reduce the read servicing.

Implement two queue maps, one for reads and one for writes. The
write queue count is configurable through the 'write_queues'
parameter.

By default, we retain the previous behavior of having a single
queue set, shared between reads and writes. Setting 'write_queues'
to a non-zero value will create two queue sets, one for reads and
one for writes, the latter using the configurable number of
queues (hardware queue counts permitting).

Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/pci.c