Tuning a server according to specific requirements is not an easy task. You need to know a lot of system parameters and how to change them in a intelligent manner.
Red Hat offers a tool called tuned-adm that makes these changes easy by using tuning profiles.
The tuned-adm command requires the tuned package (if not already installed):
# yum install -y tuned
A tuning profile consists in a list of system changes corresponding to a specific requirement.
To get the list of the available tuning profiles, type:
# tuned-adm list Available profiles: - balanced - desktop - latency-performance - network-latency - network-throughput - powersave - sap - throughput-performance - virtual-guest - virtual-host Current active profile: virtual-guest
Note: All these tuning profiles are explained in details in the tuned-adm man page.
To only get the active profile, type:
# tuned-adm active Current active profile: virtual-guest
To get the recommended tuning profile in your current configuration, type:
# tuned-adm recommend virtual-guest
To apply a different tuning profile (here throughput-performance), type:
# tuned-adm profile throughput-performance
Sources: tuned-adm and tuned man pages.
In some cases, because changing an existing profile is not advisable, creating a new profile is the best option.
In the Red Hat Performance Brief dedicated to the SAS software, all this process is clearly described for RHEL 7 (page 12).
Go to the tuning profiles directory:
# cd /usr/lib/tuned/profiles
Note: Alternatively, you could create the /etc/tuned directory if it doesn’t already exist.
Create a new directory with the name of the profile chosen:
# mkdir sas-performance
RHEL 7 supports class based profiles so you can inherit the characteristics of another profile (with an include statement) and then customize it further.
In the SAS case, the easiest option is to make the new profile inherit from the throughput-performance profile.
Create a new file in the sas-performance directory called tuned.conf and paste the following lines:
Any changes made beyond the include statement will override the throughput-performance profile.
Then, enable the new profile:
# tuned-adm profile sas-performance
Tuned can also dynamically adjust your configuration.
This is done through the /etc/tuned/tuned-main.conf file.
In this file, you need to assign a value of 1 to the dynamic_tuning parameter:
dynamic_tuning = 1
You then need to restart the tuned service:
# systemctl restart tuned
To get an idea of the new configuration, check the /var/log/tuned/tuned.log file:
# tail -f /var/log/tuned/tuned.log 2016-07-11 09:49:34,850 INFO tuned.daemon.application: dynamic tuning is enabled (can be overriden in plugins) 2016-07-11 09:49:34,850 INFO tuned.daemon.daemon: using sleep interval of 1 second(s) 2016-07-11 09:49:34,850 INFO tuned.daemon.daemon: dynamic tuning is enabled (can be overriden by plugins) 2016-07-11 09:49:34,850 INFO tuned.daemon.daemon: using update interval of 10 second(s) (10 times of the sleep interval) 2016-07-11 09:49:34,851 INFO tuned.profiles.loader: loading profile: virtual-guest 2016-07-11 09:49:34,855 INFO tuned.daemon.controller: starting controller 2016-07-11 09:49:34,855 INFO tuned.daemon.daemon: starting tuning ...
Source: tuned-main.conf man page.
You can also:
- a quick tuned introduction by Jeremy Eder,
- have a look at a Red Hat video about the tuned-adm command (3min/2014),
- watch the 2015 Red Hat Summit video about RHEL Performance Analysis & Tuning (117min/2015) with its associated presentation,
- read a 2015 Red Hat Summit presentation about Cloud Architecture & Performance Workloads,
- watch the 2015 Red Hat Summit video about Database Performance & Tuning (68min/2015) with its associated presentation,
- have a look at a Red Hat video about Performance Tuning of Docker and RHEL Atomic (42min/2015),
- read the RHEL Network Performance Tuning Guide or the RHEL 7 Low latency Performance Tuning Guide,
- have a look at the Red Hat Performance Brief about Optimizing SAS on RHEL 6 & 7,
- read a Red Hat document about Deploying Oracle RAC Database 12c on RHEL 7,
- watch the Red Hat Summit 2014 Performance Analysis & Tuning 1 (62min/2014) and Performance Analysis & Tuning 2 (64min/2014) videos,
- read a Red Hat article about the last Kernel Networking Enhancements in the RHEL 7.2 and the related presentation about Pushing Kernel Networking,
- read this Red Hat presentation about KVM performance,
- use the glances command, less known than top but displaying even more information (network usage, disk I/O, filesystem occupation rate, etc),
- read this Redpill Linpro article about Red Hat Performance Tuning,
- watch this Red Hat highly technical video about Network Performance Tuning (18min/2016),
- read this ServerFault question about Red Hat tuning for single application with few TCP clients,
- read this article about a dedicated Tuned profile for Oracle databases,
- read this test of webservers on RHEL 7.2 if you are interested in server performances,
- read this article about the iotop command,
- read a Red Hat presentation about Performance Analysis and Tuning of RHEL 6 & RHEL 7,
- watch this 2017 DevConf.cz performance tuning presentation on RHEL 7 (53min/2017),
- have a look at the tuned website,
- read the Red Hat Summit 2017 Performance Analysis and Tuning presentation,
- read this Red Hat article about The need for speed and the kernel datapath – recent improvements in UDP packets processing,
- have a look at Brendan Gregg‘s articles about Linux Load Averages: Solving the Mystery and CPU Utilization is Wrong,
- Read this IBM article about Tuned daemon profiles in Red Hat Enterprise Linux (RHEL) 7.x and CentOS 7.x,
- have a look at the tuned repository,
- read Saurabh Purnaye‘s article about Linux Performance Optimization.