OpenVZ 2GB 'RAM', no swap, выделение памяти, виртуальная память. [message #38434] |
Sat, 19 December 2009 02:04  |
mriadus
Messages: 2 Registered: December 2009 Location: spb
|
Junior Member |
|
|
Ноут: 2G, linux gentoo, no swap.
OpenVZ (16-CPU xeon-server): 2G, linux gentoo, no swap.
Небольшая программка на С++ для эксперимента. Выделяет 500М, ждёт нажатия клавиши, освобождает и завершается.
...
char *p = new char [ 1024 * 1024 * 500 ];
...
В виде бинаря лежит в /tmp/AAAA.
Запущенные пять экземпляров на ноуте:
xx@master1 ~/forge/cpp $ ps aux | grep AAAA
xx 22257 0.0 0.0 514700 856 pts/29 T 05:06 0:00 /tmp/AAAA
xx 22894 0.0 0.0 514700 852 pts/21 S+ 05:06 0:00 /tmp/AAAA
xx 23200 0.0 0.0 514700 852 pts/44 S+ 05:06 0:00 /tmp/AAAA
xx 23443 0.0 0.0 514700 852 pts/45 S+ 05:06 0:00 /tmp/AAAA
xx 24023 0.0 0.0 514700 856 pts/56 S+ 05:07 0:00 /tmp/AAAA
xx 24224 0.0 0.0 514700 852 pts/59 S+ 05:07 0:00 /tmp/AAAA
(514700 = VIRT, 856 = RES)
Можно видеть что (так как выделенные страницы памяти я не использую и от системы реально не требутся обеспечивать все эти процессы реальными 2.5 памяти или свопа) то всё это хорошо живёт, механизм виртуальной памяти во всей красе, все довольны. Думаю, ещё хоть пиццот таких процессов можно запустить.
Тот же эксперимент на OpenVZ = FAIL. По наблюдениям, OpenVZ не даёт запустить очередной AAAA, если сумма всех VIRT уже запущенных экземпляров минус общее кол-во памяти меньше, чем желаемые этим очередным AAAA 500MB.
Но RES и VIRT одного AAAA на OpenVZ - нормальны.
xx 25554 0.0 0.0 523548 1024 pts/1 T 01:16 0:00 /tmp/AAAA
(VIRT=523548, RES=1024)
Интерсный момент. Давайте посмотрим на "htop". У него наверху есть залёный общий измеритель использования памяти. Для ноута один запускаемый AAAA отъедает по этому измерителю около 1MB, что отражает RES. Но для OpenVZ по этому показателю отжирание составляет все 500MB.
Что бы погуглить и по-RTFM-мить? Очень надо)
Спасибо всем!
|
|
|
|