Commit 631af550 authored by Sagi Grimberg's avatar Sagi Grimberg Committed by Nicholas Bellinger

iser-target: Use WQ_UNBOUND for completion workqueue

Bound workqueues might be too restrictive since they allow
only a single core per session for processing completions.
WQ_UNBOUND will allow bouncing to another CPU if the running
CPU is currently busy. Luckily, our workqueues are NUMA aware
and will first try to bounce within the same NUMA socket.
My measurements with NULL backend devices show that there is
no (noticeable) additional latency as a result of the change.
I'd expect even to gain performance when working with fast
devices that also allocate MSIX interrupt vectors.

While we're at it, make it WQ_HIGHPRI since processing
completions is really a high priority for performance.
Signed-off-by: default avatarSagi Grimberg <sagig@mellanox.com>
Reported-by: default avatarMoussa Ba <moussaba@micron.com>
Signed-off-by: default avatarMoussa Ba <moussaba@micron.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent f64d2792
...@@ -3320,7 +3320,8 @@ static int __init isert_init(void) ...@@ -3320,7 +3320,8 @@ static int __init isert_init(void)
{ {
int ret; int ret;
isert_comp_wq = alloc_workqueue("isert_comp_wq", 0, 0); isert_comp_wq = alloc_workqueue("isert_comp_wq",
WQ_UNBOUND | WQ_HIGHPRI, 0);
if (!isert_comp_wq) { if (!isert_comp_wq) {
isert_err("Unable to allocate isert_comp_wq\n"); isert_err("Unable to allocate isert_comp_wq\n");
ret = -ENOMEM; ret = -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment