Slide 1

Slide 1 text

Call of Postgres: Advanced Operations Alexey Lesovsky [email protected]

Slide 2

Slide 2 text

Tuning Linux: практика 02

Slide 3

Slide 3 text

План 02 dataegret.com Отработка навыков настройки Linux. Отработка навыков troubleshooting в Linux.

Slide 4

Slide 4 text

Отработка навыков настройки 02 dataegret.com Настройка RAID контроллера. Настройка переменных sysctl. Виртуальная память, NUMA, Huge Pages Transparent Huge Pages. Планировщики ввода-вывода. Файловые системы. Энергосбережение.

Slide 5

Slide 5 text

Настройка RAID контроллера 02 dataegret.com MegaCli (StorCli): ● Проверка конфигурации контроллера, томов, дисков. ● Настройка логических томов. ● Журнал событий.

Slide 6

Slide 6 text

Настройка RAID контроллера 02 dataegret.com Проверка конфигурации контроллера, томов, дисков. # megacli adpallinfo aall # megacli ldinfo lall aall # megacli pdlist aall # megacli adpbbucmd aall

Slide 7

Slide 7 text

Настройка RAID контроллера 02 dataegret.com Настройка логических томов. # megacli ldsetprop wt l0 a0 -- set Writethrough # megacli ldsetprop direct l0 a0 -- set Direct # megacli ldsetprop nora l0 a0 -- set No ReadAhead

Slide 8

Slide 8 text

Настройка RAID контроллера 02 dataegret.com Журнал событий. # megacli adpeventlog getevents severity -f filename a0 ● severity: info, warning, critical, fatal

Slide 9

Slide 9 text

Sysctl переменные 02 dataegret.com Планировщик процессов: # vi /etc/sysctl.conf kernel.sched_autogroup_enabled = 0 kernel.sched_migration_cost_ns = 5000000 # sysctl -p

Slide 10

Slide 10 text

Sysctl переменные 02 dataegret.com Виртуальная память: # vi /etc/sysctl.conf vm.dirty_background_bytes = 128000000 vm.dirty_bytes = 512000000 # sysctl -p

Slide 11

Slide 11 text

Sysctl переменные 02 dataegret.com Виртуальная память и Out-of-memory: # vi /etc/sysctl.conf vm.swappiness = 1 vm.min_free_kbytes = 1000000 vm.overcommit_memory = 0 # sysctl -p

Slide 12

Slide 12 text

Sysctl переменные 02 dataegret.com Виртуальная память и NUMA: # vi /etc/sysctl.conf vm.zone_reclaim_mode = 0 kernel.numa_balancing = 0 # sysctl -p

Slide 13

Slide 13 text

Sysctl переменные 02 dataegret.com Виртуальная память и Huge Pages: # vi /etc/sysctl.conf vm.nr_hugepages = 32000 # 64GB vm.nr_overcommit_hugepages = 1000 # +2GB # echo 3 > /proc/sys/vm/drop_caches # sysctl -p # grep ^Huge /proc/meminfo

Slide 14

Slide 14 text

NUMA 02 dataegret.com # numastat # numactl --hardware # numactl --interleave program # cat /proc/pid/numa_maps

Slide 15

Slide 15 text

Transparent Huge Pages 02 dataegret.com # uname -a # echo never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag # vi /etc/rc.local

Slide 16

Slide 16 text

Планировщики ввода-вывода 02 dataegret.com На лету: # echo noop > /sys/block//queue/scheduler На постоянно, способ №1: # vi /etc/rc.local На постоянно, способ №2: # vi /etc/default/grub GRUB_CMDLINE_LINUX="… elevator=noop" # update-grub

Slide 17

Slide 17 text

Механизм BLK-MQ 02 dataegret.com # vi /etc/default/grub GRUB_CMDLINE_LINUX="… scsi_mod.use_blk_mq=1" # update-grub # reboot # cat /sys/block/sd*/queue/scheduler (none)

Slide 18

Slide 18 text

Файловые системы 02 dataegret.com На лету: # mount -o remount,nobarrier /db На постоянно: # vi /etc/fstab LABEL=pgdb /db ext4 nobarrier 0 2 # mount -o remount,nobarrier /db

Slide 19

Slide 19 text

Энергосбережение 02 dataegret.com Какой режим включен? # lscpu |grep MHz # cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor Поменять на лету: # for i in $(ls -1 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor); do echo performance > $i; done На постоянно: # update-rc.d ondemand disable – Ubuntu # cpupower frequency-set -g performance – CentOS

Slide 20

Slide 20 text

Troubleshooting Linux 02 dataegret.com Постановка задачи: ● Определение проблемного ресурса. План: ● Выявление нагрузки на CPU. ● Выявление нагрузки на Storage. ● Выявление нагрузки на Network.

Slide 21

Slide 21 text

Troubleshooting Linux 02 dataegret.com # git clone https://github.com/lesovsky/ConferenceStuff # cd ConferenceStuff/2017.pgday/scripts # ./01-generate-test-data.sh

Slide 22

Slide 22 text

Troubleshooting Linux 02 dataegret.com # scripts/02-generate-cpu-load.sh # top ● Load average. ● CPU Usage: us, sy, ni, id, wa, hi, si, st.

Slide 23

Slide 23 text

Troubleshooting Linux 02 dataegret.com А какие еще есть тулзы? ● htop, atop, pidstat, tiptop, ... ● /proc/stat интерфейс.

Slide 24

Slide 24 text

Troubleshooting Linux 02 dataegret.com # scripts/03-generate-io-load.sh # top ● CPU Usage: wa. # iostat -m -x 1 ● IOPSes, throughput, latencies, utilization. # iotop -Poa ● Disk read/write, swap, io%. # cat /proc/diskstats

Slide 25

Slide 25 text

Troubleshooting Linux 02 dataegret.com # scripts/04-generate-network-load.sh # nicstat -m -x 1 ● Throughput, errors, utilization. # netstat -s # ss # cat /proc/net/dev

Slide 26

Slide 26 text

Troubleshooting Linux 02 dataegret.com Проблемы с памятью? ● numastat. ● Intel Memory Latency Checker. ● dmesg.

Slide 27

Slide 27 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.

Slide 28

Slide 28 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● # ipmitool sel elist ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.

Slide 29

Slide 29 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● # mcelog --client ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.

Slide 30

Slide 30 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● # cat /sys/devices/system/edac/mc/mc*/*_count ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.

Slide 31

Slide 31 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● # megacli, storcli, arcconf, tw_cli, hpacucli, etc... ● Network? – ethtool.

Slide 32

Slide 32 text

Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool. ● # ethtool -S eth0 |grep err

Slide 33

Slide 33 text

Troubleshooting Linux 02 dataegret.com

Slide 34

Slide 34 text

Вопросы? dataegret.com [email protected]