четверг, 23 июня 2011 г.

TPS vs. Large Pages in real life


Помните пост Transparent Page Sharing?

Напомню суть: от механизма дедупликации памяти, Transparent Memory Page Sharing можно ожидать больше эффективности, если отключить использование Large Pages, больших страниц памяти.

Тут со мной поделились парой графиков по результатам экспериментов:

clip_image002

Рисунок 1. Первый кластер 

Рисунок 1-а. График загрузки процессоров кластера 1


Обратите внимание на момент, показанный первой стрелкой. Это перед выключением Large Pages, вечер пятницы. До этого порядка 190-200 ГБ ОЗУ было выделено (Granted) для ВМ, и порядка 190 было потреблено(Consumed) на серверах. Затем часть ВМ, видимо обслуживалась, выключалась, перезагружалась, и ESX(i) стал выделять им меньше памяти. А вот затем (двойная стрелка) аппетиты ВМ вернулись на прежний уровень, а вот выделение памяти опустилось с примерно 190 ГБ до примерно 143 ГБ.

Чуть ли не 50 ГБ, 25%, экономии для одного кластера.

clip_image003

Рисунок 2. Второй кластер. 

Здесь объем занятой памяти снизился с примерно 230 ГБ до примерно 160 ГБ.
Экономия 70 ГБ, порядка 30%.

Рисунок 2-а. Нагрузка на процессоры кластера 2


clip_image004

Рисунок 3. Третий кластер. 

Еще порядка трети экономии.

Рисунок 3-а. Нагрузка на процессоры кластера 3.
 (тут, правда, не очень понятен пик на 167%, но вряд ли это TPS)

Я не знаю точных размеров инфраструктуры, но это больше сотни ВМ. Из примерно 500 ГБ памяти мы освободили порядка 150 ГБ. Сто пятьдесят гигабайт оперативки. На халяву :-)

P.S. У нас же тут не маркетинговые сказки, так? Поэтому стоит обсудить вторую сторону медали. Потенциальных проблем по факту таких манипуляция я вижу две:

1) Снижение производительности из за неиспользования больших страниц.

К сожалению, мне не удалось быстро нагуглить какие-либо внятные тесты по этому поводу, поэтому вопрос, по большому счету, открыт. К примеру, если выигрыш от их использования наступает только при 10 ГБ на гостя, то далеко не для всех ВМ разница вообще будет.

Буду рад, если кто подскажет ссылку или поделится опытом.

2) Самый, наверное, веский аргумент тех, кому по долгу службы требуется указывать на недостатки продуктов-конкурентов – ненадежность сэкономленного. Есть вероятность, что ВНЕЗАПНО!!111 значительная доля одинаковой памяти поменяется у многих ВМ, и Consumed memory резко скакнет. И имеющейся физически памяти на всех не хватит.

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

А вот если на этой вСфере работают и менее критичные ВМ, и если такая ситуация наступит, то заранее розданные shares позволят производственным ВМ пережить такой всплеск «недедуплицируемости» памяти с минимальным падением комфорта, ну а через какое-то время все устаканится и неважные ВМ вернуться из своих свопов.

Ну а стоят ли эти минусы экономии трети* памяти вашей вСферы – решать вам.

*Здесь «треть» означает «больше или меньше 30%»**. 

**Данные приведены по результатам многочисленных тестирований в количестве одной штуки***. 

***Автор не несет ответственности за негативные результаты, полученные при использовании приведенной здесь информации.
За позитивные результаты – несет, пишите спасибо в камментах к посту. 
;-) 

big thx Сергею Щадных за информацию.

19 комментариев:

  1. Михаил, я в своей статье отмечал главную фишку так называемой "экономии" при отключении large pages, но хотел бы повториться для тех кто не читал статью. Эта память сэкономилась бы в любом случае при достижении 94% consumed памяти. Другой вопрос, что многие сисадмины даже не догадываются об этом и планируют свои ресурсы исходя из того, что видят на графиках до того как TPS начал работать. Ну и само собой разумеется, что мало кто из админов допустит чтобы на хосте осталось так мало памяти. Следовательно потенциал ESX в memory overcommitment не будет раскрыт. И даже если сисадмин знает про TPS и Large Pages, ему все равно будет сложно угадать сколько там памяти высвободится когда TPS включатся. Так что это больше вопрос четкого понимания как используются твои ресурсы, нежели экономии.

    Было бы здорово если Сергей еще приложил графики CPU usage за этот же период.

    У меня пока LP отключены только на одном хосте из 10. В ближайшее время проделаю то же самое на оставшихся 9 и выложу результаты.

    По пункту 2 не согласен - что же нам теперь и от тонких дисков отказываться? :)

    ОтветитьУдалить
  2. лично я считаю что да, тонкие диски для производственных ВМ лучше не использовать.

    ОтветитьУдалить
  3. Из моего опыта использования тонких дисков:
    1. контроллер домена w2k3. один диск 20ГБ, свободно около 11ГБ. За полтора года эксплуатации(регулярная установка патчей + установлен большой размер журналов) рост размера vmdk с 7ГБ до 13ГБ;
    2. exchange 2007 системый диск + отдельный под почтовую базу и логи. первый 40ГБ(св. 24ГБ), второй 200ГБ(св 120ГБ)
    За полтора года - системый диск с 11ГБ до 20ГБ, диск с данными - с 40 ГБ до 200ГБ.

    ОтветитьУдалить
  4. Забыл про имхо:
    смысл использовать thin диски в продакшн, есть только, если раз в год вспоминать песенку real2real.

    ОтветитьУдалить
  5. песенко
    http://www.youtube.com/watch?v=Dyx4v1QFzhQ

    ОтветитьУдалить
  6. Аааааааааа!

    Денис, спасибо за такой отжиг, хорошее настроение на все выходные обеспечено :-)))))))))))

    ОтветитьУдалить
  7. http://www.kingston.com/redtech/articles/00004/00004.asp - поведение при BootStorm
    http://www.kingston.com/redtech/articles/00005/00005.asp - продолжение.

    http://www.vmware.com/files/pdf/large_pg_performance.pdf - улучшение производительности при использовании LargePages не превышает 10% (документ для ESX3.5, ВМ - только RHEL4 и W2003x64)

    ОтветитьУдалить
  8. Сделал подборку статей на тему memory:

    http://communities.vmware.com/people/Deshifrator/blog/2011/06/26/memory-%D0%BF%D0%BE%D0%B4%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B5%D1%81%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D0%B2-%D0%B8-%D1%81%D1%82%D0%B0%D1%82%D0%B5%D0%B9

    Там много статей на тему LP

    ОтветитьУдалить
  9. Я вот что еще подумал о маловероятной, но тем не менее опасной ситуации, когда вдруг многим ВМ понадобится много памяти одновременно, и многие машину уйдут в своп. я не знаю статитстику, но мне кажется, что во многих SMB компаниях все ВМ лежат на одном сторадже и возможно даже в одной дисковой группе. То есть существует риск что резко возросшее количество IO ударит по всем VM. У нас к сожалению все так и сделано пока.. я, увы, полгода назад, когда всю новую инфраструктуру поднимали VSphere всего как пару месяцев увидел в первый раз, не говоря уже про SAN, поэтому этот момент упустил.

    ОтветитьУдалить
  10. Поправте, если я ошибаюсь. Насколько я понял для отключения необходимо:
    на хосте
    Mem.AllocGuestLargePage = 0
    а на vm-ах
    monitor_control.disable_mmu_largepages = TRUE
    или достаточно только параметра для хоста?

    ОтветитьУдалить
  11. Достаточно только для хоста, и потом надо VM перегнать на другой хост и вернуть обратно.

    ОтветитьУдалить
  12. Наконец то добрались руки сделать то же самое на своей сфере - 50% экономии памяти.

    http://vmnomad.blogspot.com/2011/08/shared-memory-effectiveness-of.html

    ОтветитьУдалить
  13. Как узнать, в каком случае имеет смысл отключить использование большиз страниц на хосте ESX 4.0 ?

    ОтветитьУдалить
  14. Узнать очень просто - если вам стало нехватать ОЗУ, то стоит попробовать отключить большие страницы.

    ОтветитьУдалить
  15. Попробовал. Есть эффект! Особенно на перегруженном ВМ-ками тестовом хост-сервере.

    ОтветитьУдалить
  16. а можете количественные оценки дать? мне интересно для статистики.

    ОтветитьУдалить
  17. Михаил, а как посчитать требуемую здесь статистику? На боевых хост-серверах с выходных пар-р Mem.AllocGuestLargePage вернул в 1 (у меня vSphere 4.0 U1). На тестовых оставил 0.

    ОтветитьУдалить
  18. в идеале - смотрится статистика одного и того же сервера с одними и теми же ВМ под одной и той же нагрузкой, со включенными и с выключенными Large Pages.

    что смотреть:
    для хоста вкладка performance, там real time memory, stacked graf per VM -> shared.

    лучше дать не меньше часа после изменения статуса Large Pages и перевключения или миграции ВМ (которое требуется чтобы это изменение стало оказывать эффект).

    ОтветитьУдалить