OpenVZ 2GB 'RAM', no swap, выделение памяти, виртуальная память.
Ноут: 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-мить? Очень надо) Спасибо всем!
Re: OpenVZ 2GB 'RAM', no swap, выделение памяти, виртуальная память.
mriadus wrote on Sat, 19 December 2009 04:04 Что бы погуглить и по-RTFM-мить? Очень надо) Спасибо всем! "openvz memory overcommitment"