/proc/vmstat - объем просканированных (pgscan) и украденных (pgsteal) страниц:pgscan_kswapd
pgsteal_kswapd
pgscan_direct
pgsteal_direct
Показатели помогают понять, как система аллоцирует страницы при нехватки свободной памяти.
Что такое pgscan и pgsteal
*
pgscan - сколько страниц было просканировано в поисках кандидатов на высвобождение;*
pgsteal - сколько из просканированных страниц удалось высвободить (украсть).Scan/steal процессы могут быть запущены либо фоновым kswapd, либо напрямую приложением (direct).
Причем наличие kswapd в вакууме ничего плохого не подразумевает - демон трудится в бекграунде, чтобы держать определенное кол-во свободных страниц в системе.
А вот наличие direct может настораживать: похоже что kswapd не справляется и приложения явным образом требует предоставить ей памяти. Этот процесс уже происходит в foreground и чреват потерей производительности.
Как интерпретировать значения
* абсолютные значения - чем выше значения, тем чаще свободная память падает до минимума и система вынуждена принимать меры;
* соотношения
pgsteal/pgscan - высокое значение (95%+) говорит, что большая часть просканированных страниц успешно освобождается (это хорошо). Низкое напротив - система тратит много ресурсов на сканирование, прежде чем найдет подходящие страницы для освобождения.Как получить значения в grafana
node_exporter в помощь:
node_vmstat_pgscan_direct
node_vmstat_pgsteal_direct
node_vmstat_pgscan_kswapd
node_vmstat_pgsteal_kswapd
Итого
Резюмируя, если значения
pgsteal, pgscan растут это сигнал, что память в системе переутилизирована и хорошо бы обратить на это внимание. Решения проблемы в вакууме нет, все зависит от кейса: где-то будем докидывать памяти, где-то расширять swap, где-то анализировать потребление памяти приложением, а где-то хватит и лимитов на нее.