Как ограничить размер Свопа ? [message #6515] |
Tue, 19 September 2006 17:04 |
xakmak
Messages: 14 Registered: June 2006
|
Junior Member |
|
|
Всем привет! Тут у меня юзеры некоторые просят увеличить им количество свопа, я так понимаю своп вообще VE не дается ? если дается то как указать его размер ?
|
|
|
|
|
Re: Как ограничить размер Свопа ? [message #6532 is a reply to message #6517] |
Wed, 20 September 2006 05:45 |
vaverin
Messages: 708 Registered: September 2005
|
Senior Member |
|
|
privvmpages -- это вовсе не оперативка. Cогласно документации privvmpages: memory allocation limit. Замечу -- именно allocation, а не потребления, потому что существенную часть запрошенной памяти приложения не используют. Наши измерения показывали что apache не использут 20-30% памяти запрошенной при запуске. В случае multithred application доля неиспользуемой памяти существенно возрастает, иногда они рельнот используют всего лишь 10% запрошенной памяти.
Поэтому в принципе privvmpages можно сопостовлять с объяемом RAM+swap, но чтобы компенсировать неиспользуемую память VE можно отдавать от 1.5 до 4 раз больше privvmpages. Хотя для stability critical application конечно рисковать не стоит, в этом случае лучше не превышать объем RAM+swap.
Да, система сама будет определять что и когда отправлять в swap, а что оставлять в RAM. Однако, поверьте, системе виднее чем вам, она никогда не будет держать RAM свободной, если ее есть чем занять. Обычно на любой работающей ноде почти вся память достаточно быстро забивается разного рода структурами.
Вы хотите чтобы в swap уходили в первую очередь данные относящиеся к VE? Наверное в некоторых случаях это действительно может иметь смысл.
Однако я хочу обратить ваши внимание на следующее обстоятельство: Virtuozzo (да и наверное OpenVz тоже) обычно использутся для хостинга. внутри VE живут клиенты и они очевидно будут недовольны задержками в работе к которым приведет приемущественное сбрасывание их данных в swap. С другой стороны, в VE0 практически никто не живет, она используется только для административных целей. Задач там немного, да и задержка для них не особо критична. Но именно поэтому там нет данных которые стоило бы вытеснить в своп. просто потому что этих данных мало, и заметной пользы ноде это не принесет. Согласитесь, в таком сценарии совершенно неочевидно, стоит ли давать приемущество работы со swap какой либо из сторон.
Кроме того, хочу отметить, в своп вытесняются данные, которые используются _реже_. В свою очередь реже используются данные той VE которой дают _меньше_ _CPU_. Таким образом можно повлиять на работу со swap косвенно, путем назначения адекватных CPUunits. Если вы дадите много CPU ve0 -- она будет чаще работать с данными -- в swap при необходимости будут уходить редкоиспользуемые данные из VE.
|
|
|
Re: Как ограничить размер Свопа ? [message #6533 is a reply to message #6532] |
Wed, 20 September 2006 06:02 |
Umka
Messages: 56 Registered: September 2006
|
Member |
|
|
vaverin wrote on Wed, 20 September 2006 01:45 | privvmpages -- это вовсе не оперативка. Cогласно документации privvmpages: memory allocation limit. Замечу -- именно allocation, а не потребления, потому что существенную часть запрошенной памяти приложения не используют. Наши измерения показывали что apache не использут 20-30% памяти запрошенной при запуске. В случае multithred application доля неиспользуемой памяти существенно возрастает, иногда они рельнот используют всего лишь 10% запрошенной памяти.
|
Я правильно понимаю - данный параметр соотносится с limit_AS у limit(1)? и таким образом выполнив mmap на size M мы получим увеличение privvmpages в количестве size/4096 ?
[Updated on: Wed, 20 September 2006 06:11] Report message to a moderator
|
|
|
|
Re: Как ограничить размер Свопа ? [message #6544 is a reply to message #6540] |
Wed, 20 September 2006 07:56 |
Umka
Messages: 56 Registered: September 2006
|
Member |
|
|
vaverin wrote on Wed, 20 September 2006 03:07 | Уважаемый UMKA,
вы правы, это действительно напоминает RLIMIT_AS. посмотрите по нашим сырцам: повсюду с изменением mm->total_vm у нас есть ub_memory_charge.
Однако этот RLIMIT_AS действует per-mm, а privvmpages относится к группе процессов с общим UB. И это вовсе не сумма per-mm лимитов, тут есть ряд тонкостей: например если вы используете shared mapping, то новой памяти выделяться не будет и privvmpages изменится, а вот mm->total_vm тем не менее увеличится.
Если вас это интересует, посмотрите детали в ub_memory_charge и VM_UB_PRIVATE.
|
Ясна. значит ваш подход не лучше того что используется в linux vserver.... и java будет показывать запредельные цифры используемой памяти.
в отличии от FreeVPS где память учитывается в момент использования и если java использует 256М будет показано использование 256М, а не 2G.
|
|
|
|
|
|
Re: Как ограничить размер Свопа ? [message #6570 is a reply to message #6549] |
Wed, 20 September 2006 11:54 |
Umka
Messages: 56 Registered: September 2006
|
Member |
|
|
vaverin wrote on Wed, 20 September 2006 04:24 | Уважаемый UMKA,
Umka wrote on Wed, 20 September 2006 11:56 | Ясна. значит ваш подход не лучше того что используется в linux vserver.... и java будет показывать запредельные цифры используемой памяти.
|
Пожулуйста объясните поподробнее, что вы имеете в виду. Я не понимаю, какое отнощение имеют цифры показываемые java (где кстати?) -- один процесс -- к privvmpages, относящимися к VE целиком.
|
Хочу лиш сказать что java делает большой mmap (равный max heap size) при старте. Это не может не сказаться на счетчкиках privvmpages которые будучи установлены в меньше значение вызовут ситуацию Out of memory. Я не прав?
Quote: |
Вы хотите сказать что в freeVPS каждый процесс может сказать сколько памяти он юзает? отлично, я очень рад за freeVPS. Однако какая от этого практическая польза?
|
Я хочу сказать что FreeVPS использует для лимита на память значение более совпадающее с physpages. Аналогичного лимита в OpenVZ я не вижу. Если вы мне укажете на такой лимит я буду счастлив и это съэкономит время самостоятельного анализа вашего ядерного патча.
Quote: |
Один процесс никого не интересует, память реально шарится между процессами и сумма отдельных процессов не отражает реальное потребление памяти группой процессов.
Кроме того я хочу обратить ваше внимание на то что у нас есть и другие параметры показывающие рельное потребление памяти VE:
- physpages current value shows total number of RAM pages used by processes in this VE.
- oomguarpages current value shows total amount of memory and swap space used by processes of particular VE.
|
собственно аргументы выше.
[Updated on: Wed, 20 September 2006 11:56] Report message to a moderator
|
|
|