Алексей Лесовский "Тюнинг linux для баз данных. "

30

Upload: tanya-denisyuk

Post on 09-Jan-2017

317 views

Category:

Education


7 download

TRANSCRIPT

Page 1: Алексей Лесовский "Тюнинг Linux для баз данных. "
Page 2: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 3: Алексей Лесовский "Тюнинг Linux для баз данных. "

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.

Page 4: Алексей Лесовский "Тюнинг Linux для баз данных. "

Why Linux?

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

Page 5: Алексей Лесовский "Тюнинг Linux для баз данных. "

Databases & Resources

ConcurrencyQuery speedSort, group, hash,...

OS page cacheDB buffer poolLocal process cache

DB data filesTransaction LogCold start

CPU Memory

Storage

Page 6: Алексей Лесовский "Тюнинг Linux для баз данных. "

Databases & Resources

CPU SchedulingNUMAPower Saving

Virtual MemoryNUMAHuge Pages

File SystemsStorage I/O

CPU Memory

Storage

Page 7: Алексей Лесовский "Тюнинг Linux для баз данных. "

Resources

CPU scheduler.

Virtual memory and NUMA.

Huge pages.

File systems.

Storage IO.

Power saving policy.

Others.

Page 8: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 9: Алексей Лесовский "Тюнинг Linux для баз данных. "

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.

Page 10: Алексей Лесовский "Тюнинг Linux для баз данных. "

Virtual Memory

What is it?

Allocator, Caching, Dirty pages and Writeback.

Page 11: Алексей Лесовский "Тюнинг Linux для баз данных. "

Virtual Memory

Page 12: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 13: Алексей Лесовский "Тюнинг Linux для баз данных. "

Virtual Memory

Out-of-memory & OOM-Killer

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

Page 14: Алексей Лесовский "Тюнинг Linux для баз данных. "

NUMA

S — Socket C — CPU core M — Memory bank

Page 15: Алексей Лесовский "Тюнинг Linux для баз данных. "

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).

Page 16: Алексей Лесовский "Тюнинг Linux для баз данных. "

Huge Pages

Huge pages vs. Transparent huge pages.

Huge pages are supported by many RDBMS.

Always disable transparent huge pages.

Page 17: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 18: Алексей Лесовский "Тюнинг Linux для баз данных. "

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

Page 19: Алексей Лесовский "Тюнинг Linux для баз данных. "

FilesystemsExt3 vs Ext4 vs XFS: what is better?

Filesystem Barriers.

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

Page 20: Алексей Лесовский "Тюнинг Linux для баз данных. "

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).

Page 21: Алексей Лесовский "Тюнинг Linux для баз данных. "

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).

Page 22: Алексей Лесовский "Тюнинг Linux для баз данных. "

Storage IOSATA/SAS vs SSD.

IO elevators.

Page 23: Алексей Лесовский "Тюнинг Linux для баз данных. "

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.

Page 24: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 25: Алексей Лесовский "Тюнинг Linux для баз данных. "

Power Saving Policy

Drivers: acpi_cpufreq vs. intel_pstate.

scaling_governor.

Page 26: Алексей Лесовский "Тюнинг Linux для баз данных. "

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

Page 27: Алексей Лесовский "Тюнинг Linux для баз данных. "

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.

Page 28: Алексей Лесовский "Тюнинг Linux для баз данных. "

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.

Page 29: Алексей Лесовский "Тюнинг Linux для баз данных. "

Summary

Linux is a good choice for RDBMS:

Modern, Universal, Flexible, Stable.

Adapt Linux for your workloads.

Test → Change → Test → Commit/Rollback.

Page 30: Алексей Лесовский "Тюнинг Linux для баз данных. "

Questions?

Alexey [email protected]

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