Linux: получить объем памяти, выгруженный в течение определенного периода времени

Есть ли (простой (?)) способ получить объем данных, перемещенных в / из свопинга за определенное время? Может быть, интегрированы во все процессы и время или интегрированы в конкретные процессы и время?

История: у меня есть машина, которая имеет тенденцию менять. Однако я не знаю, активно ли используется своп. То есть, если он постоянно меняется местами или, скажем, только неиспользуемые разделяемые библиотеки через некоторое время меняются местами, и в конце концов происходит "активное" использование памяти в mem.

Таким образом, я ищу способ утешить себя, чтобы использование свопа не было серьезным...

Приветствия и спасибо за идеи, Томас

2 ответа

Вот мое временное решение, чтобы получить общее количество страниц, которые меняются местами между вызовами с помощью vmstat

#!/bin/sh
OLDSWAPPEDIN=$SWAPPEDIN
OLDSWAPPEDOUT=$SWAPPEDOUT
PAGEINOUT=$(vmstat -s | grep swapped 2>&1)
SWAPPEDIN=`echo $PAGEINOUT | awk '{print $1}'`
SWAPPEDOUT=`echo $PAGEINOUT | awk '{print $5}'`
SWAPPEDINDIFF=`expr $SWAPPEDIN - $OLDSWAPPEDIN`
SWAPPEDOUTDIFF=`expr $SWAPPEDOUT - $OLDSWAPPEDOUT`

Я старался избегать временных файлов для переменных хранения (поэтому необходимо будет либо найти его, либо создать переменные при входе в систему)

Это может быть относительно легко (если вы знаете подсистему MM ядра) через SystemTap. Вам необходимо знать имя функций, которые выполняют своппинг / своппинг, создают соответствующие пробники и два счетчика, увеличенные с пробников. Наконец, вам нужен таймер, который срабатывает каждые N секунд, сбрасывает текущие счетчики и сбрасывает их.

Другие вопросы по тегам