Red Hat Enterprise Linux 7

Performance Tuning Guide

Optimizing subsystem throughput in Red Hat Enterprise Linux 7

Red Hat Subject Matter Experts

Edited by

Milan Navrátil

Red Hat Customer Content Services

Laura Bailey

Red Hat Customer Content Services

Charlie Boyle

Red Hat Customer Content Services

Abstract

The Red Hat Enterprise Linux 7 Performance Tuning Guide explains how to optimize Red Hat Enterprise Linux 7 performance. It also documents performance-related upgrades in Red Hat Enterprise Linux 7.
The Performance Tuning Guide presents only field-tested and proven procedures. Nonetheless, all prospective configurations should be set up and tested in a testing environment before being applied to a production system. Backing up all data and configuration settings prior to tuning is also recommended.

Note

To expand your expertise, you might also be interested in the Red Hat Enterprise Linux Performance Tuning (RH442) training course.
1. Introduction
2. Performance Monitoring Tools
2.1. /proc
2.2. GNOME System Monitor
2.3. Performance Co-Pilot (PCP)
2.4. Tuna
2.5. Built in command line tools
2.5.1. top
2.5.2. ps
2.5.3. Virtual Memory Statistics (vmstat)
2.5.4. System Activity Reporter (sar)
2.6. perf
2.7. turbostat
2.8. iostat
2.9. irqbalance
2.10. ss
2.11. numastat
2.12. numad
2.13. SystemTap
2.14. OProfile
2.15. Valgrind
3. Tuned
3.1. Tuned Overview
3.1.1. Plug-ins
3.1.2. Installation and Usage
3.1.3. Custom Profiles
3.1.4. Tuned-adm
3.1.5. Powertop2tuned
3.2. Performance Tuning with tuned and tuned-adm
4. CPU
4.1. Considerations
4.1.1. System Topology
4.1.2. Scheduling
4.1.3. Interrupt Request (IRQ) Handling
4.2. Monitoring and diagnosing performance problems
4.2.1. turbostat
4.2.2. numastat
4.2.3. /proc/interrupts
4.3. Configuration suggestions
4.3.1. Configuring kernel tick time
4.3.2. Setting hardware performance policy (x86_energy_perf_policy)
4.3.3. Setting process affinity with taskset
4.3.4. Managing NUMA affinity with numactl
4.3.5. Automatic NUMA affinity management with numad
4.3.6. Tuning scheduling policy
4.3.7. Setting interrupt affinity
4.3.8. Configuring CPU, thread, and interrupt affinity with Tuna
5. Memory
5.1. Considerations
5.1.1. Larger Page Size
5.1.2. Translation Lookaside Buffer size
5.2. Monitoring and diagnosing performance problems
5.2.1. Monitoring memory usage with vmstat
5.2.2. Profiling application memory usage with Valgrind
5.3. Configuring HugeTLB huge pages
5.3.1. Configuring huge pages at boot time
5.3.2. Configuring huge pages at run time
5.4. Configuring Transparent Huge Pages
5.5. Configuring system memory capacity
5.5.1. Virtual Memory parameters
5.5.2. File system parameters
5.5.3. Kernel Parameters
6. Storage and File Systems
6.1. Considerations
6.1.1. Solid-State Disks
6.1.2. I/O Schedulers
6.1.3. File systems
6.1.4. Generic tuning considerations for file systems
6.2. Monitoring and diagnosing performance problems
6.2.1. Monitoring system performance with vmstat
6.2.2. Monitoring I/O performance with iostat
6.2.3. Storage monitoring with SystemTap
6.3. Configuration tools
6.3.1. Configuring tuning profiles for storage performance
6.3.2. Setting the default I/O scheduler
6.3.3. Configuring the I/O scheduler for a device
6.3.4. Tuning the deadline scheduler
6.3.5. Tuning the cfq scheduler
6.3.6. Tuning the noop scheduler
6.3.7. Configuring file systems for performance
7. Networking
7.1. Considerations
7.1.1. Before you tune
7.1.2. Bottlenecks in packet reception
7.2. Monitoring and diagnosing performance problems
7.2.1. ss
7.2.2. ip
7.2.3. dropwatch
7.2.4. ethtool
7.2.5. /proc/net/snmp
7.2.6. Network monitoring with SystemTap
7.3. Configuration tools
7.3.1. Tuned-adm profiles for network performance
7.3.2. Configuring the hardware buffer
7.3.3. Configuring interrupt queues
7.3.4. Configuring socket receive queues
7.3.5. Configuring Receive-Side Scaling (RSS)
7.3.6. Configuring Receive Packet Steering (RPS)
7.3.7. Configuring Receive Flow Steering (RFS)
7.3.8. Configuring Accelerated RFS
A. Tool Reference
A.1. irqbalance
A.2. Tuna
A.3. ethtool
A.4. ss
A.5. tuned
A.6. tuned-adm
A.7. perf
A.8. Performance Co-Pilot (PCP)
A.9. vmstat
A.10. x86_energy_perf_policy
A.11. turbostat
A.12. numastat
A.13. numactl
A.14. numad
A.14.1. Using numad from the command line
A.14.2. Using numad as a service
A.14.3. Pre-placement advice
A.14.4. Using numad with KSM
A.15. OProfile
A.16. taskset
A.17. SystemTap
B. Revision History