Страницы

Сохранить статью у себя в соцсети:

четверг, 11 октября 2012 г.

§ Who uses a swap?

Получение информации о том кто использует Swap.

Бывают ситуации когда нужно посмотреть кто использует Swap и в каком объеме. К сожалению, готовой программы ненашлось, а информацию получить нужно. На выручку как всегда приходит bash.
Есть несколько известных фактов.
  • в /proc доступна информация по всем запущенным процессам;
  • если заглянуть в /proc/$pid/status то можно увидеть использование памяти процессом с указанным pid;
  • для каждого процесса, можно увидеть строку VmSwap, это объем данных помещенных в подкачку.
  • Таким образом чтобы получить информацию, нужно подсчитать все вхождения Swap для всех процессов.
Что нужно, чтобы получить искомое?
1. Нужно получить все каталоги процессов в /proc
# find /proc/ -maxdepth 1 -type d |grep -E "[0-9]+"
2. Нужно подсчитать использование свопа в для одного процесса
# swap=$(grep VmSwap $dir/status 2> /dev/null |awk '{print $2}')
3. И получить имя процесса
# ps h -p $pid -o comm

Теперь скрещиваем полученные команды в скрипт
# vi bin/getswap.sh 
#!/bin/sh
# Get current swap usage for all running processes
for dir in $(find /proc/ -maxdepth 1 -type d |grep -E "[0-9]+"); do 
  pid=$(echo $dir |cut -d/ -f3)
  cmd=$(ps h -o comm -p $pid)
  swap=$(grep VmSwap $dir/status 2> /dev/null |awk '{print $2}')
  if [ ! -z $swap ] && [ $swap -ne 0 ]; then
          echo "pid: $pid command: $cmd - SwapUsed: $swap KB"
  fi
done |sort -nk5 |column -t

Проверяем работу
# bin/getswap.sh 
pid:7068   command:dmeventd    -  SwapUsed:  180148  KB
pid:7022   command:nginx       -  SwapUsed:  199088  KB
pid:7595   command:glusterfsd  -  SwapUsed:  239624  KB

Вот и все.

На главную "Virtualizing Linux"

2 комментария:

  1. Спасибо за скрипт. Предлагаю немного усовершенствовать:

    if [ ! -z $swap ] && [ $swap -ne 0 ]; then

    Т.к. нас не интересуют процессы, которые не используют swap.

    ОтветитьУдалить
  2. Спасибо! добавил изменения.

    ОтветитьУдалить

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика