]> www.infradead.org Git - users/jedix/linux-maple.git/commit
RDS: IB: Run rds_fmr_flush WQ closer to ib_device
authorWei Lin Guay <wei.lin.guay@oracle.com>
Wed, 18 Nov 2015 11:23:08 +0000 (12:23 +0100)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 14 Apr 2016 01:01:53 +0000 (18:01 -0700)
commit24163058321e6725c265dd33be5c6c9f42cb6843
treee817872df8f53be0e463bea9c5efdf644845c7cf
parentab9a098e526ad97b34ce21539303de5363bd8945
RDS: IB: Run rds_fmr_flush WQ closer to ib_device

Orabug 22269408

rds_fmr_flush workqueue is calling ib_unmap_fmr
to invalidate a list of FMRs. Today, this workqueue
can be scheduled at any CPUs. In a NUMA-aware system,
schedule this workqueue to run on a CPU core closer to
ib_device can improve performance. As for now, we use
"sequential-low" policy. This policy selects two lower
cpu cores closer to HCA. In a non-NUMA aware system,
schedule rds_fmr_flush workqueue in a fixed cpu core
improves performance.

The mapping of cpu to the rds_fmr_flush workqueue
can be enabled/disabled via  sysctl and it is enable
by default. To disable the feature, use below sysctl.

rds_ib_sysctl_disable_unmap_fmr_cpu = 1

Putting down some of the rds-stress performance number
comparing default and sequential-low policy in a NUMA
system with Oracle M4 QDR and Mellanox CX3.

rds-stress 4 conns, 32 threads, 16 depths, RDMA write
and unidirectional (higher is better).

(Oracle M4 QDR)
default : 645591 IOPS
sequential-low : 806196 IOPS

(Mellanox CX3)
default : 473836 IOPS
sequential-low : 544187 IOPS

Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Knut Omang <knut.omang@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: Wei Lin Guay <wei.lin.guay@oracle.com>
net/rds/ib.h
net/rds/ib_rdma.c
net/rds/ib_sysctl.c