mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-22 07:06:22 +00:00
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:
+31
-13
@@ -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
|
||||
--------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user