1️⃣ Проверка через
top. В top по умолчанию нет колонки с использованием swap, но её можно включить:1. Откройте top
2. Нажмите f, затем выберите Swap (s)
3. Подтвердите q - появится колонка с потреблением swap
Однако top не всегда корректно отображает эти данные, поэтому в
htop колонку со swap вовсе убрали, чтобы не вводить пользователей в заблуждение.2️⃣ Точный способ через
/proc. Более надёжный способ – заглянуть в файлы /proc/$PID/smaps или /proc/$PID/status:/proc/$PID/smaps – самый точный, но требует сложных вычислений/proc/$PID/status – содержит суммарное значение в поле VmSwap, удобнее для быстрого анализа✏️ Bash-скрипт для проверки. Можно использовать простой скрипт, который покажет, какие процессы активно используют swap:
#!/bin/bash
SUM=0
OVERALL=0
for DIR in $(find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"); do
PID=$(basename $DIR)
PROGNAME=$(ps -p $PID -o comm --no-headers)
for SWAP in $(grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'); do
let SUM=$SUM+$SWAP
done
if (( $SUM > 0 )); then
echo "PID=$PID swapped $SUM KB ($PROGNAME)"
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL KB"
Этот скрипт проверяет VmSwap для каждого процесса и выводит общий объём использованного swap.
🌟 Быстрая проверка в одну команду. Если нет желания писать скрипты, можно просто выполнить:
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf $2 " " $3} END { print ""}' $file
done | sort -k 2 -n -r | less
Эта команда отобразит процессы, отсортированные по объёму используемого swap.
#linux #swap #monitoring
🧑💻 NetworkAdmin