Performance Best Practices for VMware vSphere 7.0. Часть 1 – Hardware for Use with VMware vSphere

Недавно вышел в свет один из важнейших документов, содержащий в себе концентрацию лучших практик для обеспечения производительной работы VMware vSphere с поправками на последнюю, седьмую, версию.

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

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

В целом, документ состоит из большого количества секций. Я просто пойду сверху вниз по всем пунктам, которые интересуют меня, и могут быть полезны в первую очередь новичкам.

Первая часть «Hardware for Use with VMware vSphere» посвящается моментам, на которые необходимо обратить внимание при выборе серверного оборудования и начальной конфигурации.

Validate Your Hardware

Всегда необходимо проверять серверное оборудование, планируемое для использования под задачи виртуализации на совместимость с устанавливаемой версией vSphere. Проверять по Support Matrix необходимо все:

  1. HBA, NIC, CPU;
  2. Версии Firmware, драйвера;
  3. СХД, протокол подключения;
  4. Версии гостевых ОС.

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

При новых инсталляциях, рекомендуется тестировать ОЗУ в течение 72 часов, для выявления возможных ошибок.

CPU Hardware Considerations

Hardware-Assisted Virtualization

Большинство современных процессоров Intel и AMD включают в себя функции «помощи в виртуализации» и улучшают производительность виртуальной среды. Данные функции ниже:

  1. Hardware-Assisted CPU Virtualization (Intel VT-x and AMD-V™) – Осуществление виртуализации CPU;
  2. Hardware-Assisted MMU Virtualization (Intel EPT and AMD RVI) – Ведение таблицы соответствия физической памяти гостевой ОС и физической памяти хоста;

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

3. Hardware-Assisted I/O MMU Virtualization (VT-d and AMD-Vi) – Виртуализация устройств ввода-вывода (Сеть, HBA, GPU). К этому разделу относится, например, DirectPath I/O, SR-IOV.

Memory Hardware Considerations

Persistent Memory (PMem)

Планки энергонезависимой памяти, которые включаются в стандартные слоты DIMM. Дешевле, данные сохраняются при перезагрузке, большие объемы памяти, по сравнению с классической ОЗУ, обладают более низкой скоростью доступа. Пример – Intel Optane (DCPMM – DC Persistent Memory Modules), NVDIMM-N.

Intel Optane работает в двух режимах:

  1. Memory mode – DCPMM выступает для операционной системы как основная оперативная память. В этом случае «классическая ОЗУ» DRAM выступает в качестве кэша для DCPMM. Данный режим позволяет «сэкономить» на более дорогой DRAM, не без уменьшения скорости доступа. Производительность зависит от размера DRAM под кэш, как часто необходимо обращаться к ОЗУ и т.п. Подробнее.;
  2. App Direct Mode – В данном случае приложение, либо ОС понимает, что работает как с классической DRAM, так и с Persistent Memory, в связи с чем само выбирает, какую память использовать в конкретный момент. DCPMM может представляться в виртуальной машине виде классического диска (vPMEMDisk) также, как и устройство, выступающее в качестве виртуальной NVDIMM (vPMEM). В этом случае, гостевая операционная система должна понимать, что работает с NVDIMM памятью (PMem aware). Подробнее.

VMware рекомендует использовать режим App Direct как устройство vPMEM. Для получения максимальной производительности приложение должно быть PMem-aware, например, MS SQL Server 2019.

NVDIMM – тип Persistent Memory, работающий на тех же скоростях, что и DRAM, но сохраняет данные при перезагрузках. Всегда подключается в виртуальную машину как PMem и не может работать в режиме Memory Mode, как DCPMM.

В App Mode работает аналогично DCPMM как vPMEMDisk, либо как vPMEM. Подробнее.

Storage Hardware Considerations

В большинстве случаев, на итоговую работу дисковой подсистемы влияет не сколько конфигурация ESXi, сколько конфигурация СХД и сети передачи данных.

Производительность дисковой подсистемы зачастую зависит от множества факторов, включая уровень используемого RAID, типы дисков, размер кэш и т.п.

Перед непосредственным внедрением, крайне рекомендуется ознакомиться с документацией вендора СХД, а также с документацией VMware относительно работы системы виртуализации с СХД выбранного вендора.

  1. Стоит подумать на тему использования флэш памяти на хостах – SSD, NVME, что может помочь, например, со swap файлами;
  2. Если используются 4Kn диски, необходимо чтобы приложения и ОС так же были оптимизированы для работы с дисками 4K, иначе можно получить проблемы с производительностью;
  3. Если планируется использовать vSAN – будет неплохо рассмотреть all flash конфигурацию, как альтернативу гибриду;
  4. При дизайне сети передачи данных, нужно думать не только про логику, но и про физику. VLAN никак не спасет, если линк будет утилизирован на 100%;
  5. Если планируется использовать vVols – система хранения данных должна поддерживать vStorage API for Storage Awareness (VASA);
  6. Лучше – выделенные интерфейсы под сеть передачи данных, поскольку приложение, которое много пишет, может мешать другим, утилизировав весь линк;
  7. При использовании локального хранилища – включать Write-Back Cache, при этом контроллер должен быть оборудован батареей на случай отключения питания;
  8. Необходимо убедиться, что карты для подключения к сети СХД (NIC, HBA) установлены в соответствующие по скорости PCI слоты, например, FC HBA 32GB/s с одним портом установлен в слот PCIe Gen3 x4, в то время как FC HBA 32GB/s с двумя портами установлен в слот PCIe Gen3 x8. Данные карты обычно работают и в других слотах, однако получить максимальную производительность будет проблематично.

VMware vStorage APIs for Array Integration (VAAI)

Выбираем СХД, которая поддерживает VAAI, чтобы перенести выполнение некоторых дисковых операций с гипервизора ESXi на СХД.

В некоторых случаях использование VAAI снижает нагрузку на CPU гипервизора, поскольку теперь часть своей работы он перекладывает на СХД, снижается latency, уменьшается трафик в сети передачи данных.

Основные возможности VAAI для SAN:

  1. Scalable Lock (hardware-assisted locking, atomic test & set он же ATS). Используется при обновлении метаданных VMFS. Ранее, при изменении метаданных ненадолго, но блокировались обращения ко всему VMFS-тому. С использованием Scalable Lock эта проблема решается, блокируется только доступ к изменяемому элементу, но не ко всему Datastore. Выражается в ускорении многих операций, типа изменения конфигураций машин, снапшотов, расширения диско, увеличивается производительность «тонких» VMDK и т.п.;
  2. Extended Copy (XCOPY, copy offload) перекладывает операции по копированию (в рамках одной СХД) на систему хранения данных. Например, при клонировании машин, Storage vMotion. Снижает нагрузку на ESXi. Не будет работать при копировании\клонировании между двумя разными СХД;
  3. Block zeroing (Write Same) – «зануление» дисков thick provision eager-zeroed тоже перекладывается на СХД, уменьшая работу гипервизора;
  4. Dead space reclamation (UNMAP) – крайне полезная вещь, при использовании тонких LUN на СХД. Возвращает освобожденное на Datastore пространство обратно в СХД. Удалил виртуальную машину – стал меньше размером тонкий LUN на СХД (конечно, не моментально).

Основные возможности VAAI для NAS:

  1. Hardware-accelerated cloning – перекладываем клонирование на уровень СХД;
  2. Native Snapshot Support (Fast File Clone) – позволяет использовать снапшоты, либо linked clone используя встроенный механизм snapshot в СХД, вместо механизма снимков VMware. В документе указывается, что процедура создания снапшотов с помощью NAS может быть медленней, нежели выполнение того же самого средствами VMware;
  3. Reserve Space – Можно создавать не только тонкие диски, но и «толстые». VAAI NAS поддерживает lazy-zeroed thick и eager-zeroed thick.

Исходя из вышеуказанных возможностей VAAI для SAN и NAS, очевидно, что использование массивов с поддержкой данной технологии настоятельно рекомендуется.

iSCSI and NFS Storage

Убеждаемся, что у нас на сети нет узких мест, желательно, роутинга (точнее крайне настоятельно рекомендуется).

Держим в голове, что использование software-initiated iSCSI адаптера, а также NFS могут потребовать дополнительных ресурсов CPU на хосте, поскольку заниматься обработкой дискового трафика придется ему.

NVMe Storage

NVMe быстрее, но так же требует больше процессорных ресурсов. Рекомендуются к использованию многоядерные процессоры, хотя бы от 8 ядер. Больше процессоров – лучше, но хотя бы 2. С частотой так же – выше – лучше.

NVMe over Fabrics (NVMe-oF) Storage

Начиная с версии 7, ESXi поддерживает технологию NVMe-oF с помощью FC, либо RDMA в качестве транспорта.

NVMe-oF позволяет получить больше значения IOPS при меньших задержках.

Network Hardware Considerations

Убеждаемся, что мы используем «server-class» сетевые адаптеры для получения максимальной производительности. Убеждаемся, что на сети нет узких мест, все кабеля, коммутаторы работают на максимально доступных скоростях.

Так же рекомендуется использовать карты, поддерживающие функции Checksum offload, TSO, LRO, RSS, Jumbo и т.д. (если они, конечно, планируют использоваться).

По аналогии с HBA адаптерами, сетевые карты должны быть установлены в соответствующие PCI слоты, для получения максимально-доступной скорости приема/передачи.

Однопортовые 10Gb/s адаптеры рекомендуется устанавливать в слоты PCIe x8 (или выше), в то время как двухпортовые уже в PCIe x16.

При этом 40 гигабитные адаптеры следует устанавливать в PCI Gen3 x8/16 (либо выше).

По возможности, и крайне рекомендуется, чтобы виртуальный свитч vSwitch содержал адаптеры с одинаковой пропускной способностью.

Использование LACP может увеличить пропускную способность и доступность.

Hardware BIOS Settings

Всегда следует использовать последнюю версию BIOS, доступную для системы (но матрицу совместимости глянуть все равно стоит).

После обновления версии, следует проверить настройки BIOS, вдруг, ранее выставленные значения были изменены.

Добавлю от себя, что, если не знаешь, зачем нужен параметр, лучше его не изменять, чтобы не получить в дальнейшем проблем.

  1. Следует убедиться, что в BIOS задействованы все процессорные сокеты и все ядра на установленных процессорах, включен Hyper-Threading и Turbo Boost;
  2. Не стоит переводить Node Interleaving в параметр enabled (это отключит использование NUMA). Для использования NUMA – выставляем этот параметр в disabled, для использования UMA – enabled. В большинстве случаев, при правильном сайзинге виртуальных машин, с NUMA мы получим большую производительность;
  3. Необходимо убедиться, что все функции hardware-assisted virtualization включены (VT-x, AMD-V, EPT, RVI);
  4. Неплохим решением будет отключить в BIOS устройства, которые не используются. Например, USB, либо сетевые порты.

Power Management BIOS Settings

Не про употребление электропитанием сервера, а про управление питанием CPU.

Рекомендуется переложить управление питанием с плеч BIOS на плечи ESXi, и выставить в BIOS значение “OS Controlled Mode”, либо аналогичное.

C-States помогают экономить электроэнергию, переводя простаивающие процессоры в режим пониженного энергопотребления за счет приостановки работы его отдельных компонентов.

Всего таких уровней 6. Чем выше уровень – тем больше элементов процессора в режиме минимального энергопотребления.

Все выглядит прекрасно до тех пор, пока нагрузка не начинает расти и процессору необходимо перейти из состояния с отключёнными компонентами в полностью рабочее состояние (из режима C6 в C0). Этот переход занимает какое-то время, и это может сказаться на работе некоторых приложений. Подробнее.

Далее идет ряд рекомендаций по использованию CStates:

  1. Использование C1E (аппаратно-управляемое состояние) зачастую уменьшает потребление электроэнергии с минимальным, либо вообще без влияния на производительность. Однако, некоторые приложения, крайне чувствительные к I/O latency, например, финансовые платформы, могут быть к этому чувствительны. В таком случае рекомендуется отключение C1E в BIOS;
  2. C-States глубже чем C1 и C1E управляются программно. Чтобы получить максимальную производительность на ватт электроэенергии, рекомендуется оставить включенными все C-States, которые в дальнейшем будут управляться с помощью vSphere;
  3. При использовании технологии Turbo Boost или Turbo Core, использование C-States в некоторых ситуациях могут даже увеличить производительность некоторых немногопоточных приложений (в случае, если некоторые ядра процессора простаивают).

На этом раздел по «железной» части подходи к концу. В следующей части посмотрим на все, что касается раздела ESXi and Virtual Machines этого замечательного гайда.

Все статьи по данному циклу:

Часть 1 – Hardware for Use with VMware vSphere;

Часть 2 – ESXi General Considerations и CPU;

Часть 3 – ESXi General Considerations и оперативная память;

Часть 4 – ESXi Storage Considerations;

Часть 5 – ESXi Networ Considerations;

Часть 6 – Guest Operating Systems.

Leave a Reply

Your email address will not be published. Required fields are marked *