Re: swap/mem [message #39310 is a reply to message #39309] |
Sun, 04 April 2010 14:02   |
RXL_
Messages: 147 Registered: July 2009 Location: Moscow/Russia
|
Senior Member |
|
|
Надо следовать документации: в одних параметрах действителен только барьер, а других - и барьер, и лимит. Когда лимит не используется, он должен быть установлен в максимальное значение для целого на данной платформе.
Если перевести терминологию OpenVZ на привычные лимиты Unix, то:
- барьер - мягкий лимит (soft limit);
- лимит - жесткий лимит (hard limit).
Не поручусь за точность объяснения, но логика примерно такая: контейнер приблизился к барьеру и приложение в нем запрашивает блок памяти. Если уже израсходованная память + новый блок укладываются в диапазон "soft:hard", то память выделяется, если происходит превышение "hard", то приложение получает ошибку выделения "out of memory". Если на момент запроса приложением блока памяти контейнер уже вошел в диапазон "soft:hard", то приложение получит "out of memory". Это такой защитный диапазон.
По этому, если установлен барьер kmempages, но не установлен лимит, то приложение может запросить очень большой блок памяти - много больше, чем указано в барьере. По этому лимит надо тоже ставить (если в доке не сказано обратное).
Насчет свопирования.
Единственный способ в приложении управлять свопированием - использовать блокирование страниц памяти (это лимитируется параметром lockedpages). Во всех остальных случаях используются алгоритмы ядра, определяющие, какая страница пойдет в своп следующей.
Еще раз: виртуальная память и физическая память - разные вещи. Физической памятью может оперировать только ядро. Все остальные системы (и user space особенно) оперируют вирутальной памятью.
В общем, думаю, что вам еще раз и очень внимательно надо почитать документацию, отбросив собственные представления о процессе управления памятью.
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
[Updated on: Sun, 04 April 2010 14:22] Report message to a moderator
|
|
|