Over the last few months I have done a number of Linux on IBM POWER installs, as such I have done some research on how to get the best out of the systems. Most of my day to day work involves me working with AIX on POWER so this was a learning curve for me. Along with this I have written a number of related articles that tie in with this work, they are 'Installing IBM POWER Linux Tool' else you can't make use of the advanced POWER chip features. Also 'Java on IBM POWER Linux' which has a number of considerations on POWER Linux to get the best out of it. Examples below are done on Redhat 6x;
First is a number of recommended environmental settings -
# fs.file-max = 4878674
# ulimit -n 1048576
# ulimit -u unlimited
# ulimit -s 524288
These have been used in a number of tests relating to high performance systems using DB2 and Java.
Another setting is with disabling the preempt scheduler -
# mount -t debugfs debugfs /sys/kernel/debug
# echo NO_WAKEUP_PREEMPT > /sys/kernel/debug/sched_features
# umount /sys/kernel/debug
The preempt scheduler relates to the releasing of CPU time when a process of a higher priority wants to use the CPU, so if you have a lot of things with similar priorities the CPU time can be consumed with this swapping in and out.
It can be turned back on via:
# echo WAKEUP_PREEMPTION > /debug/sched_features
Other things I have looked at are -
Disable Idle Power Saver
The latest Power servers have a new mode of energy savings called Idle Power Saver, which is enabled by default. Idle Power Saver will put the processor into a power saving mode when it detects that utilization has gone below a certain threshold for a specified amount of time. Switching the processor into and out of power saving mode takes time. For sustained peak performance it is best not to let the system drop into power saving mode. Idle Power Saver can be disabled by using the web interface to the Advanced System Management Interface (ASMI) console. Navigate to System Configuration -> Power Management -> Idle Power Saver. Set the Idle Power Saver value to Disabled, then click on the "Save settings" button on the bottom of the page.
If the systems uses only IPv4 connections; it does not need IPv6 support. Your get a small boost to performance by disabling IPv6 support in Linux. With IPv6 disabled, the system wont spend extra time trying to work with possible IPv6 connections.
IPv6 support can be disabled in the Linux kernel by adding the following options to the kernel command line in the boot loader configuration.
Disabling IPv6 support in the Linux kernel guarantees that no IPv6 code will ever be run as long as the system is booted. That may be too heavy-handed. A lighter touch is to let the kernel boot with IPv6 support and then use the sysctl facility to dynamically set a kernel variable to disable IPv6.
sysctl -w net.ipv6.conf.all.disable_ipv6=1
The example above disables IPv6 on all interfaces. You can optionally disable IPv6 support on specific interfaces.
sysctl -w net.ipv6.conf.eth0.disable_ipv6=1
sysctl -w net.ipv6.conf.eth1.disable_ipv6=1
This is something I have not tried, but we will need to think about it if we do network testing and do this if not already -
Disable IPv6 support in the JVM. This workload only uses IPv4. There is no need for the JVM to spend any time trying to use IPv6.
Disclaimer - Your mileage will vary
All performance data contained in this blog was obtained in a specific operating environment and under set conditions so is presented as an example. Performance obtained in other operating environments may vary and customers should conduct their own testing.