Filesystem
- ext4 (or xfs), mount with noatime
- Scheduler – use deadline or noop
1
2
|
# echo deadline >/sys/block/sda/queue/scheduler
add
"elevator=deadline"
to
grub
.conf
|
(For more info see Linux Schedulers in TPCC like benchmark)
Memory
- Swappiness and NUMA:
1
2
|
# echo 0 > /proc/sys/vm/swappiness
add
"vm.swappiness = 0"
to
/
etc
/
sysctl
.conf
|
- Set numa interleave all
1
|
numactl
--
interleave
=
all
|
If using Percona Server we can place it into mysqld_safe script, as Percona Server supports NUMA control.
Jeremy Cole blog contains excellent overview
(and do not forget about innodb_flush_method=O_DIRECT)
CPU
Make sure there is no powersave mode enabled:
Check /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
and make sure it is not
Check /proc/cpuinfo and compare cpu MHz number to what is listed under the “model name”
Disable the “ondemand” if it is running
Example: “ondemand” is running on all the servers
1
2
3
4
|
$
ps
ax
|
grep
kondemand
|
wc
-
l
65
$
cat
/
sys
/
devices
/
system
/
cpu
/
cpu0
/
cpufreq
/
scaling_governor
ondemand
|
and we have this:
1
2
3
4
|
/
proc
/
cpuinfo
:
model
name
:
Intel
(
R
)
Xeon
(
R
)
CPU
E5
-
4640
0
@
2.40GHz
.
.
cpu
MHz
:
1200.000
|
In this case we will need to disable “ondemand”.
Memory allocator = jemalloc (http://www.canonware.com/jemalloc/). It is used in Percona installation
setting the swappiness to zero means that if something fails the mysqld might crash rather than going into swap, so its probably safer to keep a bit of swapiness, not as high as the default, but some, just in case…
also on demand governor might help you to keep the box on low load, especially with small databases, but if you have a somewhat reasonable size database, it might make the performance on the database better if you keep it running without ondemand.
for the grub parameter, deadline is really good, but reading into kernel options, ive found the following kernel bootline more effective:
elevator=noop intel_iommu=on transparent_hugepage=always acpi_irq_nobalance
irq_nobalance here is the parameter that gets things really rolling on an ubuntu server, it reduces the total load of the system by around 60%, as irq polling does not happen every second, i like to manage the irqs from bios anyways.