ib_srpt README: Update performance notes (merge r4508, r4511 and r4514 from trunk)

git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/2.2.x@4718 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2013-01-06 14:59:26 +00:00
parent dfa078d749
commit 1abb45a085
+31 -13
View File
@@ -332,20 +332,23 @@ For more information, see also:
Performance Notes - Target Side
-------------------------------
When using high-latency storage devices (hard disks), the default value
choosen by SCST for DEVICE.threads_num should be fine. When using low-latency
storage devices though (SSDs), DEVICE.threads_num should be set to 1 or 2 in
/etc/scst.conf in order to reach optimal performance for small block sizes
(e.g. 4 KB).
* Building the SCST core and the ib_srpt target driver in release mode
improves performance compared to debug mode.
When multiple InfiniBand HCA's are present in a target system the Linux
kernel by default will assign the associated interrupt handlers to CPU 0.
Even irqbalance will often assign the interrupt handlers of multiple HCA's
to the same CPU. That is unfortunate because it leads to unfair handling of
SRP sessions. The solution is to assign InfiniBand HCA interrupts manually
to different CPU's. That's possible by writing looking up the InfiniBand
interrupt numbers in /proc/interrupts and by writing proper bitmasks into
/proc/irq/<n>/smp_affinity.
* When using high-latency storage devices (hard disks), the default value
choosen by SCST for DEVICE.threads_num should be fine. When using
low-latency storage devices though (SSDs), DEVICE.threads_num should be set
to 1 or 2 in /etc/scst.conf in order to reach optimal performance for small
block sizes (e.g. 4 KB).
* When multiple InfiniBand HCA's are present in a target system the Linux
kernel by default will assign the associated interrupt handlers to CPU 0.
Even irqbalance will often assign the interrupt handlers of multiple HCA's
to the same CPU. That is unfortunate because it leads to unfair handling of
SRP sessions. The solution is to assign InfiniBand HCA interrupts manually
to different CPU's. That's possible by writing looking up the InfiniBand
interrupt numbers in /proc/interrupts and by writing proper bitmasks into
/proc/irq/<n>/smp_affinity.
Performance Notes - Initiator Side
@@ -365,6 +368,21 @@ Performance Notes - Initiator Side
* /proc/irq/${ib_int_no}/smp_affinity
Performance Notes - Both Sides
------------------------------
* Disabling CONFIG_SCHED_DEBUG and CONFIG_SCHEDSTATS in the kernel config
helps.
* Disable CONFIG_IRQSOFF_TRACER such that CONFIG_TRACE_IRQFLAGS is disabled.
* Consider which memory allocator to use. With recent kernels using the SLUB
memory allocator instead of SLAB may help. On multi-socket systems the SLAB
memory allocator may result in better performance. Please note that SLAB is
tunable while SLUB is not. See also http://lkml.org/lkml/2010/7/9/264 and
http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/.
Frequently Asked Questions
--------------------------