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 секунд, сбрасывает текущие счетчики и сбрасывает их.