10

У меня есть лучшие отчеты сервера Linux о 9 ГБ подкачки:Топ

Но я не могу понять, где он использует своп, в некоторых результатах гугл говорится, что top - O запятая за p покажет использование свопа процессом. Но, как показано на рисунке выше, взятие краткой суммы столбца SWAP показывает, что используется> 10 ГБ подкачки, так откуда же берется цифра 9 ГБ для использования подкачки?

Топ сообщает, что около 96492 КБ оперативной памяти используется буферами. Что я могу сделать, чтобы использовать это, вместо использования свопа?

4 ответа4

6

Возможно, что несколько программ будут использовать одну и ту же область подкачки, поэтому об этом будет сообщено дважды.

Нет необходимости пытаться указать Linux использовать буферную область вместо swap - она уже очень умна в том, что делает. Если вы используете 9 ГБ подкачки и 9 ГБ буфера, это хорошо ... это означает, что Linux понимает, что 9 ГБ загруженного в память материала не используется активно, поэтому более эффективно перенести его на диск, чтобы ваш буфер может увеличиться и улучшить вашу производительность.


РЕДАКТИРОВАТЬ: Если вы сложите всю память, используемую каждым процессом, вы получите гораздо больше, чем ваша физическая память. Это происходит из-за того, что совместно используемые библиотеки используются несколькими программами, а также из-за того, что Linux обрабатывает вилки - он не дублирует всю программу в памяти, он дублирует только части, которые отличаются между двумя экземплярами. В некоторых случаях видеопамять может отображаться как часть процесса X - я думаю, что старые карты Voodoo3 делали это. Могут быть и другие случаи, когда "фантомная" память также может отображаться сверху.

3

Разбор подкаталога /proc работает:

Как скрипт bash:

for PROCESS in /proc/*/; do
  swapused=$(awk 'BEGIN { total = 0 } /^Swap:[[:blank:]]*[1-9]/ { total = total + $2 } END { print total }' ${PROCESS}/smaps 2>/dev/null || echo 0)
  if [ $swapused -gt 0 ]; then
    /bin/echo -e "${swapused}k\t$(cat ${PROCESS}/cmdline)"
  fi
done

Выходные данные могут быть отсортированы по типу Hi-Lo:

{blah}| sort -rn

Конечно, перепишите это на своем любимом языке недели по своему желанию. Мой Awk-фу не сильный.

(Вырезать-н-pastable)

#!/bin/bash
#
# show swap used by processes
#
(for PROCESS in /proc/*/; do
  swapused=$(awk 'BEGIN { total = 0 } /^Swap:[[:blank:]]*[1-9]/ { total = total + $2 } END { print total }' ${PROCESS}/smaps 2>/dev/null || echo 0)
  if [ $swapused -gt 0 ]; then
    /bin/echo -e "${swapused}k\t$(cat ${PROCESS}/cmdline)"
  fi
done ) | sort -nr
3
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

от: http://www.cyberciti.biz/faq/linux-which-process-is-using-swap/

1

Альтернативный способ:

smem -s swap -r

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .