`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Виртуализация как приложение-убийца

Статья опубликована в №42 (752) от 23 ноября

+44
голоса

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

За последние два года радикально изменилась роль стандартных двухпроцессорных серверов архитектуры x86-64. Поводов для этого было два: экономический и технологический. Первый связан с кризисной «ломкой», которая пресекла инвестиции в «перегретые» виды деятельности и, соответственно, расточительность. Если же говорить о технологических изменениях, то благодаря росту производительности всех подсистем сервера, и прежде всего связки центральный процессор/оперативная память, в массовом сегменте рынка практически не осталось «одиночных» задач, способных полностью загрузить современный двухпроцессорный серверы. В результате произошло резкое снижение спроса на серверы класса 4хCРU+, а также наблюдается еще более низкий процент утилизации их ресурсов. Таким образом, для задач бизнеса основным направлением развития стала консолидация задач и сервисов на централизованных вычислительных ресурсах с одновременным повышением эффективности применения оборудования. А основой консолидированных систем стали виртуализированные среды с использованием решений от различных вендоров. И если исключить высоконагруженные SQL базы данных, тяжелые корпоративные приложения и задачи HPC, то главной задачей-«поглотителем ресурсов» является именно виртуализация. По нашим наблюдениям, львиная доля (70–80%) приобретаемых в течение последнего года высокопроизводительных двухпроцессорных серверов нацелено как раз на ее решение.

Изменения требований

Виртуализация ИТ-инфраструктуры и сервисов заставляет под совершенно иным углом посмотреть на вопрос внутренней архитектуры сервера, вводя «новые измерения» для каждой подсистемы. Теперь недостаточно простой вычислительной мощности ядер, не менее важной становится и скорость переключения процессора между потоками виртуальных машин (VM), его умение защитить данные одной VM от «повреждения» некорректными действиями другой. Уже мало просто большого объема памяти или кеша – требуется быстрый доступ к информации при произвольной выборке с минимальной латентностью. От дисковой подсистемы требуется не только заоблачный уровень iOPS, но и умение эффективно распределять ограниченные ресурсы доступа между множеством виртуальных машин. А сетевые интерфейсы вообще выделились в отдельный класс быстродействующих интеллектуальных вычислителей.

В наиболее жесткой форме все «прелести» виртуализации прочувствовали производители CPU. Оказалось, что, даже имея великолепный процессор и лучший в мире техпроцесс, совершенно бесполезно наращивать голую вычислительную мощность CPU. Она будет либо не востребована, либо использоваться непродуктивно, если периферийные компоненты сервера по своим параметрам не станут соответствовать требованиям виртуализированных сред.

Виртуализация как приложение-убийца
Различия в методах обработки 12 потоков процессорами AMD Opteron 61xx и Intel Xeon 56xx

Самым ярким примером здесь может быть... обычный сетевой интерфейс. «Классические» сетевые карты при получении пакета для его обработки обращаются с прерыванием к процессору. И так для каждого пакета. Если речь идет о сервере «под одну задачу» – это плохо, но терпимо. А если мы имеем сервер с десятком виртуальных машин и интенсивным сетевым обменом? Большинство современных серверных Ethernet-адаптеров в той или иной степени содержат элементы TCP/IP Offloader, избавляя процессор от непосредственной обработки каждого пакета. Но при этом возникает иная задача: как передать пришедший на общий физический сетевой адаптер пакет, адресованный конкретной VM? Обычные сетевые карты при получении пакета передают его программному гипервизору, который, используя ресурсы CPU, на программном уровне вычисляет, какой из виртуальных машин адресован пакет, и только потом передает его требуемой VM. Потери производительности на сетевом интерфейсе в таком режиме вполне могут достигать 25–40%! Подобная же ситуация наблюдается и с операциями ввода/вывода дисковой подсистемы, ресурсы которой разделить адекватно еще сложнее.

В итоге традиционный производитель процессоров Intel просто вынужден был заняться вопросом поддержки виртуализации на аппаратном уровне для подсистем ввода/вывода. «Тупые» сетевые карты и дисковые подсистемы делают бессмысленными продажи все новых и новых, развитых мультиядерных, многопотоковых процессоров. Таким образом, виртуализация (как приложение) – это современная практическая задача, наглядно демонстрирующая узкие места сервера и степень их узости. То есть это и есть killer-application.

Истоки сложностей с аппаратной виртуализацией

Архитектура платформы x86, в отличие от тех же мейнфреймов, изначально не предусматривала использования виртуализации. Все ее аппаратные компоненты – процессор, видеокарта, дисковые контроллеры, сетевые адаптеры и т. д. – проектировались для монопольного применения лишь одной операционной системой.

Процессор архитектуры x86 аппаратно поддерживает четыре уровня привилегий, или «колец». На уровне «0», имеющем максимальные привилегии, должно работать ядро основной операционной системы. Код, выполняющийся здесь, имеет полный доступ ко всем ресурсам CPU и называется привилегированным. Уровни «1» и «2» не применяются, а все приложения работают на уровне «3», называемым также «пользовательским» или непривилегированным.

Виртуализация как приложение-убийца

Уровни привилегий в CPU. Гипервизор (он же менеджер виртуальных машин – VMM) должен быть размещен на уровне «0», непосредственно взаимодействуя с аппаратными ресурсам и распределяя их. Гостевые ОС (VM), с точки зрения безопасности и управляемости, не могут находиться с ним на одном уровне, а значит, должны выполняться на непривилегированном уровне «3». А на нем невозможен запуск привилегированных инструкций, которые применяются ядром гостевой операционной системы и предназначены для выполнения на уровне «0». Соответственно, исключительно на аппаратной основе не может работать более одной операционной системы. Программные средства виртуализации, работая на уровне «0», способны перехватывать команды для привилегированного режима от ядра гостевой ОС (VM) в непривилегированном режиме и транслировать их в разрешенные для непривилегированного режима команды. С соответствующими накладными расходами. Либо же требуется внесение изменений в ядро гостевой ОС.

Переключение контекста. Кроме вопроса доступа к наборам команд, в виртуализированной среде существует и вопрос переключения между выполнением потока команд от различных VM, а также VMM. Каждая операционная система использует один и тот же набор регистров, стек, адресное пространство. Переключение между задачами различных ОС требует механизмов быстрого сохранения текущего состояния регистров и стека при переключении между задачами и такого же быстрого возврата к ним. По сути, вопрос не нов – он встал перед архитектурой х86 с появлением многозадачности. В то же время виртуализация именно CPU – задача относительно «свежая», и решается она на аппаратном уровне. Одна из самых «честных» в плане поддержки аппаратной виртуализации платформа Microsoft Hyper-V 2.0 неспроста поддерживает до восьми Virtual Processor Core на одном Physical Processor Core. Для ускорения этих операций в процессорах применяется целый ряд технологий, в том числе и трансляция адресов.

Трансляция адресов. Каждая гостевая операционная система работает в рамках собственного пула адресного пространства. А значит, постоянно есть потребность в трансляции «виртуальных» адресов гостевой ОС в физические адреса доступа к памяти/устройствам. Кроме того, это потенциально рискованная операция, так как может сложиться ситуация, когда одна виртуальная машина получит несанкционированный доступ к адресному пространству другой. Аналогичная проблема характерна и для устройств ввода/вывода: сетевых карт, контроллеров дисковых массивов, графической подсистемы. Каждый пришедший пакет необходимо доставить той VM, которая его запросила, в терминах ее «виртуального» адресного пространства.

Доступ к устройствам. Как уже упоминалось, архитектура х86 изначально не проектировалась для обеспечения работы нескольких ОС. Как следствие, возникла потребность в целом ряде технологий, позволяющих, с одной стороны, минимизировать нагрузку на общие ресурсы (шины передачи данных, процессора), с другой – обеспечить гостевым ОС доступ к аппаратным ресурсам напрямую, фактически без участия гипервизора (для снижения потерь производительности).

Пути решения на аппаратном уровне

Виртуализация как приложение-убийца
Принципы работы технологии Intel Trusted Execution Technology

Сразу оговоримся, что описание технологий будет вестись на примере процессоров компании Intel исключительно по причине большей доступности информации о них. Подавляющее их большинство присутствует в той или иной степени и в продуктах AMD под другими названиями. Технологии виртуализации от Intel объединены под общем названием Intel VT и подразделяются на: VT-х – оптимизация работы процессора, VT-d – оптимизация ввода/вывода (чипсет), VT-c – повышение эффективности сетевых интерфейсов, а от AMD – имеют общее название AMD-V.

Процессор

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

Многоядерность и многопотоковость. Один из основных способов повысить производительность в многозадачной и многопотоковой среде – увеличение количества физических и логических ядер. Как показывает практика, наилучшее соотношение физических и виртуальных ядер в виртуализированой среде – 1:1,5. В высоконагруженных средах оно позволяет «выжать» из того же оборудования на 20–50% больше, чем без средств виртуализации.

В этом контексте нужно упомянуть технологию Intel Hyper-Threading (HT), позволяющую аппаратно задействовать два логических ядра дешифрации команд на одно физическое вычислительное. Как показала практика эксплуатации процессоров Intel Xeon with HT, далеко не всегда ее применение дает положительный эффект. К примеру, при высокой загрузке в задачах High Performance Computing (HPC) эту технологию рекомендуют отключать. Похожая ситуация может наблюдаться и в виртуализированой среде. Сказать однозначно, что Hyper-Threading необходимо здесь отключать, нельзя – результат ее использования сильно зависит от того, какие приложения/сервисы исполняются в виртуальной среде. По нашим наблюдениям, при высоком уровне утилизации CPU данную технологию лучше не задействовать.

Также неоднозначно применение в виртуализированных средах Intel Turbo Boost. Она эффективно работает, когда средняя нагрузка на CPU не слишком высока и некоторые ядра недостаточно загружены. При «тяжелых» приложениях это бывает редко. К примеру, ряд поставщиков СУБД даже рекомендуют отключать эту технология при высокой нагрузке на сервер. Причины – в ее малой эффективности при равномерной загрузке ядер и потерях времени на изменение частоты ядра. Рекомендации здесь те же, что и с Hyper-Threading – проверить в конкретной среде виртуализации. Исходя из опыта при высокой и равномерной средней загрузке ядер CPU технологию Turbo Boost лучше отключить.

Уровни привилегий в CPU. Аппаратная виртуализация, реализуемая в современных CPU, дает возможность работать гипервизору вне стандартных уровней привилегий, как бы на уровне «-1», что позволяет ядру гостевой операционной системы без внутренних изменений работать на уровне «0». Для этого введен специальный «гостевой» режим процессора (guest mode), который используется для выполнения кодов гостевой операционной системы. Такой режим работы в процессорах от Intel называется VMX (Virtual Machine eXtensions) и является частью технологии Intel VT-x. В CPU от AMD – это SVM (Secure Virtual Machine), входящий в семейство AMD-V.

В терминах Intel, в режиме VMX-функционирования процессора гипервизор выполняется в привилегированном режиме VMX root, а гостевая операционная система с меньшими привилегиями – в VMX non-root. Оба режима поддерживаются на всех четырех уровнях. Аналогична и технология введения дополнительного гостевого режима и от AMD (SVM).

Аппаратная виртуализация представляет собой набор расширенных инструкций. К сожалению, расширения системы команд от Intel и AMD несовместимы друг с другом. Как следствие, «живая миграция» (без остановки работы) VM между платформами от этих вендоров с опорой на современную аппаратную виртуализацию невозможна.

Поддержка «гостевого режима» на аппаратном уровне позволила не использовать депривилегизацию ОС, существенно снизив нагрузку на программную часть – гипервизор.

Миграция при смене архитектуры. Совершенно естественно, что оба вендора позаботились о миграции виртуальных машин с CPU предыдущих поколений на более новые, даже в случае смены архитектуры, за что в Intel VT-х отвечает технология FlexMigration, а в AMD-V – Extended Migration. Это позволяет создавать единый пул виртуализации и предназначается для поддержки онлайн-миграции (Live Migration) работающих VM между серверами на процессорах разных поколений.

Виртуализация как приложение-убийца
AMD 61xx поддерживает четыре канала памяти и частоту 1033 МГц при установке в канал трех DIMM, тогда как Intel 56xx – три канала памяти и частоту 800 МГц для трех DIMM в канале

Данная возможность имеет естественные ограничения в «аппаратных» гипервизорах, таких как Microsoft Hyper-V. К примеру, обеспечить онлайн-миграции VM с процессорной архитектуры следующего поколения не удастся, так как старый CPU просто не поддерживает некоторых наборов команд. При переносе VM на процессор предыдущей архитектуры необходимо остановить VM и запустить ее заново. Онлайн-миграция VM со старой на новую процессорную архитектуру проходит успешно, но при этом теряется часть производительности, поскольку не задействуются «новые» наборы команд более совершенной аппаратной архитектуры. Рецепт здесь тот же – остановить VM и запустить ее заново. Прирост быстродействия VM после рестарта может измеряться десятками процентов.

В гипервизорах от VMware есть возможность принудительно ограничить для всех VM набор используемых команд в соответствии с возможностями самой «старой» архитектуры, вплоть до совместимости между Intel и AMD. В таком режиме можно получить действительно единый серверный пул с полной переносимостью VM между всем серверами. Как правило, его используют только на этапе перехода на новую аппаратную платформу.

Обработка прерываний (APIC). Когда процессор выполняет некую задачу, он часто получает запросы, или «прерывания», от других устройств или приложений. Чтобы свести к минимуму влияние прерываний на производительность, специальный регистр в процессоре (APIC Task Priority Register, TPR) отслеживает приоритеты задач. Он обеспечивает, чтобы только прерывания с более высоким приоритетом, чем выполняемые в данный момент, были обработаны немедленно. А раз доступ к аппаратным ресурсам контролирует гипервизор (VMM), то «по умолчанию» каждое такое прерывание должно было бы приводить к передаче управления от гостевой VM к VMM, его обработке и затем возврату управления в VM. Для 32-разрядных систем технология Intel VT-х FlexPriority создает виртуальную копию TPR, которую может читать, а в ряде случаев и изменить гостевую ОС без вмешательства VMM. Аналогичные функции для 64-разрядных систем выполняет новый регистр CR8.

Таким образом, Intel VT-х FlexPriority оптимизирует эффективность ПО виртуализации за счет обработки прерываний APIC без вмешательства гипервизора, обеспечивая возможность предоставления гостевым VM функции перестроения очереди задач хост-системы (VMM) без ее участия. В первую очередь это улучшает производительность для 32-разрядных операционных систем, которые часто используют прерывания. Согласно данным Intel применение FlexPriority позволяет заметно снизить вероятность переполнения стека прерываний, ускорить загрузку ОС до 40% и повысить быстродействие до 35%. Аналогичные функции у AMD «спрятаны» внутри технологии AMD-Vi.

Переключение контекста (или задержки перехода). Для быстрого переключения между задачами различных ОС используется целый ряд механизмов. В терминах Intel VT-х часть технологий объединена под названием Virtual Processor ID (VPID), у AMD они называются Enhanced Tagged-TLB.

Виртуализация как приложение-убийца
DMA Remapping позволяет существенно сократить издержки

Кроме традиционных механизмов быстрого копирования контента из регистров и стека, наибольшее значение имеет работа с таблицей трансляции адресов Translation Lookaside Buffer (TLB). До введения Virtual Processor ID потери происходили при каждом выходе из VM и преимущественно при записи VM. Для гипервизора (VMM) выделяется VPID 0x0000, остальным же гостевым ОС VMM выдает другие уникальные VPID. В результате при всех переключениях между VM кешируются линейные переходы с указанием VPID, что позволяет заметно ускорить все процессы переключения. Для реальных задач, интенсивно работающих с памятью, обеспечивается прирост производительности в среднем на 1,5–3%, в то время как специализированные синтетические тесты показывают до 10–15% прироста.

Также к блоку переключений контекста относится и механизм Intel VT-х под названием Guest Preemption Timer, позволяющий VMM вытеснять исполнение гостевой VM. Не влияя напрямую на производительность, он дает возможность гарантировать уровень сервиса (QoS).

Трансляция адресов. Задача трансляции адресов виртуальных машин в реальные адреса физических компонентов сервера достаточно ресурсоемка и важна. В терминах Intel VT-х за эту часть отвечает технология Extended Page Tables (EPT), а AMD-V – Rapid Virtualization Indexing (RVI).

Для нормальной работы VMM должна сохранить контроль за физико-адресным пространством. Только она имеет доступ к аппаратной таблице трансляции адресов. В итоге возникла необходимость хранить виртуальную таблицу трансляции адресов, что требовало существенных ресурсов. Использование расширенных функций управления памятью VM привело к снижению накладных расходов на трансляцию адресов внутри VM в адреса на физическом хосте. Аппаратная поддержка виртуализации таблицы страниц устранила необходимость выхода VM в VMM для поддержания теневой таблицы страниц. В результате значительно снижается нагрузка на процессоры, уменьшается расход оперативной памяти каждой VM. Улучшение производительности – от 5 до 20%.

Технологии безопасности. В арсенале Intel VT-х есть интересная технология Descriptor-Table Exiting. Суть ее в шифровании таблицы трансляции адресов, что дает возможность VMM защитить гостевую VM от внутренних атак, предотвращая перемещение ключевых структур данных системы. Descriptor-Table Exiting препятствует случайным или злонамеренным обращениям из одной виртуальной машины в области памяти, используемые другой VM.

И «на закуску» еще одна технология из арсенала Intel VT-х – Trusted Execution Technology (TXT). Это аппаратное решение, ориентированное на подтверждение поведения ключевых компонентов внутри сервера при запуске. Система проверяет последовательность в поведении и время запуска конфигураций VMM с записанной ранее «удачной» последовательностью. С помощью этого теста можно быстро оценить, были ли попытки вмешиваться в среду запуска.

Ускорение шифрования. Набор команд для ускорения работы алгоритмов шифрования Intel AES-NI, на первый взгляд, не имеет прямого отношения к виртуализации. В то же время его наличие в виртуализированных средах заметно повышает производительность VM в целом ряде задач, позволяя в разы ускорять процесс шифрования и компрессии данных. Например, при доступе к данным с использованием протокола https, применении средств их шифрования на носителях класса Windows BitLocker, архивировании можно получить прирост быстродействия до 6 раз.

Оперативная память

Большое значение в виртуальной среде имеет аспект работы с оперативной памятью. Требования виртуализированных сред к ней очень близки к тем, что ранее предъявляли наиболее ресурсоемкие задачи – SQL Server, решения ERP-класса, тяжелые системы на Java. Можно выделить три направления, по которым сегодня идет развитие.

Первое и самое важное из них – снижение времени доступа (латентности) к данным в ОЗУ. Виртуальные машины порождают большое количество переключений между задачами, генерируя произвольные выборки данных, а кеша на процессоре всегда «мало». В CPU применяется масса технологий (предварительное чтение, отложенная запись кеша и т. д., ko.com.ua/26478), повышающих вероятность нахождения в них данных. Однако основной прирост производительности подсистемы памяти процессоры и от Intel, и от AMD получили за счет объединения на одном кристалле CPU и контроллера RAM.

Правда, и тут есть тонкости. В каждый канал памяти у обоих вендоров можно установить до трех модулей, и как раз в зависимости от их количества и будет установлена рабочая частота. На платформе Intel – это 1333 МГц, если в канале один или два модуля, и 800 МГц – в случае трех. Для AMD – 1333 и 1033 МГц соответственно.

Второе – потребность в широкой пропускной способности шин «процессор-память» и межпроцессорного взаимодействия, посредством которых идет обращение к модулям памяти, непосредственно подключенным к другим CPU. Intel эту задачу решила в серии Xeon 56xx с помощью трехканального контроллера памяти и быстрой шины Quick Path Interconnect (порядка 25,6 ГБ/с для частоты 3,2 ГГц). AMD в своих новейших серверных процессорах использует четыре канала памяти для каждого CPU и скоростную шину Hyper Transport 3 (порядка 51,6 ГБ/с при 3,2 ГГц).

И третий, во многих случаях ключевой, аспект – способность платформ поддерживать значительные объемы ОЗУ. В виртуализированных средах ее всегда требуется много. Процессоры Intel Xeon 56xx в двухпроцессорных системах способны поддерживать до 18 слотов памяти, а AMD Opteron 61xx – до 24. В штатном режиме, при использовании модулей по 8 ГБ, получаем 144 ГБ для Intel и 192 ГБ – для AMD. Следует заметить, что для платформы Intel существуют проприетарные решения, обеспечивающие поддержку боóльших объемов памяти (к примеру, у Cisco).

Вопрос объема ОЗУ, поддерживаемого платформой, настолько важен в виртуальной среде, что Intel даже выпустила отдельную двухпроцессорную линейку Xeon 65xx, которая, по сути, является урезанной по количеству CPU четырехпроцессорной платформой. Так, Intel Xeon 65xx может обладать ресурсами до 8 ядер, до 16 потоков, до 18 МБ кеша на CPU. Для виртуализации же важно, что каждый CPU работает по четырем каналам с поддержкой до четырех модулей памяти при максимуме в 16 ГБ, что для двухпроцессорной конфигурации дает 32 слота и до 512 ГБ.

Ввод/вывод

Операции ввода/вывода, связанные с дисковой подсистемой, также не остались без внимания. Intel обеспечивает повышение эффективности в виртуализированной среде за счет Virtualization Technology for Directed I/O (VT-d), тогда как AMD предлагает свою технологию ускорения ввода/вывода под названием AMD-Vi. Обе они реализуют виртуализацию на уровне портов чипсета и устройств ввода/вывода, предоставляя возможности непосредственного назначения устройств отдельным гостевым VM. Технологии должны поддерживаться и процессором, и чипсетом.

Виртуализация как приложение-убийца
Ethernet-адаптер на аппаратном уровне выполняет сортировку и доставку пакетов напрямую VM

Наиболее важным компонентом перечисленных технологий является осуществляемый на аппаратном уровне DMA Remapping. При этом VM работает напрямую с реальным устройством, минуя VMM. Выделяя отдельным VM собственные ресурсы ввода/вывода, удается снизить задержки, ускорить перемещение данных и избавиться от дополнительной нагрузки на систему в целом. В том числе за счет этого сокращается объем пересылки служебных данных. Прямое назначение обеспечивает более высокую степень изоляции и защиты VM и значительно повышает производительность гостевых VM.

Из недостатков «привязки» реальных устройств к конкретным VM выделим два: нет возможности использовать их в других VM и нельзя проводить миграцию VM с выделенным устройством.

Аппаратная реализация Interrupt-Remapping позволяет VMM изолировать прерывания в процессорах назначенных данной гостевой VM и перенаправлять прерывания физических I/O- устройств. Таким образом, обеспечивается эффективная миграция прерываний между CPU. Также надо отметить поддержку обоими вендорами стандартов виртуализации PCI-SIG I/O, в том числе аппаратные функции Address Translation Services (ATS) и кеширование DMA-трансляций в конечных PCI-Е-устройствах, что дает улучшение производительности DMA-переадресаций. Поддерживается и технология Queued-Invalidation, которая позволяет VMM отслеживать и нейтрализовать недействительные DMA-трансляции и прерывания. Кроме повышения быстродействия, она позволяет избежать ошибок работы с памятью и повреждения изоляции VM.

Итоговые результаты применения аппаратной акселерации ввода/вывода Intel VT-d и AMD-Vi в виртуализированной серверной среде в численном выражении очень высоки. К примеру, потери при работе с дисковой подсистемой могут быть снижены с 25–35% до 5–15%. В ряде случаев аппаратная акселерация ввода/вывода позволяет свести потери почти к нулю.

Сетевой интерфейс

В области современных сетевых интерфейсов Ethernet для работы в виртуализированной среде на массовом рынке у устройств Intel фактически конкурентов нет. Наработки в области аппаратной акселерации задач виртуальных сред в контроллере Ethernet объединены под общим названием Intel Virtualization Technology for Connectivity (Intel VT-c). Этот набор технологий поддерживает виртуализацию сетевых устройств ввода/вывода на аппаратном уровне, повышая общую пропускную способность. К функциональности VT-c относится управление сетевым трафиком и маршрутизацией VM непосредственно силами контроллера Ethernet.

В Intel VT-c вошли три технологии: Virtual Machine Direct Connect (VMDc), основанная на уже упоминавшемся стандарте PCI-SIG SR-IOV, обеспечивает практически полную пропускную способность и предоставляет специализированные средства для прямой связи VM и аппаратных ресурсов адаптера Ethernet; Virtual Machine Device Queues (VMDq) позволяет увеличить скорость передачи данных сетевого интерфейса и уменьшить нагрузку на VMM, физические CPU; Intel I/O Acceleration Technology (I/OAT) на самом деле является целым набором технологий, каждая из которых вносит свой вклад в повышение производительности.

Intel VMDc является, по сути, «продолжением» описанной ранее Intel VT-d на уровне сетевого адаптера. Основанная на отраслевых стандартах SR-IOV технология VMDc обеспечивает возможность прямого подключения гостевых VM непосредственно к контроллеру и защиту данных на всех таких машинах. Благодаря ей информация может передаваться в обход VMM практически без снижения производительности. VMDc предусматривает прямое назначение физических или виртуальных портов ввода/вывода каждой отдельной VM.

Технология прямого подключения VM к сетевому адаптеру Ethernet лучше всего подходит для приложений, требующих наивысшей пропускной способности для операций ввода/вывода. Она снижает уровни задержек для таких приложений, как СУБД, системы хранения данных, финансовые и т. д. Недостаток ее также очевиден – миграция VM с привязкой к оборудованию с одного хоста на другой затруднена.

Еще одной функцией VMDc является аппаратная поддержка и ускорение миграции виртуальных машин с одного физического хоста на другой.

Intel VMDq оптимизирует производительность сети, снимая нагрузку, связанную с необходимостью сортировки и копирования данных, с виртуального программного коммутатора в гипервизоре (VMM), передавая ее на контроллер Ethernet. Принцип работы VMDq прост. При получении из сети Ethernet-адаптер принимает все пакеты, предназначенные для различных VM, в собственный буфер. Далее на аппаратном уровне (Layer 2), без обращения к VMM и загрузки шин передачи данных/CPU, согласно внутренней таблице с поддержкой десятков VM, выполняет сортировку пакетов в отдельные очереди для каждой VM. Затем самостоятельно отправляет данные в области памяти конкретных виртуальных машин. При передаче пакетов от VM в сеть адаптер Ethernet осуществляет круговой опрос VM на предмет наличия информации для пересылки с учетом заданных приоритетов. Готовые пакеты помещаются в буфер адаптера с меткой приоритета, а затем отправляются в сеть согласно правилам QoS.

Intel VMDq включает и ряд других функций. В «железе» предусмотрена защита от блокировки главной очереди некорректными действиями одной из VM. Аппаратно реализована функция ожидания пакета от VM, что позволяет не задействовать VMM при появлении пакета для передачи (об этом непосредственно узнает сетевой адаптер) и пропускать не требующие внимания VM при круговом опросе на передачу. Также на аппаратном уровне контроллера обеспечен обмен данными (Loopback) между различными VM в рамках одного физического хоста.

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

Особенностью Intel I/OAT является повышение скорости передачи данных внутри вычислительной платформы, благодаря чему уменьшается время реакции приложений. Набор Intel I/OAT включает в себя пять технологий, активно используемых, в том числе двумя предыдущими – VMDc и VMDq.

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

Direct Cache Access (DCA) позволяет совместимым устройствам ввода/вывода, таким как сетевой контроллер Intel, размещать данные непосредственно в кеше CPU, уменьшая промахи и сокращая время отклика приложений.

Extended Message Signaled Interrupts (MSI-X) распределяет прерывания ввода/вывода между различными CPU и вычислительными ядрами. Таким образом, достигается более равномерная загрузка процессоров и ядер, что, в свою очередь, улучшает эффективность использования многоядерных CPU и обеспечивает более высокую общую производительность.

Receive Side Coalescing (RSC) выполняет агрегацию нескольких пакетов TCP/IP в один большой пакет, снижая расходы на обработку каждого пакета в отдельности и ускоряя обработку TCP/IP-трафика.

Low Latency Interrupts подстраивает интервал прерываний в зависимости от чувствительности данных к задержкам, используя такие критерии, как номер порта или размер пакетов, для повышения эффективности их обработки.

Intel I/OAT при работе на многоядерной платформе использует несколько очередей и векторов прерываний, имеющихся на сетевом контроллере, для обеспечения выравнивания нагрузки в процессе передачи данных и обработки прерываний с распределением между очередями и ядрами. Это позволяет достичь существенного снижения нагрузки на CPU, уменьшить задержки, повысить пропускную способность ввода/вывода и общую производительность системы. Как следствие, возрастает пропускная способность сети и упрощается перенос VM.

Обратим внимание, что не все сетевые карты от Intel одинаковы. Набор функций, поддерживаемых каждой из них, необходимо отдельно смотреть в спецификациях. В целом же применение аппаратной акселерации на уровне сетевых карт позволяет снизить потери производительности в виртуализированных средах с интерфейсом Ethernet c 15–40% до 3–7%.

Если говорить о тенденциях, то можно выделить две. Первая – технические специалисты экспериментальным путем уже убедились, что по производительности упрощенные сетевые карты класса Intel 82574L в виртуальной среде существенно отличаются от полноценных серверных Intel 82576EB. Последние, кроме всего прочего, двухпортовые на уровне чипа и отлично поддерживают агрегацию каналов.

Вторая – все возрастающий спрос на самые совершенные сетевые чипы от Intel c поддержкой 10GB Ethernet. Помимо реализации в них наибольшего количества технологий ускорения для виртуальных сред, они при умеренной цене обеспечивают достаточную пропускную способность интерфейса Ethernet в физических хостах со множеством VM. Ведь если разделить полосу 1 Гб/с на 10 VM, то получим всего 100 Мб/c на одну VM, что для многих современных «нагруженных» задач просто неприемлемо.

SSD

Появление массовых SSD создает еще одну «область знания» для специалистов по аппаратным платформам. Фактически это новый компонент серверов со своими «законами», который надо учиться правильно использовать.

Каждый SSD – это, по сути, RAID-контроллер с 8 или 10 каналами (в массовом сегменте), на каждом из которых может быть размещен как минимум один банк флеш-памяти. Для детального понимания методологии получения более высокого быстродействия и повышенной надежности SSD необходимо углубляться в архитектуру и алгоритмы его работы, что выходит далеко за рамки статьи. Укажем лишь ряд нюансов. К примеру, для SSD серии Intel X25-M 160 ГБ в рекламных проспектах указывается производительность при случайной записи на уровне 8,6 IOPs блоками по 4K... при 10%-ном форматировании пространства на диске, а при 100%-ном – заявляется показатель на уровне 2,7 IOPs. Не менее интересны данные и по надежности. Тот же диск Intel X25-M 160 ГБ рассчитан на произвольную запись порядка 8 ГБ каждый день в течение трех лет при 100%-ном форматировании пространства. Задействовав же вместо 160 ГБ только 144 ГБ, можно увеличить ресурс по случайной записи данных на SSD более чем в три раза. При линейной записи (к примеру, log-file) ресурс SSD вообще возрастает на порядок.

Для нас же SSD важны с точки зрения высокой скорости запуска виртуальных машин с таких носителей, что в разы снижает время простоя в случае «зависания» VM либо при необходимости переноса VM с одного физического хоста на другой.

Вторая сторона «полезности» SSD в виртуальной среде – это их реакция на исчерпание лимита на запись. Как только износ ячеек в SSD достигает критического уровня, диск переходит в режим «read only», т. е. все данные на нем могут быть перенесены на другое устройство без потерь.

Гибридные дисковые подсистемы

Как некий промежуточный этап получили распространение так называемые «гибридные дисковые подсистемы». Первой на этом рынке была Adaptec с Max-IQ. Принцип их работы прост: RAID-контроллер использует SSD и в роли «быстрого кеша», копируя на него с HDD ту информацию, что запрашивается чаще всего. Таким образом, основная копия данных хранится на массиве HDD, а не на SSD. Скорость же случайного доступа к наиболее востребованным данным обеспечивается на уровне, достижимом только на SSD.

Естественно, это решение не универсально. Для одних задач такой подход вообще не дает прироста, а для других – производительность увеличивается в разы. Наибольшую эффективность гибридные технологии продемонстрировали на задачах класса «новостной портал» (ko.com.ua/45559).

Выводы

Как уже неоднократно говорилось, при аппаратной поддержке виртуализации гипервизор может освобождаться от выполнения различных ресурсоемких задач, что существенно увеличивает производительность физического хоста в целом и всех работающих на нем VM. Хотелось бы еще раз подчеркнуть, что в виртуализированной среде важно не только оптимизировать некий набор операций, но и обеспечить именно комплексный подход на всех уровнях, включая CPU, ОЗУ, чипсет, устройства ввода/вывода, сетевые контроллеры. Это позволяет в режиме виртуализации за счет синергии нарастить производительность больше, чем за счет одного лишь увеличения быстродействия CPU. Это особенно хорошо заметно на примере серверных платформ Intel, где при умножении вычислительной мощности приблизительно в шесть раз за тот же период производительность платформы в виртуализироанных средах увеличилась более чем в восемь.

Также необходимо предостеречь тех, кто надеется эффективно эксплуатировать серверное аппаратное обеспечение 3–5-летней давности. Несмотря на формальную поддержку виртуализации на уровне CPU, реальное быстродействие устаревшей техники в виртуализированной среде будет далеко не выдающимся. Это обусловлено высокими накладными расходами при операциях ввода/вывода как дисковой подсистемы, так и сетевых интерфейсов. Как показывает практика, два современных сервера + внешний дисковый массив в виртуализированной среде вполне способны заменить пару десятков платформ в возрасте 3–5 лет, обеспечив при этом лучшую производительность, прогнозируемое время восстановления после сбоя (на уровне минут) без ощутимых затрат на создание кластерных решений, существенную экономию ресурсов и почти недостижимое для невиртуализированных сред удобство управления и поддержки ИТ-инфраструктуры.

Производительность при виртуализации

В 2009 г. в тестовой лаборатории Entry с участием Игоря Шаститко («Майкрософт Украина») были проведены нагрузочные тесты с целью изучения влияния виртуализации на суммарную производительность системы. Использовались две конфигурации: установка ОС на «голое железо» и виртуализированная среда под Microsoft Hyper-V. Применялся процессор класса «Intel Core 2 Duo» (на самом деле – Xeon X5450, но суть эксперимента это не меняет), 16 ГБ ОЗУ и два SATA-диска в RAID 0. Целью тестирования был выбор модели эксплуатации оборудования и ПО для одного достаточно нагруженного веб-портала.

Измерялась линейная производительность веб-сервера под управлением Windows Server 2008 Web Edition с установленным Windows Sharepoint Services v3, базой служил SQL Server Express на том же сервере. Тестирование проводилось с использованием утилиты WCAT, скрипт которой в одной транзакции последовательно открывал на портале WSS первую страницу портала группы, общее содержимое (структуру) портала, список документов, календарь, осуществлял поиск по определенному словосочетанию, которое встречалось в пяти записях на портале. Измерялось количество одновременных соединений, генерируемых WCAT, среднее время отправки сервером клиенту первого байта запрошенной страницы, количество обрабатываемых подключений в секунду.

При 1500 соединений в режиме виртуализации время отклика системы на 33% меньше, чем на «голом железе», либо количество одновременно обрабатываемых подключений увеличивается на 33%. Измерение SLA заключалось в тестировании количества одновременных подключений, при которых система выдает данные через 2 с после запроса. Таким образом, в виртуализированной среде удалось на том же оборудовании получить производительность 168% относительно «голого железа».

Количество одновременных подключений, при которых система выдает данные через 2 с после запроса
Intel Core 2 Duo VM 1VP VM 2VP VM 4VP
300 130 250 505
Время отклика
Количество одновременных соединений Intel Core 2 Duo VM 1VP VM 2VP VM 4VP
10 55 138 74 40
100 587 1421 760 431
500 2963 7127 3818 2186
1000 5888 14451 7629 4385
1500 8864 25367 11151 6662
Количество обрабатываемых подключений в секунду
Количество одновременных соединений Intel Core 2 Duo VM 1VP VM 2VP VM 4VP
10 179,15 71,72 131,93 240,22
100 170,14 70,32 131,3 231,4
500 170,03 70,02 131,07 228,57
1000 169,76 68,17 130,98 228,33
1500 169 67,87 134,17 225,43

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

+44
голоса

Напечатать Отправить другу

Читайте также

А как насчет sheduling'а с гарантированным выделением времени / гарантированной макс. задержкой? Скажем, если я малый бизнес с 10 чел и хочу затолкать в виртуальную машину IP PBX типа Asterisk/Trixbox, которой нужно обрабатывать RTP-потоки голоса с задержкой не более 100мс?
Или еще рано для таких запросов? :)

Не рано.
Знаю, что у одного из мелких провайдеров в виртуальной среде аналогичное работает (для себя). На сколько человек - не уточнял.

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT