Developers Guide

Performance considerations
49 Dell EMC SC Series with Red Hat Enterprise Linux 7x | CML1071
The following example is applied to all SC Series storage devices.
# cat >> /etc/udev/rules.d/50-compelnt.rules <<EOT
ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_VENDOR}=="COMPELNT",
ENV{ID_MODEL}=="Compellent Vol", RUN+="/bin/sh -c '/bin/echo 2048 >
/sys%p/queue/max_sectors_kb'"
EOT
This udev rule triggers with the discovery of newly presented SC Series storage volumes. To apply this rule to
existing SC Series storage volumes run the following command.
# udevadm trigger --verbose --subsystem-match=block --property-
match=ID_VENDOR="COMPELNT" && sleep 3 && systemctl reload multipathd.service >
/dev/null
The increase of the max_sectors_kb value needs to work in conjunction with other
configurable parameters within the I/O stack to enable seamless end to end large
block I/O; some of these additional parameters include but is not limited to
sg_tablesize and the underlying hardware driver layer and its respective
throughput limits.
Note: With RHEL 7.4, the max_sectors_kb value can also be configured using the /etc/multipath.conf file
within the defaults clause or within each device multipath clause. The configuration value will be applied to all
path devices as well as the multipath device.
4.6 iSCSI considerations
Tuning iSCSI is an effort in both Ethernet network and block-level tuning. Evaluate the common Ethernet
kernel tunable parameters in order to determine the settings that provide the optimal performance gain with
iSCSI. The use of Jumbo frames can lead to improved iSCSI performance when used with 1Gb/10Gb
Ethernet. Like Fibre Channel, iSCSI changes should be made individually, incrementally, and evaluated
against multiple workload types in order to fully understand the effects on overall performance. In other words,
tuning iSCSI is often more time consuming because of the block-level subsystem tuning considerations in
addition to network (Ethernet) tuning. A solid understanding of the various Linux subsystem layers involved is
necessary to effectively tune the system.
Kernel parameters that can be tuned for performance are found in the /proc/sys/net/core and
/proc/sys/net/ipv4 kernel parameters. Once optimal values are determined, permanently set these in the
/etc/sysctl.conf file. Like most other modern operating system platforms, Linux can efficiently auto-tune TCP
buffers. However by default, some of the settings are conservatively low. Experimenting with the following
kernel parameters can lead to improved network performance, and subsequently improve iSCSI performance.
TCP Max Buffer Sizes:
- net.core.rmem_max
- net.core.wmem_max
Linux Auto-tuning buffer limits:
- net.ipv4.tcp_rmem
- net.ipv4.tcp_wmem
net.ipv4.tcp_window_scaling
net.ipv4.tcp_timestamps
net.ipv4.tcp_sack