четверг, 16 сентября 2010 г.

time in vm

Вот есть сервер.
image

На сервере несколько физических ядер.
image

Установлен ESX(i), развернуты разные ВМ. Очевидно, у каждой ВМ есть хотя бы один виртуальный процессор.
image

Обычно всего виртуальных процессоров больше чем всего ядер.
image

Это означает, что на каждом ядре сервера работают несколько виртуальных процессоров разных ВМ.

Выберем какую-то одну виртуальную машину, а даже вернее — ее ОС. Кроме прочего, она с какой-то частотой генерирует прерывания для отсчета времени, обычно это происходит с частотой 50-100-250-1000 Герц.

Может возникнуть проблема — у этой ОС пришло время выполнить прерывание, а гипервизор решает что прямо сейчас она не получит тики физического ядра — ведь его ресурсы гипервизор должен давать и другим виртуалкам.

Отсюда возникают проблемы убегания времени, и, если timer interrupt происходят часто — потери производительности.

У многих современных Linux частота этих прерываний = 1000 Гц.

Это лишку.

Прикладная иллюстрация:

запустите esxtop или resxtop.

image

нажмите SHIFT+v, чтобы на экране остались только процессы виртуальных машин

image

нажмите f, чтобы выбрать столбцы — нас интересует один из них, по умолчанию не отображаемый.

image

оставьте звездочки только напротив Name и Summary Stats.

image

Вот именно такая тысяча и является излишней по излагаемой мною тут теории.

Стоит оставить 100.

Как это сделать — kb.vmware.com/kb/1006427/.

Там же вы узнаете, что для Linux синхронизацию времени однозначно лучше делать через NTP, нежели через VMware tools — дело в том, что тулзы не могут синхронизировать убежавшее вперед время. Вернее, могут, но только один раз — при старте системы\suspend\snapshot. Еще полезно почитать — Timekeeping in VMware Virtual Machines.

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

  1. А правда ли, что VMware на 1 физическое ядро процессора htrjvtyletn 4 VM?

    ОтветитьУдалить
  2. как общая рекомендация такая есть, да.
    однако не забывайте, что ВМ - это растяжимое понятие.
    Когда-то ядра и для одной единственной не хватит, а когда-то они вдесятером нормально работать будут.

    ОтветитьУдалить
  3. Насколько я помню, для Linux вообще можно указать не использовать таймкипер! Опция Тиклесс. Мне кажется это идеальный вариант!

    ОтветитьУдалить
  4. хорошая статия Михаил,
    по поваду :
    А правда ли, что VMware на 1 физическое ядро процессора htrjvtyletn 4 VM, если правилно понял вапрос сколко vCPU рекомдовано на один CPU? длиа ЕСХ4 ето число состабляет 20 а длиа ЕСХ4 Up1 25,
    вабше по пободу Linux машин бест практис рекомдует исползиват как Михаил и сказал внешни NTP

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