Мой сервер базы данных использует 191 МБ пространства подкачки, но также показывает 182 МБ свободно ОЗУ
Коробка представляет собой выделенный сервер MySQL, на котором работает Debian Lenny.
Как я могу определить, кто и почему заполняет пространство подкачки вместо использования свободной оперативной памяти?
Войти top
, затем нажмите ж для редактирования видимых полей нажмите п чтобы показать использование свопа, затем нажмите Войти вернуться к отображению программ. Использовать сдвиг+< и > чтобы отсортировать его по использованию подкачки.
Linux подкачивает данные из RAM в зависимости от того, насколько вероятно (по личному мнению Linux), что к ним нужно будет обратиться в ближайшее время. Вы можете изменить свою замену, чтобы увеличить / уменьшить вероятность этого.
Просто замечание о замененной памяти, чтобы поддержать комментарий ErikA к ответу Джеймса:
Это не плохо, что вы видите какое-то использование свопа. Как сказал Джеймс, ядро будет случайно выгружать страницы памяти, которые вряд ли будут использоваться. Это освобождает оперативную память для других приложений, которые могут в ней нуждаться, и только в очень редких случаях приводит к снижению производительности.
Данные, выгруженные из ОЗУ, будут существовать как в ОЗУ, так и на диске подкачки до тех пор, пока ОЗУ не будет востребовано для другой цели, поэтому они скорее похожи на файлы с mmap. Насколько я понимаю, если процесс затем решает использовать эти данные до того, как они будут восстановлены, его не нужно снова менять местами. Своппинг обычно хорош, но есть две основные причины, по которым он может вам не понадобиться:
Оппортунистический обмен можно устранить с помощью echo 0 > /proc/pid/vm/swappiness
.
free -m
Посмотрите на строку +/- buffers для вашего истинного RAM за вычетом буферов файловой системы. Современные ОС загружают в память часто используемые файлы, и ядро освобождает их по мере необходимости.
Например
total used free shared buffers cached
Mem: 3483 1702 1780 0 299 778
-/+ buffers/cache: 623 2859
Swap: 3999 0 3999
Запустив верхнюю часть, я бы увидел, что у меня 1,7 ГБ свободной памяти, но если я посмотрю на free -m, я вижу, что у меня действительно есть 2,8 ГБ свободной. Другой 1,1 гигабайт - это кеш файловой системы.
Ответить непросто - посмотрите здесь: https://help.ubuntu.com/community/SwapFaq.
Ты можешь использовать top
команду, чтобы увидеть использование свопа, введите man top
или Google для этого.
Что касается того, почему - одна из возможных ситуаций следующая. Скажем, у вас есть 1 ГБ или RAM. Затем вы загружаете 2 ГБ приложений (включая ОС). У вас будет 1 ГБ ОЗУ и 1 ГБ подкачки. Потом вы выгружаете 1,5Гб приложений. Вы могли бы предположить, что у вас будет свободно 0,5 ГБ ОЗУ и все свопы. Однако это может быть совсем не так. Например, если вы загрузили 3 приложения:
затем активно использовал A, вероятно, что и B, и C будут выгружены на диск, чтобы A использовал оперативную память и, следовательно, быстро. Когда вы закроете A и переключитесь на C, у вас будет использовано 100 МБ ОЗУ, а B все равно будет выгружен (используется подкачка 900 МБ), поскольку в нем нет необходимости.
Проще говоря - ядро пытается использовать оперативную память и менять местами так, как оно думает, это будет эффективно. Использование подкачки при наличии свободной оперативной памяти не обязательно означает, что ваша система работает медленнее, чем могла бы.