Влияние виртуальных сред на производительность 1С

Почему виртуализация замедляет

Изначально виртуализация была только на программном уровне и плюсы виртуализации нивелировались существенным замедлением работы в виртуальной среде.   Частично вопрос получилось решить аппаратно — вендоры разработали инструкции процессоры Intel VT-d , AMD-V и т.п. для ускорения работы. Однако память и процессор это не единственные компоненты, есть также видеокарта, жесткие диски и т.п. и от реализации доступа к ним напрямую зависит скорость операций. Т.е. в зависимости от производителя виртуальной машины, драйверов от производителя оборудования, от умения конечного ПО распознавать виртуализацию по-прежнему скорость работы зависит значительно.
Разные приложения по разному замедляются в виртуалке.
Помимо издержек оборудования на обслуживание ПО виртуализации еще один фактор замедления — это организация течения времени. Скорость течения в физическом железе и виратуалке не одинаковы. Плюс виртуальную машину можно ставить «на паузу». Сложность реализации таймеров, переключателей синхронизаторов, перехват физических аппаратных ресурсов в виртуальной системы не позволяют решить задачу один в один как на физическом железе, много зависит от конкретного вендора.

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

ЧТО ДЕЛАТЬ

Есть два способа решения проблемы.
1й способ. Если настройками виртуализации вам не удается достичь желаемой производительности — используйте  физическое оборудование.
2й способ. Минимизировать лаги виртуализации подобрав настройки, соответствующие характеру нагрузки. При этом надо понимать, в что виртуализация это не 100% аналоги физического оборудования и компенсировать скорость надо более мощным физическим оборудованием.
Некоторые вендоры обеспечивают повышение скорости за счет встроенных в слой виртуализации механизмов кэширования. Однако кэш может быть «пробит» и тогда будет резкое падение производительности. Т.е. надо помнить не только про плюсы технологий, но и про минусы.

1. «Снимки»  надо выключать — они замедляют. При чем влияние далеко не очевидно. Подробно смотрите http://vkeygen.blogspot.ru/2011/10/snapshot.html

2. Использовать только физические диски под данные, а не виртуальные.

3. Вендоры виртуальных систем честно указывают примерный процент замедления относительно физических серверов от 9 до 24 %. Виртуалки это удобно, но не быстро. «Хочу как на физическом сервере» это пустое. Если на физическом хосте более одной виртуальной машины, то все еще хуже — квотирование всегда замедляет потоковую скорость еще больше.

4. Передача по сети между двумя виртуальными машинами на одной физической машине медленней протокола Shared Memory

5. Функции динамического перераспределения ресурсов между несколькими виртуальными машинами увеличивают возможности по ресурсам, но само перераспределение также вносит замедление. Для 1С рекомендуется выключать такие функции. Если стоит динамическое распределение ресурсов, также может «слететь» программная лицензия 1С.

6.  В BIOS должны быть включены технологии виртуализации (VT-x, EPT, AMD-V и т.п.). Там же переданное управление питание ОС — CPU Power Saving — OS Controlled mode. Или что-то аналогичное. Если поддерживается. ESXi — имеет полный набор средств для управления питанием сервера. И лучше отдать этот вопрос на откуп гипервизору, если хочется быть уверенным, что он не скажется на производительности негативно.
Там же отключите опцию NUMA Node Interleaving или включите опция Enable NUMA. Данный пункт часто вводит в заблуждение. ESXi — NUMA-awared ОС, более того, она умеет транслировать NUMA-архитектуру в виртуальные машины, так что включение возможности распознавать NUMA-ноды сказывается положительно на общей производительности в большинстве случаев. Однако опция «NUMA Node Interleaving», будучи в состоянии «Enable» на деле объединяет ноды в единое пространство, то есть отключает распознавание NUMA-нод.

7. На хостовой машине исключите из проверки антивирусом каталоги виртуальных машин

8. Миграция виртуалок на разные сервера может приводить к проблемам синхронизации времени, подробнее http://www.gilev.ru/changed_the_time/

Microsoft Hyper-V

— при использовании серверов Hyper-V с узлами NUMAтюнинг виртуалок

VMware ESXi & vSphere

Коллективное использование виртуалок для балансировки нагрузки
Проблема заключается в работе компонента vCenter под названием DRS (Distributed Resource Scheduler), задача которого заключается в балансировке нагрузки виртуальных машин на физические серверы.При появлении больших нагрузок по процессорным мощностям или по загрузке ОЗУ, DRS мигрирует виртуальную машину на другой физический хост, наименее загруженный в данный момент; в кульминации данного процесса возникают кратковременные проблемы с доступом к ресурсам этой VM.

СЕТЬ

Для виртуальных серверов  ESXi 6.0  с 1с сервером не используйте сетевые интерфейсы типа WMXNET3, использовать только типа e1000e e1000

ОПЕРАТИВНАЯ ПАМЯТЬ

— —Отключить дедупликацию памяти для EXSi — Transparent Page Sharing на хосте VMware ESXi

Если же вы хотите отключить этот механизм уже прямо сейчас, то нужно сделать следующее:

В старых версиях

  1. Залогиниться на ESX\ESXi или vCenter Server через vSphere Client.
  2. Выбрать нужный хост и зайти на вкладку Configuration, затем перейти в Advanced Settings в секции Software.
  3. Выбираем раздел Mem и в нем устанавливаем значение параметра Mem.ShareScanGHz в 0.tps

После патча и обновлений ESXi механизм TPS можно будет включить следующим образом (Advanced Settings в секции Software):

  • Параметр Mem.ShareForceSalting (включение TPS на уровне всего хоста ESXi). Если значение стоит 0 — то значит TPS по-прежнему работает на хосте, если 1 — механизм отключен.
  • Параметр sched.mem.pshare.salt (ставится на уровне ВМ) позволяет включать/отключать TPS для отдельных виртуальных машин (например, старые Windows или линуксы — для них можно было бы включить). Когда параметр ShareForceSalting установлен в значение 1, то для нуждающихся в TPS машин в их Advanced Configuration нужно установить одинаковые значения «соли». Без этого TPS не работает — соответственно, он отключен.

 ПРОЦЕССОР

— —Включить схему питания максимальной производительностиpowerp

— vSphere прекрасно знает про NUMA и старается размещать виртуальные ядра машин на тех физических процессорах, в чьей памяти сейчас находится оперативная память виртуальной машины. Но тут возникают подводные камни. Производители серверов любят включать в BIOS по умолчанию эмуляцию NUMA. То есть сервер представляется операционной системе как НЕ NUMA устройство, и vSphere не может использовать свою оптимизацию для управления данной технологией. В документации по vSphere рекомендуется отключать (Disable) данную опцию в BIOS, это позволяет vSphere самостоятельно разбираться с вопросом.

ДРАЙВЕРА

— Установите гостевые дополнения  VMware Tools

Первое, что необходимо сделать, после установки операционной системы гостя внутри виртуальной машины, это установить программный пакет – гостевые дополнения VMware Tools для VMware. Эти пакеты содержат специальные драйвера, которые обеспечивают более быструю работу гостевой операционной системы на аппаратных средствах виртуальных машин.

Выберите пункт Install VMware Tools в меню виртуальной машины . Следуйте инструкциям на вашем экране для завершения установки. Если вы используете гостевую ОС Windows, то вы увидете, что данный процес не отличается от установки других приложений.

Проверка VMware Tools.

  • Выберите хост в vClient;
  • Перейдите на вкладку Virtual Machines;
  • Добавьте столбец «VMware Tools Status»;
  • Оцените статус. OK->значит все хорошо, ничего делать не надо.  Not Running/Out of date — устраняем.

Если VMware Tools не запущены, необходимо разбираться с гостевой операционной системой. Причина может скрываться в обновлении ядра Linux либо отключенной (кем-то) службе VMware Tools в Windows.

Если VMware Tools устарели, необходимо их обновить из контекстного меню vClient. Как правило, это случается после установки обновлений на хосты ESX/ESXi. После этого зачастую требуется обновить и VMware Tools.

ДИСКИ

— Увеличить значение Disk.DiskMaxIOSize до 128

— При использовании внешних хранилищ

  • Independent Persistent Mode vmdk-диска — наиболее производительный, поскольку изменения вносятся сразу на диск, не журналируясь. Но такой диск не подвержен снапшотам, его нельзя откатить.
  • При использовании iSCSI рекомендуется настроить jumbo frames (MTA=9000) на всех интерфейсах и сетевом оборудовании.
  • MultiPathing — для большинства случаев RoundRobin — ОК. Fixed может дать большую производительность, но это после вдумчивого планирования и ручной настройки каждого хоста до каждого LUN. MRU можно поставить при active-passive конфигурации, если какие-то пути время от времени пропадают — чтобы не перескакивало туда-обратно.

Как выглядит на практике отказ от виртуализации. Далеко не всегда виртуализация сильно замедляет, все таки характер нагрузки, объем данных имеют тоже значени.

вывпай

 

Дрейгер П.Г., Сегежа Групп о настройке виртуализации:

 

 Специалисты gilev.ru провели анализ инфраструктуры и дали свои рекомендации, после выполнения которых  отзывчивость интерфейса и интерактивных операций на тестовом контуре увеличилась в 2 раза» См. полный отзыв.