net/mlx5: Use multi threaded workqueue for page fault handling
authorMoni Shoua <monis@mellanox.com>
Thu, 8 Nov 2018 19:10:14 +0000 (21:10 +0200)
committerLeon Romanovsky <leonro@mellanox.com>
Mon, 12 Nov 2018 20:21:32 +0000 (22:21 +0200)
commit90290db7669ba680b37b7006cbf6e5cee6cba779
tree965dfff83ddbd12c483690ab305a1466e7b80fbe
parentef90c5e9757d5abc80b947cbcaacc43d1e916488
net/mlx5: Use multi threaded workqueue for page fault handling

Page fault events are processed in a workqueue context. Since each QP
can have up to two concurrent unrelated page-faults, one for requester
and one for responder, page-fault handling can be done in parallel.
Achieve this by changing the workqueue to be multi-threaded.
The number of threads is the same as the number of command interface
channels to avoid command interface bottlenecks.

In addition to multi-threads, change the workqueue flags to give it high
priority.

Stress benchmark shows that before this change 85% of page faults were
waiting in queue 8 seconds or more while after the change 98% of page
faults were waiting in queue 64 milliseconds or less. The number of threads
was chosen as the number of channels to the command interface.

Fixes: d9aaed838765 ("{net,IB}/mlx5: Refactor page fault handling")
Signed-off-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/eq.c