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

30 Дек 2015

Виртуальные машины «под микроскопом»

Низкоуровневое исследование виртуальных платформ является одним из основных направлений нашей тестовой лаборатории. Очередные опыты показали, что идентификация посредством функций 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. Поля, содержащие идентификационные текстовые строки выделены красным (кликнуть, чтобы получить в хорошем разрешении)

Резюме

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

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