Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Call of Postgres: Advanced Operations. Part II.

Call of Postgres: Advanced Operations. Part II.

Slides from my tutorial at PgDay 2017 St.Petersburg

Alexey Lesovsky

July 05, 2017
Tweet

More Decks by Alexey Lesovsky

Other Decks in Education

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. Настройка 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. Планировщики ввода-вывода
    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

    View full-size slide

  17. Механизм 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)

    View full-size slide

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

    View full-size slide

  19. Энергосбережение
    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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  33. Troubleshooting Linux
    02
    dataegret.com

    View full-size slide

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

    View full-size slide