На одном из серверов заметил что при наличии свободной оперативной памяти активно используется swap. В процессе разбора в проблеме, нашелся интересный параметр ядра vm.swappiness, по сути он отвечает сколько процентов от общего объема оперативной памяти должно быть использовано, чтоб начал использоваться swap.
1 2 |
cat /proc/sys/vm/swappiness 60 |
Те например при 10гб оперативной памяти, если будет использовано более 6гб, то система начнет активно использовать swap. На системах где мало ОЗУ такое значение более чем подходит, но на системах где ОЗУ много, например на серверах, это создает проблемы.
Так например в моем случае, при ОЗУ 256гб на сервере, после 103гб сервер начbнал активно использовать swap, что совсем не хорошо если у вас стоят дорогущие nvme, по сути мы сокращаем их срок службы. Поэтому данное значение объективно может быть уменьшено для подобных систем, до 10-20.
1 |
sysctl vm.swappiness=10 |
Для того чтобы изменения вступили в силу, нужно перезагрузить swap.
1 |
swapoff -a && swapon -a |
Имейте ввиду, что во время перезагрузки swap приложения его использующие могут сильно тупить, вплоть до временной недоступности. Если есть возможность, то лучше перезапустить машину, предварительно добавив этот параметр ядра в загрузку.
1 |
echo 'vm.swappiness=20' >> /etc/sysctl.conf |
После этого можно перезагрузить машину.
Из опыта, 8гб swap выгружается обратно в оперативную память примерно 20 минут, диски серверные SAS.
Небольшой скрипт для поиска процессов использующих swap:
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash for pid in $(ps -e -o pid=); do # Получаем имя приложения app_name=$(ps -p $pid -o comm= 2>/dev/null) # Использование swap swap_usage=$(grep VmSwap /proc/$pid/status 2>/dev/null | awk '{print $2, $3}') if [[ -n "$swap_usage" && "$swap_usage" != "0 kB" ]]; then echo "PID: $pid | App: $app_name | Swap: $swap_usage" fi done |
Вывод будет примерно такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
PID: 1465 | App: systemd-logind | Swap: 256 kB PID: 1472 | App: lxcfs | Swap: 256 kB PID: 1665 | App: corosync-qnetd | Swap: 3328 kB PID: 1801 | App: pmxcfs | Swap: 1792 kB PID: 1900 | App: pve-firewall | Swap: 64000 kB PID: 1902 | App: pvestatd | Swap: 61184 kB PID: 1954 | App: pvedaemon | Swap: 125440 kB PID: 1961 | App: pve-ha-crm | Swap: 76288 kB PID: 1974 | App: pve-ha-lrm | Swap: 82944 kB PID: 1981 | App: pvescheduler | Swap: 89856 kB PID: 1262610 | App: kvm | Swap: 25856 kB PID: 2002136 | App: task UPID:node1 | Swap: 108556 kB PID: 2251393 | App: kvm | Swap: 1583312 kB PID: 3557927 | App: pvedaemon worke | Swap: 103676 kB PID: 3675016 | App: pvedaemon worke | Swap: 110584 kB PID: 3677489 | App: kvm | Swap: 6153216 kB PID: 3686114 | App: pvedaemon worke | Swap: 115448 kB |
Добавить комментарий