Call of Postgres: Advanced Operations Alexey Lesovsky lesovsky@gmail.com
Tuning Linux: практика 02
План02 dataegret.com Отработка навыков настройки Linux. Отработка навыков troubleshooting в Linux.
Отработка навыков настройки02 dataegret.com Настройка RAID контроллера. Настройка переменных sysctl. Виртуальная память, NUMA, Huge Pages Transparent Huge Pages. Планировщики ввода-вывода. Файловые системы. Энергосбережение.
Настройка RAID контроллера02 dataegret.com MegaCli (StorCli): ● Проверка конфигурации контроллера, томов, дисков. ● Настройка логических томов. ● Журнал событий.
Настройка RAID контроллера02 dataegret.com Проверка конфигурации контроллера, томов, дисков. # megacli adpallinfo aall # megacli ldinfo lall aall # megacli pdlist aall # megacli adpbbucmd aall
Настройка 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
Настройка RAID контроллера02 dataegret.com Журнал событий. # megacli adpeventlog getevents severity -f filename a0 ● severity: info, warning, critical, fatal
Sysctl переменные02 dataegret.com Планировщик процессов: # vi /etc/sysctl.conf kernel.sched_autogroup_enabled = 0 kernel.sched_migration_cost_ns = 5000000 # sysctl -p
Sysctl переменные02 dataegret.com Виртуальная память: # vi /etc/sysctl.conf vm.dirty_background_bytes = 128000000 vm.dirty_bytes = 512000000 # sysctl -p
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
Sysctl переменные02 dataegret.com Виртуальная память и NUMA: # vi /etc/sysctl.conf vm.zone_reclaim_mode = 0 kernel.numa_balancing = 0 # sysctl -p
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
NUMA02 dataegret.com # numastat # numactl --hardware # numactl --interleave program # cat /proc/pid/numa_maps
Transparent Huge Pages02 dataegret.com # uname -a # echo never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag # vi /etc/rc.local
Планировщики ввода-вывода02 dataegret.com На лету: # echo noop > /sys/block/<device>/queue/scheduler На постоянно, способ №1: # vi /etc/rc.local На постоянно, способ №2: # vi /etc/default/grub GRUB_CMDLINE_LINUX="… elevator=noop" # update-grub
Механизм BLK-MQ02 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)
Файловые системы02 dataegret.com На лету: # mount -o remount,nobarrier /db На постоянно: # vi /etc/fstab LABEL=pgdb /db ext4 nobarrier 0 2 # mount -o remount,nobarrier /db
Энергосбережение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
Troubleshooting Linux02 dataegret.com Постановка задачи: ● Определение проблемного ресурса. План: ● Выявление нагрузки на CPU. ● Выявление нагрузки на Storage. ● Выявление нагрузки на Network.
Troubleshooting Linux02 dataegret.com # git clone https://github.com/lesovsky/ConferenceStuff # cd ConferenceStuff/2017.pgday/scripts # ./01-generate-test-data.sh
Troubleshooting Linux02 dataegret.com # scripts/02-generate-cpu-load.sh # top ● Load average. ● CPU Usage: us, sy, ni, id, wa, hi, si, st.
Troubleshooting Linux02 dataegret.com А какие еще есть тулзы? ● htop, atop, pidstat, tiptop, ... ● /proc/stat интерфейс.
Troubleshooting Linux02 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
Troubleshooting Linux02 dataegret.com # scripts/04-generate-network-load.sh # nicstat -m -x 1 ● Throughput, errors, utilization. # netstat -s # ss # cat /proc/net/dev
Troubleshooting Linux02 dataegret.com Проблемы с памятью? ● numastat. ● Intel Memory Latency Checker. ● dmesg.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● # ipmitool sel elist ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● # mcelog --client ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● # cat /sys/devices/system/edac/mc/mc*/*_count ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● # megacli, storcli, arcconf, tw_cli, hpacucli, etc... ● Network? – ethtool.
Troubleshooting Linux02 dataegret.com Аппаратные проблемы: ● Chassis? – ipmitool. ● CPU? – mcelog. ● Memory? – EDAC модули, mcelog. ● Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. ● Network? – ethtool. ● # ethtool -S eth0 |grep err
Troubleshooting Linux02 dataegret.com
Вопросы? dataegret.com lesovsky@gmail.com

Call of Postgres: Advanced Operations (part 2)