+ All Categories
Home > Education > Tuning Linux for Databases.

Tuning Linux for Databases.

Date post: 15-Jan-2017
Category:
Upload: alexey-lesovsky
View: 117 times
Download: 0 times
Share this document with a friend
30
Transcript

AboutPostgreSQL DBA.

Linux system administrator.

PostgreSQL-Consulting.com:● 24/7 support.● Audit, performance optimizations.● Consulting and Training.● Monitoring and Emergency.● Capacity planning.

Slides: https://goo.gl/awmZ2H

Agenda

RDBMS on Linux, why?

Databases and Resources.

OS subsystems.

CPU, Process scheduling, Power saving policies.

Memory, VM, NUMA, Huge pages.

Storage, File Systems, Input/Output.

Other misc.

Why Linux?

Linux is a good choice:● Active development & Community support.● A lot of features & Fast implementation.● Stable & Mature & Durable.

Databases & Resources

ConcurrencyQuery speedSort, group, hash,...

OS page cacheDB buffer poolLocal process cache

DB data filesTransaction LogCold start

CPU Memory

Storage

Databases & Resources

CPU SchedulingNUMAPower Saving

Virtual MemoryNUMAHuge Pages

File SystemsStorage I/O

CPU Memory

Storage

Resources

CPU scheduler.

Virtual memory and NUMA.

Huge pages.

File systems.

Storage IO.

Power saving policy.

Others.

CPU scheduling

CPU scheduler responsible for proper processes planning:

Sysctl:● kernel.sched_migration_cost_ns = 5000000 (default: 500000).● kernel.sched_autogroup_enabled = 0 (default: 1).http://www.postgresql.org/message-id/[email protected]

http://kernelnewbies.org/Linux_2_6_38#head-59575a6aeafa38490226a560ee02de89829a5b20

CPU scheduling

CPU scheduler responsible for proper processes planning:

Sysctl:● kernel.sched_migration_cost_ns = 5000000 (default: 500000).● kernel.sched_autogroup_enabled = 0 (default: 1).http://www.postgresql.org/message-id/[email protected]

http://kernelnewbies.org/Linux_2_6_38#head-59575a6aeafa38490226a560ee02de89829a5b20

Be aware on Ubuntu: 12.04 #1055222 and 14.04 #1422016.

Use noautogroup kernel param instead of sysctl.conf.

Virtual Memory

What is it?

Allocator, Caching, Dirty pages and Writeback.

Virtual Memory

Virtual Memory

Sysctl:

vm.dirty_background_ratio & vm.dirty_ratio = disable it.

vm.dirty_background_bytes & vm.dirty_bytes = depends on ...

RAID cache size, 64MB/128MB otherwise

Virtual Memory

Out-of-memory & OOM-Killer

Sysctl: vm.swappiness = 1 (default: 60)

NUMA

S — Socket C — CPU core M — Memory bank

NUMA

BIOS: enable memory node interleaving.

Kernel boot: numa=off.

numactl utility.

Sysctl:● vm.zone_reclaim_mode = 0 (default: 0).● kernel.numa_balancing = 0 (default: 0).

Huge Pages

Huge pages vs. Transparent huge pages.

Huge pages are supported by many RDBMS.

Always disable transparent huge pages.

Huge Pages

Huge pages vs. Transparent huge pages.

Huge pages are supported by many RDBMS.

Always disable transparent huge pages.

/etc/rc.local:● echo never > /sys/kernel/mm/transparent_hugepage/enabled● echo never > /sys/kernel/mm/transparent_hugepage/defrag

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

Disable Write Cache:● hdparm -W0 /dev/device● MegaCli64 -LDSetProp -DisDskCache -Lall -aALL

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

Disable Write Cache:● hdparm -W0 /dev/device● MegaCli64 -LDSetProp -DisDskCache -Lall -aALL

Hardware RAID + BBU = barrier=0 (disable).

Software RAID = barrier=1 (enable).

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

Disable Write Cache:● hdparm -W0 /dev/device● MegaCli64 -LDSetProp -DisDskCache -Lall -aALL

Hardware RAID + BBU = barrier=0 (disable).

Software RAID = barrier=1 (enable).

Enterprise SSD with Power Loss Protection = barrier=0 (disable).

Storage IOSATA/SAS vs SSD.

IO elevators.

Storage IOSATA/SAS vs SSD.

IO elevators:● noop: SSD, PCIe SSD, hi-end storages.● deadline: RAID, SATA/SAS.● cfq: good default.● none (multi-queue block IO): SSD, PCIe SSD.

Storage IOSATA/SAS vs SSD.

IO elevators:● noop: SSD, PCIe SSD, hi-end storages.● deadline: RAID, SATA/SAS.● cfq: good default.● none (multi-queue block IO): SSD, PCIe SSD.

# echo 'elevator_name' > /sys/block/<device>/queue/scheduler

kernel boot: elevator=<name>

/sys/block/*/queue/: rotational, rq_affinity, read_ahead_kb

Power Saving Policy

Drivers: acpi_cpufreq vs. intel_pstate.

scaling_governor.

Power Saving Policy

Drivers: acpi_cpufreq vs. intel_pstate.

scaling_governor:● /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors● /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor

Power Saving Policy

Drivers: acpi_cpufreq vs. intel_pstate.

scaling_governor:● /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors● /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor

acpi_cpufreq + performance.

intel_pstate + powersave.

Misc: Clocksources

What is clocksource?

acpi_pm vs. hpet vs. tsc.

/sys/devices/system/clocksource/clocksource0/available_clocksource.

/sys/devices/system/clocksource/clocksource0/current_clocksource.

Summary

Linux is a good choice for RDBMS:

Modern, Universal, Flexible, Stable.

Adapt Linux for your workloads.

Test → Change → Test → Commit/Rollback.

Questions?

Alexey [email protected]

PostgreSQL-Consulting.com: Data maintenance at its besthttps://postgresql-consulting.com


Recommended