среда, 12 мая 2010 г.

Выключение TPS вредит производительности?

Duncan Epping указал на один интересный факт, связанный с особенностями работы Transparent Page Sharing (TPS).

Все дело в том, что TPS на NUMA системах работает только в пределах NUMA узла. Из чего следует простой вывод: страницы памяти не могут быть расшарены между NUMA узлами. Frank Denneman написал целую статью о том, как работает ESX на NUMA системах и правильном сайзинге ВМ для NUMA. Так вот, если страницы памяти выделяются удаленно, на другом узле, то для них действует "штраф" (кстати, “esxtop” в метрике N%L показывает процент удаленных страниц). Доступ к этим страницам осуществляется через шину интерконнекта, что, разумеется, медленнее, чем к так называемой локальной памяти.

Возникает вопрос - так какая же связь между NUMA, TPS и производительностью? Задумайтесь над этим. TPS уменьшает количество необходимых физических страниц памяти. Т.е. при выключении TPS возрастают шансы, что при выделении очередной страницы памяти придется выйти за пределы NUMA узла и выделить удаленную страницу. Что, как уже было сказано, отрицательно скажется на производительности. Забавно, как выключение технологии, повсеместно ассоциируемой с повышенной нагрузкой на CPU, приводит к росту задержек при обращении к памяти.

P.S. представителями NUMA архитектуры являются Intel Nehalem и все AMD Opteron .

3 комментария:

  1. Анонимный12 мая 2010 г., 16:20

    Выкинуть сервер?

    ОтветитьУдалить
  2. Вот только использование больших страниц памяти практически сводит на нет преимущества TPS в не зависимости от архитектуры

    ОтветитьУдалить
  3. Поэтому большие страницы можно отключить. Разумеется, если производительности системы хватает. Например, у меня классическая memory-bound среда. При коэффициенте консолидации 37 и сумме Granted Memory = 64 GB уровень утилизации процессоров (2 * x5570) составил 15-20% с отключенными большими страницами.

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