Каковы точные условия, на основе которых Linux подкачивает память процесса (процессов) от RAM до файла подкачки?

Мой сервер имеет 8Gigs RAM и 8Gigs настроенный для файла подкачки. У меня есть интенсивно использующее память выполнение приложений. Эти приложения имеют максимальную нагрузку, во время которой мы находим увеличение использования подкачки. Приблизительно 1 ГБ подкачки используется.

У меня есть другой сервер с 4Gigs RAM и 8 Концертов подкачки и подобных интенсивно использующих память приложений, работающих на нем. Но здесь использование подкачки очень незначительно. Приблизительно 100 МБ.

Я задавался вопросом, что является точными условиями или грубой формулой, на основе которой Linux сделает выгрузку памяти процесса в RAM к файлу подкачки. Я знаю на основе swapiness фактора. На основе чего еще это? Размер файла подкачки? Любые указатели на документацию/исходный код ядра Linux, объясняющую это, будут большими.

5
задан Zenil 8 January 2010 в 16:28
поделиться

1 ответ

Linux (или любая другая ОС) делит память на страницы (обычно 4 КБ). Каждая из этих страниц представляет собой кусок памяти. Информация об использовании этих страниц сохраняется, что в основном содержит информацию о том, является ли страница свободна или используется (часть некоторых процессов), доступна ли она недавно, какие данные он содержит (обработки данных, исполняемый код и т. Д. ), Владелец страницы и т. Д. Эти страницы также могут быть широко разделены на две категории - страницы файловой системы или кэш-память страницы (в которых все данные чтения / записаны в вашу файловую систему) и страницы, принадлежащие процессам.

Когда система работает на память, ядро ​​начинает обмениваться страницами на основе их использования. Использование списка страниц отсортировано W.R.t Reach of Access является распространенным для определения того, какие страницы могут быть помечены (Linux Kernel также имеет такой список).

Во время замены, ядро ​​Linux необходимо решить, что компенсировать, когда выключаются на Nuking Pages в памяти и отправки их на обмен. Если оно сводится к страницам файловой системы слишком агрессивно, от файловой системы требуется больше чтения, чтобы прочитать эти страницы, когда они нужны. Тем не менее, если он сочетается с процессом страниц более агрессивно, он может повредить интерактивность, потому что когда пользователь пытается использовать переменные процессы, они должны будут прочитать обратно с диска. Увидеть хорошую дискуссию здесь на этом.

Настроив Swaptiness = 0, вы говорите ядро ​​Linux не переменят страницы, принадлежащие к процессам. При настройке Swaptiness = 100 вместо этого вы сообщаете ядру поменять страницы, принадлежащие процессам более агрессивно. Чтобы настроить вашу систему, попробуйте изменить параметр SmaPPize в шагах из 10, мониторинг производительности и страницы включаются в / выделенные при каждой настройке, используя команду «VMStat». Держите настройку, которая дает вам лучшие результаты. Не забудьте сделать это тестирование во время пиковых часов использования. :)

Для приложений базы данных Swappiness = 0 обычно рекомендуется. (Даже тогда проверьте различные настройки в ваших системах, чтобы прийти к хорошему значению).

Список литературы:
http://www.linuxvox.com/2009/10/what-is-the-linux-kernel-parameter-vm-swappiness/
http://www.pythian.com / Новости / 1913 /

5
ответ дан 18 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: