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

Я закончил тем, что детализировал компоненты, одним словом, документ, но я не рекомендую что как решение.

7
задан 8 January 2010 в 18:26
4 ответа

Подсистема VM ядра Linux является очень сложным зверем, ядро использует эвристику и алгоритмы для определения, в / каких страницах подкачать и когда сделать это. Я не думаю, что существует простая формула, которая может описать, как и когда страницы помещаются в диск. Возможно, эта статья LWN полезна для Вас:

http://lwn.net/Articles/83588/

4
ответ дан 2 December 2019 в 23:34

Поскольку Вы, вероятно, знаете, использование ядра Linux как можно больше памяти к вещам кэша. Вот почему вывод бесплатных взглядов как я почти вне памяти, согласно верхней строке:

 $ free -m
              total       used       free     shared    buffers     cached
 Mem:          3168       2963        205          0        155       1263
 -/+ buffers/cache:       1543       1624
 Swap:          494         86        407

но важная часть является суммой RAM, которая буферизует, и кэш не используют

 -/+ buffers/cache:       1543       1624

Однако, все кроме 205 МБ памяти используются в том примере, даже если это кэшем. Как это было объяснено мне (или по крайней мере, поскольку я понял это), если программа внезапно запрашивает> 205 МБ памяти, тот блок выходит из подкачки, так, чтобы процесс мог иметь блок памяти, затем это выходит из подкачки, после того как это получает шанс к свободной памяти, используемой кэшем.

Как pfo упомянутый, базовые механизмы сложны, и далеко вне моего понимания. Я спросил Ted Ts'o почти этот идентичный вопрос в классе, который он преподавал в LISA, и я дал Вам по существу тот же ответ, который он дал мне, или по крайней мере поскольку я понял это.

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

2
ответ дан 2 December 2019 в 23:34
  • 1
    swapoff -a && swapon -a должен использоваться для освобождения той области подкачки. –  pfo 8 January 2010 в 19:14
  • 2
    Если программа, которую внезапно попросили > 205 МБ памяти, Linux был бы не , должны получить блок памяти " из swap". Вместо этого система могла просто решить, что некоторые ее страницы дискового кэша не были так же важны как предоставляющий этот запрос на RAM, отмечают те страницы как неиспользованные и вытирают их содержание, затем вручают им процессу. В конце концов, все в дисковом кэше может просто быть считано, въезжают задним ходом позже, если кто-то смотрит на кэшируемый файл снова! Подкачка wouldn' t даже быть включенным. –  Brandon Rhodes 21 April 2010 в 14:50
  • 3
    That' s не способ, которым это было объяснено мне (или по крайней мере, как я понял объяснение), –  Matt Simmons 21 April 2010 в 16:27

Столкнулся с этой самой проблемой о производстве серверы приложений JBoss на AWS.

Я был бы разность sysctl-a обе системы.

1) Для набора серверов vm.swappiness приблизительно к 0. Это предпочитает сохранять материал в памяти.

2) Включите небольшой файл подкачки на всех серверах, таким образом, можно контролировать фактическую загрузку в память. (Проверьте используемый % подкачки).

3) Контролируйте отсутствия страницы (nFLT) с Кактусами или подобный.

4) Проверьте ulimits.

5) Мелодия на основе измеримой производительности приложения.

1
ответ дан 2 December 2019 в 23:34

Подробно останавливаясь на ответе pfo, поставщик может также предварительно настроить их развернутое ядро (ядра) для обработки swappiness определенным способом. В системе Red Hat можно настроить большую часть этого в/etc/sysctl.conf - Google настройки, такие как:

vm.swappiness
vm.vfs_cache_pressure

Путем тщательной настройки swappiness системы на определенные потребности приложения Вы можете уменьшать свое использование подкачки на той машине на 8 ГБ. У меня есть примечание в моих файлах, в котором говорится для vm.swappiness "использование памяти подкачки по умолчанию на Ядре 2.6.xx, установлен на 60%", но не сохранил ссылку, где я считал, что, поэтому возьмите его с мелкой частицей соли.:)

2
ответ дан 2 December 2019 в 23:34

Теги

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