Заметки об экосистеме виртуальной среды

Низкоуровневое исследование виртуальных платформ является одним из основных направлений нашей тес­то­вой ла­бо­ра­то­рии. Очередные опыты показали, что идентификация посредством функций CPUID, эму­ли­ру­е­мых ги­пер­ви­зо­ра­ми, далеко не единственная возможность получить информацию. Ряд системных объ­ек­тов, обес­пе­чи­ва­ю­щих вза­и­мо­дей­ст­вие firmware виртуальной машины и ОС (например, таблицы ACPI), содержат иден­ти­фи­ка­ци­он­ные тек­с­то­вые стро­ки. Что происходит с этими объектами при включении вир­ту­а­ли­за­ции? Как со­от­н­­осит­ся фун­к­ци­о­наль­ность вир­ту­аль­ной и фи­зи­че­ской платформ? Пред­став­ля­ем не­боль­шую серию опытов в среде Oracle Virtual Box, про­ве­ден­ных с помощью собственной ин­фор­ма­ци­он­но-ди­аг­но­с­ти­­че­­ской утилиты. Продукт находится на ран­ней ста­дии разработки, вместе с тем уже спо­собен ре­шить поставленную задачу.

Хост-платформа

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

Системная информация для ноутбука ASUS N750JK. Операционная система Windows 8.1. Разумеется, 64 битная.
Рис 1. Системная информация для ноутбука ASUS N750JK. Операционная система Windows 8.1, разумеется, 64 битная (кликнуть, чтобы получить в хорошем разрешении)

Конфигурация достаточно типичная для ноутбука на основе процессора Haswell. 4 ядра в сочетании с технологией Hyper-Threading обеспечивают 8 логических процессоров. Мультипроцессорная топология декларируется таблицей MADT (Multiple APIC Description Table), которая также содержит метки, характерные для низ­ко­у­ров­не­во­го прог­рам­мно­го обес­пе­че­ния American Megatrends. Таблица SRAT (System Resource Affinity Table) отсутствует, это не удивительно, так как ноутбук не является NUMA-системой. Отдадим должное регулярности подходов Microsoft NUMA API: ноутбук, не поддерживающий NUMA декларирован как система с одним доменом: NUMA Nodes = 1. Попутно заметим, что сло­во­со­че­та­ние «ноутбук на Xeon» анекдотом быть уже перестало.

Windows 7 x64 на виртуальной машине

Системная информация в среде ОС Windows 7 x64, запущенной на виртуальной машине Oracle VMBox
Рис 2. Системная информация в среде ОС Windows 7 x64, запущенной на виртуальной машине Oracle VMBox (кликнуть, чтобы получить в хорошем разрешении)

Обратим внимание на строки «VBOX» и «VBOXAPIC», идентифицирующие производителя оборудования и таблицу ACPI. В соответствии с настройками виртуальной машины, в распоряжении ОС находится только один логический процессор и 4 гигабайта оперативной памяти. Одна из векторных технологий FMA-256 (Fused Multiply and Add), по­зво­ля­ю­щая выполнить операцию умножения и сложения одной инструкцией, «потерялась» в ходе виртуализации. Эта функция удобна, например, при вычислении скалярного про­из­ве­де­ния векторов (Dot product). Заметим, что в на­ст­рой­ках Oracle Virtual Box не предусмотрено опции для явного управления доступностью FMA.

Windows XP x64 на виртуальной машине

Системная информация в среде ОС Windows XP x64, запущенной на виртуальной машине Oracle VMBox
Рис 3. Системная информация в среде ОС Windows XP x64, запущенной на виртуальной машине Oracle VMBox (кликнуть, чтобы получить в хорошем разрешении)

По сравнению с Windows 7 мы лишились 256-битной векторной технологии AVX (Advanced Vector Extension), что объ­яс­ни­мо ограничениями, присущими установленной ОС.  Напомним, для поддержки технологии AVX нуж­на фун­к­ци­о­наль­ность не только центрального процессора, но и операционной системы, так как контекст процессора (тре­бу­ю­щий сохранения и восстановления при переключении задач в многозадачной ОС), был расширен при из­ме­не­нии раз­ряд­но­с­ти векторных регистров от 128 бит (XMM) до 256 бит (YMM).

Низкоуровневые подробности

Текстовые строки OEM ID, OEM Table ID, о которых сказано выше, являются полями системной таблицы MADT (Multiple APIC Description Table), посредством которой firmware платформы (физической или виртуальной) пе­ре­да­ет опе­ра­ци­он­ной системе информацию о мультипроцессорной топологии.

Описание формата таблицы MADT в документе Advanced Configuration and Power Interface Specification. Revision 5.1. Поля, содержащие идентификационные текстовые строки выделены красным
Рис.4 Описание формата таблицы MADT в документе Advanced Configuration and Power Interface Specification. Revision 5.1. Поля, содержащие идентификационные текстовые строки выделены красным (кликнуть, чтобы получить в хорошем разрешении)

Резюме

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

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