Установка Windows на Xen
Установка Windows на Xen очень сильно отличается от развертывания паравиртуализованных гостей — есть отличия как в процессе установки, так и в последующей настройке . Все моменты я постараюсь подробно объяснить в статье.
Если вам интересна тематика Debian и связанных с ним приложений, рекомендую обратиться к тегу Debian на моем блоге.
Установка Windows на Xen
Как всегда сначала обратимся к теоретической составляющей.
Типы DomU
В основе Xen лежит понятие паравиртуализации 1 . Его суть заключается в том, что ядра ОС непривилегированных доменов (DomU) осведомлены о работе на гипервизоре и оптимизированы для обеспечения лучшей производительности. Вследствие этого им также не нужна дорогостоящая с точки зрения производительности прослойка эмулированных устройств. Такие гостевые ОС называются паравиртуализованными (или PV-guests в английской терминологии).
Все это, разумеется, относится лишь к свободно распространяемым операционным системам. ОС с закрытым кодом, такие как Windows, не могут похвастаться «пропатченным» под Xen ядром, в этой связи им необходима эмуляция оборудования. Такие ОС называются полностью виртуализованными гостями (или HVM-guests — Hardware-assisted virtualizion).
В плане производительности PV и HVM — это две крайности.
Чтобы как-то улучшить показатели гостей HVM, были разработаны специальные драйверы, называемые PVHVM-drivers 2 . Подобные драйверы для PV-гостей уже встроены в ядро, а потому в их установке нет никакой необходимости.
Сводную таблицу с типами гостей вы можете найти в официальной документации:
В любом случае рассмотренных выше понятий для базового понимания виртуализации на основе Xen вполне достаточно, а потому движемся дальше.
Источник
Виртуализация рабочих станций с использованием платформы NVIDIA GRID
Индустрия проектирования, дизайна и визуализации интенсивно выходит в облака. Сейчас ни кого не удивить словосочетанием «посчитаем и сохраним в облаке», а для многих студий это может дать большие возможности в экономии средств и развертывании IT-инфраструктуры и привлечения работников с внешней стороны (аутсорсинг).
Одним из серьезных препятствий применения виртуализации в дизайне предыдущих лет являлся вывод в облака высокопроизводительных рабочих станций используемых для проектирования в пакетах CAD и DCC. В первую очередь это было обусловлено отсутствием соответствующего оборудования, особенно графических процессоров (GPU) которые так необходимы в работе с ресурсоемкими CAD и DCC приложениями. В 2012 году компания NVIDIA выпустила первые продукты линейки GRID ориентированные на применение в виртуальных средах и предназначенные для виртуализации рабочих станций. К NVIDIA подключились такие известные компании разработчики платформ и инструментов виртуализации, как Citrix, VMware, Microsoft и за три года представили рынку комплексные решения для виртуализации с поддержкой GPU и Виртуализированных GPU (vGPU). Затем к новому направлению стали присоединяться разработчики прикладных приложений, такие как Autodesk, Adobe и другие. Стали разрабатываться новые модели лицензирования по подписке и выполняться оптимизация приложений и лицензий под применение в виртуальных средах.
В представленной вашему вниманию статье рассматриваются основные принципы виртуальных рабочих станций и технологии виртуализации, какие возможности получают пользователи при использовании виртуализации с поддержкой полноценных вычислений на GPU. Как ведут себя профессиональные графические приложения, и какие возможности графических подсистем поддерживаются при работе на виртуальной рабочей станции.
Материал подготовлен при поддержке наших старых друзей, — компании FORSITE, любезно предоставившей тестовую платформу с несколькими виртуальными машинами в различных конфигурациях, а также всю необходимую информацию по виртуализации рабочих станций с поддержкой полноценного ускорения графики.
Графические ускорители NVIDIA GRID K1 и K2
Основная задача графических ускорителей NVIDIA GRID заключается в предоставлении высокой производительности графики в работе с ресурсоемкими приложениями требовательными к графическим вычислениям напрямую в виртуальной среде. Компания NVIDIA предлагает две модели графических процессоров линейки GRID, – K1 и K2. В ряде случаев могут быть использованы графические ускорители линейки NVIDIA Quadro, но решения Quadro не предназначены для установки в сервера и не позволяют обеспечить необходимую для задач виртуализации плотность, а также существует необходимость в большом количестве таких ускорителей.
Рассмотрим основные характеристики решений K1 и K2. Так как графические ускорители линейки GRID должны быть установлены в сервера их корпус, и система охлаждения значительно оптимизированы, обеспечивая хорошее охлаждение графическим чипам и памяти при интенсивной нагрузке. В моделях K1 и K2 лежат графические чипы на основе архитектуры NVIDIA Kepler. Чип GK107 используется в модели K1, а чип GK104 в модели K2. Модель K1 ориентирована на применение в виртуализации рабочих столов и приложений, не требующих высокой производительности от графической подсистемы, но в то же время, когда необходимо развернуть виртуальные машины для множества пользователей, в данной модели используется 4Гб графической памяти на каждый из четырех GPU. В то же время модель K2 ориентирована на более требовательные к графическим вычислениям приложения, такие как пакеты DCC. В данной модели используются более производительные GPU и быстрая память, для каждого из них также выделено по 4Гб графической памяти стандарта GDDR5.
В таблице 1.1 приведены основные технические характеристики GPU NVIDIA GRID K1 и K2.
NVIDIA GRID K1 | NVIDIA GRID K2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Чип | 4 × GK107 | 2 × GK104 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота ядра | 850 MHz | 745 MHz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота памяти | 891 MHz | 2.5 GHz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ядра NVIDIA CUDA | 768 (192 на GPU) | 3072 (1536 на GPU) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Объем памяти | 16 GB (4 GB на GPU) | 8 GB (4 GB на GPU) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Шина памяти | 128-bit DDR3 | 256-bit GDDR5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Конфигурация памяти | 32 блока по 256M × 16 DDR3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Коннекторы дисплеев | Нет | Нет | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Питание | 1x 6-pin PCI Express коннектор | 1x 8-pin PCI Express power connector 1 1x 6-pin PCI Express power connector | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Общая мощность платы | 130 W | 225 W | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Rank | NVIDIA | AMD |
---|---|---|
Best | NVIDIA Grid 1. Grid K1 2. Grid K2 | AMD FirePro series 1. AMD FirePro S10000 2. AMD FirePro S9000 3. AMD FirePro S7000 |
Better | NVIDIA Quadro 1. Quadro K6000 2. Quadro K5000 | AMD FirePro series 1. AMD FirePro V9800P 2. ATI FirePro V9800 |
Good | AMD FirePro series 1. ATI FirePro V8800 2. ATI FirePro V7800 3. AMD FirePro V7800P 4. ATI FirePro V5800 |
На просторах всемирной сети есть немало руководств по развертыванию RemoteFX на Windows Server. Однако о качественном применении почти ни в одной из этих статей речи не идёт, а в основном статья имеет такой законченный смысл «Поднял, поковырялся, вроде работает, вроде даже шевелится побыстрее, вроде даже нагрузку на центральный процессор снизили. Для чего делал? Черт его знает».
Так вот, я хочу рассказать вам о нашем опыте поиска решения задачи по расширению возможностей виртуальных машин в обработке 3D-графики. Перед нами стояла довольно чётко обрисованная задача. Нам нужно было сделать так, чтобы пользователи удаленных рабочих столов терминального сервера, развернутого на платформе Windows Server 2012 R2, смогли как минимум качественно просматривать различные 3D чертежи и сборки в специализированных viewer-ах, а как максимум и сами могли нет-нет, да и запустить различные CAD программы.
Первоначальной идеей стало развертывание RemoteFX на Windows Server 2012R2. Сказано – сделано. В наличии имелась серверная платформа DELL PowerEdge R720, оснащенный двумя процессорами Intel Xeon CPU E5-2670 v2 @ 2.50GHz поддерживающими SLAT, а также вычислительный графический модуль NVIDIA GRID K2. На сервер была установлена операционная система Windows Server 2012R2 standard с графической оболочкой, была развернута служба Hyper-V и настроен RemoteFX. На самом деле, тогда мы думали, что это окончательное решение и технология RemoteFX нас полностью устроит. Однако, в дальнейшем мы узнали, что Microsoft накладывает на технологию и существенные программные требования, что в качестве гостевой операционной системы, способной использовать трехмерный графический адаптер RemoteFX, могут выступать только операционные системы Windows 7 и 8 и только в редакциях Ultimate и Enterprise. Не совсем справедливо конечно, учитывая то, что сам гипервизор по заявлениям своих разработчиков поддерживает уйму других операционных систем.
Стало понятно, что наша цель использовать графический адаптер в виртуальном терминальном сервере, который развернут на Windows Server 2012R2, останется неосуществимой. Ладно, работаем с тем, что есть. Так что-же у нас есть? Совсем немного. Всего-то возможность установки в качестве гостевой операционной системы Windows 7-8 Ultimate-Enterprise с возможностью подключения к ним только одного пользователя. И даже распрекрасная библиотека RDP Wrapper не в состоянии решить этой проблемы. К тому-же, как нам стало известно по результатам производительности, трехмерный графический адаптер RemoteFX практически не умеет работать с таким API, как OpenGL, который используют большинство CAD программ, а вместо этого поддерживает полностью только проприетарную разработку Microsoft только для Windows – Direct3D. Об этом совсем скромно-скромно заявляют лишь две строчки в описании технологии RemoteFX на сайте Microsoft:
«Support in Windows Server 2012 R2 is provided for DX 11.0, DirectCompute, and C++ AMP. Most of the latest graphics cards will support OpenGL 4.0 and OpenCL 1.1 or later, but these APIs are currently unsupported by RemoteFX in Windows Server 2012 R2.»
Что это, проприетарная разработка для поддержания возможности развертывания терминального сервера на основе виртуальных машин, предложенной в последнем поколении Windows Server? Сложно ответить на этот вопрос. Однако, ясно только одно, технология RemoteFX неприменима для решения поставленной перед нами задачи, особенно ввиду чрезмерно завышенных аппаратных и программных требований к платформе, серверу и гостевым операционным системам. Все эти требования мы, конечно, готовы удовлетворить, но получить в результате готовое решение с крайне сомнительным функционалом – это расточительство.
Именно поэтому поиск не прекратился и, к своему стыду, мы первый раз обратили внимание на то, что пишет сама NVIDIA, о разработанном им графическом вычислительном модуле и его применении. Подробнее можно прочесть здесь, а если коротко, то NVIDIA создала технологию NVIDIA GRID vGPU, благодаря которой графические команды каждой виртуальной машины передаются напрямую в GPU, без трансляции гипервизором. Один физический графический модуль, благодаря драйверу, имеет несколько профилей виртуального GPU c различным количеством ядер и дискретной графической памяти. Вот таблица доступных виртуальных профилей для графических плат NVIDIA GRID:
Графическая плата NVIDIA GRID | Профиль виртуального GPU | Графическая память | Максимальное число дисплеев на пользователя | Максимальное разрешение дисплея | Максимальное число пользователей на графическую плату |
---|---|---|---|---|---|
GRID K2 | K280Q K260Q K240Q K220Q | 4ГБ 2ГБ 1ГБ 512МБ | 4 4 2 2 | 2560×1600 2560×1600 2560×1600 2560×1600 | 2 4 8 16 |
GRID K1 | K180Q K160Q K140Q K120Q | 4ГБ 2ГБ 1ГБ 512МБ | 4 2 2 2 | 2560×1600 2560×1600 2560×1600 2560×1600 | 4 8 16 32 |
Всё предельно просто и прекрасно. Драйвер имеет возможность выделять из аппаратной платформы платы виртуальные профили, отличающиеся друг от друга количеством графических ядер и памяти, которые могут стать аналогом физической видеокарты в виртуальной машине. В то время, как технология RemoteFX – всего лишь программная прослойка между виртуальной машиной и реальной графической платой, которая выборочно передает на обработку ту или иную графику. Зачем тогда Microsoft рекомендует к использованию графическую плату, чей функционал в полной мере не поддерживается возможностями их гипервизора? Зачем рекомендовать эту плату к использованию, если гипервизор, написанный ими, не идет по пути развития концепции, предложенной производителями графической платы? Не понятно. Однако, надо отметить, что в описании самой технологии NVIDIA GRID VGPU на сайте NVIDIA, не говорится ни слова (и слава богу) о гипервизоре Microsoft, а вместо этого упоминаются такие разработчики, как VMware c vSphere и Citrix со своим XenServer.
Было решено попробовать в качестве гипервизора XenServer 6.5 от Citrix, чей функционал в редакции Enterprise как раз поддерживает распределение виртуальных графических профилей между виртуальными машинами. Хоть это и не имеет никакого отношения к статье, всё же отмечу, что установка и настройка сервера простая и интуитивно понятная до безобразия. Сервер был установлен и активирован триальной лицензией на 90 дней, которую можно получить, с учетом количества сокетов хоста, за 5 минут, зарегистрировавшись на сайте разработчиков. После активации функция распределения графических профилей становится доступной в XenCenter. К сожалению, для загрузки пока доступны драйвера исключительно для операционных систем Windows, однако радует уже то, что графический профиль имеет возможность устанавливаться не только на версии Windows 7-8 Ultimate-Enterprise, но и на другие операционные системы Microsoft такие как Windows 7-8 других редакций и Windows Server 2008-2012, из коробки поддерживает OpenGL 4.4 и DirectX 11 и OpenCL, а также не имеет ограничений на количество одновременных подключений средствами удаленного рабочего стола к виртуальной машине.
Чтобы оценить качество работы виртуальных графических профилей, в качестве гостевой была установлена операционная система Windows 8.1_x64_Enterprise, в настройках виртуальной машины поочередно добавлялись первые три профиля (K280Q, K260Q, K240Q), которые считаются максимально производительными в порядке убывания, и с каждым графическим профилем было запущено по 4 бенчмарка, тестирующих производительность 3D графики с использованием API OpenGL и Direct3D. Чтобы сравнение не казалось чрезмерно-абстрактным, было принято решение сравнить результаты бенчмарков, запущенных на ВМ, с результатами этих же бенчмарков запущенных на физической машине, имеющей схожие характеристики. Коротко о технических характеристиках виртуальной и физической машины можно узнать из таблицы представленной ниже.
ОС | ЦП | ОЗУ | Видеоадаптер | |
---|---|---|---|---|
ФМ | Windows 8.1 x64 Enterprise | Inter Core(TM) CPU i5-4670 @ 3.40GHz | 12ГБ | Nvidia GeForce GTX 650 |
ВМ | Windows 8.1 x64 Enterprise | Inter Xeon CPU E5-2670 v2 @ 2.50GHz | 12ГБ | Nvidia GRID VGPU K280Q || K260Q || K240Q. |
В таблицах с результатами работы бенчмарков я буду указывать только название графического адаптера.
Итак, первым бенчмарком будет SPECviewperf 12.0.2, который многими специалистами почитается как эталонный бенчмарк для тестирования графики различных CAD программ. Кому интересно, подробнее тут. Результаты в таблице ниже. Разрешение окна везде 1900×1060 (по умолчанию в бенчмарке).
Тест | GTX 650 | K280Q | K260Q | K240Q |
---|---|---|---|---|
Catia-04 | 9.06 | 17.16 | 31.83 | 12.14 |
Creo-01 | 9.21 | 17.85 | 34.41 | 17.72 |
Energy-01 | 0.43 | 0.72 | 0.74 | 0.18 |
Maya-04 | 22.45 | 6.14 | 13.99 | 2.85 |
Medical-01 | 6.18 | 15.17 | 18.76 | 15.38 |
Showcase-01 | 14.99 | 11.14 | 32.80 | 10.84 |
Snx-02 | 2.07 | 18.31 | 34.80 | 18.41 |
SolidWorks-03 | 20.56 | 19.02 | 38.14 | 20.79 |
Все результаты выкладываю как есть. Немного смутило меня, что профиль K260Q по идее должен быть «слабее», чем K280Q, однако показал более выдающиеся результаты. Перепроверил, запустив тест еще раз на обоих профилях и пришел к выводу, что показания стабильные (не рандомные) и хоть и отличаются от первоначальных, но в разумных пределах 0.2-0.4.
Следующим бенчмарком, а вернее набором различных бенчмарков для тестирования графики OpenGL стал GpuTest с сайта geeks3d.com, подробнее можно узнать здесь. Результаты в таблице ниже в формате (points/FPS). Все тесты произведены в полноэкранном режиме 1920×1080.
Тест | GTX 650 (points/FPS) | K280Q (points/FPS) | K260Q (points/FPS) | K240Q (points/FPS) |
---|---|---|---|---|
FurMark (OpenGL 2.1/3.0) | 1214/20 | 2068/34 | 1790/29 | 1619/26 |
GiMark (OpenGL 3.3) | 960/15 | 1630/27 | 1578/26 | 1604/26 |
PixMark Julia FP32 (OpenGL 2.1/3.0) | 6724/111 | 2231/37 | 3874/64 | 3364/56 |
PixMark Julia FP64 (OpenGL 4.0) | 490/8 | 1046/17 | 1216/20 | 1082/18 |
Plot3D (OpenGL 2.1/3.0) | 39817/664 | 2289/38 | 2299/38 | 2296/38 |
TessMark x16 (OpenGL 4.0) | 13458/224 | 1545/25 | 1329/22 | 1542/25 |
TessMark x64 (OpenGL 4.0) | 3039/50 | 1511/25 | 1419/23 | 1535/25 |
Triangle (OpenGL 2.1/3.0) | 145268/2421 | 3748/62 | 3871/64 | 3757/62 |
Следующим бенчмарком стал RedSDK turbine benchmark от компании REDWAY3D. Подробнее тут. Результаты в таблице ниже. Все тесты произведены в полноэкранном режиме 1920×1080.
Тест | GTX 650 | K280Q | K260Q | K240Q |
---|---|---|---|---|
Real-time viewport | 1623 | 1018 | 368 | 400 |
High quality real-time | 1800 | 1576 | 355 | 366 |
Dynamic ambient occlusion | 1311 | 2459 | 2378 | 2418 |
Hybrid ray-tracing | 1114 | 414 | 413 | 399 |
Total score | 1437 | 1131 | 599 | 614 |
Последним бенчмарком стала бесплатная версия Heaven Benchmark 4.0 от разработчиков Unigine. Подробнее тут. Выбор на него пал в том числе потому, что он может протестировать графику Direct3D. Все тесты произведены в окне разрешением 1280×720 по причине того, что бенчмарк не захотел запускаться в полноэкранном режиме на виртуальных машинах по неизвестным мне причинам, выдавая ошибку. Результаты в таблицах ниже.
OpenGL | GTX 650 | K280Q | K260Q | K240Q |
---|---|---|---|---|
FPS | 44.9 | 56.8 | 54.0 | 56.3 |
Score | 1131 | 1432 | 1361 | 1418 |
Min FPS | 11.2 | 13.2 | 8.8 | 11.8 |
Max FPS | 83.7 | 66.1 | 66.0 | 66.0 |
Direct3D 11 | GTX 650 | K280Q | K260Q | K240Q |
---|---|---|---|---|
FPS | 46.9 | 69.4 | 34.2 | 57.4 |
Score | 1183 | 1747 | 862 | 1446 |
Min FPS | 10.7 | 9.2 | 6.9 | 9.9 |
Max FPS | 88.1 | 137.5 | 93.8 | 67.5 |
Никаких выводов из произведенных мною тестов делать не буду, лучше оставлю это для общественности. Если честно, то результаты тестов мне не до конца понятны и если читающему есть чем качественно прокомментировать их, то буду только рад.
Подводя итоги скажу, что все используемые в нашей компании CAD программы и иной софт успешно устанавливаются и запускаются на виртуальных машинах. Осталось дать поработать с удаленным рабочим столом специалисту, использующему эти программы и пусть он вынесет окончательный вердикт о возможности использования этого решения. Также хочу подчеркнуть, что писал эту статью вовсе не от безделья, а именно потому что, когда сам искал решение поставленной передо отделом ИТ задачи, не увидел подобных статей, полностью раскрывающих различия разных технологий проброса возможностей графической платы в виртуальную машину, не увидел статей, в которых описано качественное применение данных технологий.
Надеюсь, опыт нашего отдела ИТ кому-нибудь пригодится. Благодарю за внимание.
Источник
➤ Adblockdetector