Объемы данных, накапливаемых в мире, растут, поэтому появляются все новые способы их обработки. Один из способов повышения скорости вычислений – совместное использование центрального (CPU) и графического процессора (GPU). Вычисления с GPU-ускорением были придуманы еще в 2007 году компанией Nvidia, но теперь технология вышла на новый уровень и применяется в дата-центрах крупнейших научных лабораторий и предприятий.
Мы уже затрагивали тему виртуализации в своем блоге, когда говорили о том, как и кем используется виртуальная инфраструктура. Сегодня нам бы хотелось рассказать вам, как работают виртуальные графические процессоры и какие GPU-технологии существуют на рынке.
Вычисления на GPU используются не только в компьютерных играх и при работе с видеоконтентом. Например, NASA, по заявлению одного из ученых-метеорологов, использует GPU в моделях GEOS-5 для увеличения эффективности численного моделирования атмосферных явлений. Это позволяет повысить доступность системы для большего числа людей, гарантируя разрешение 100–200 км/пиксель.
Вычисления с GPU-ускорением применяются и в бизнес-аналитике. Так, по словам старшего научного сотрудника HP Labs Рена Ву (Ren Wu), GPU позволили увеличить производительность используемых аналитических систем в 5–20 раз.
Сравнение центрального и графического процессоров
Архитектуры CPU и GPU изначально «заточены» под решение разных задач. Центральный процессор решает задачи общего назначения: исполнение набора последовательных инструкций, управление периферийными устройствами и так далее, поэтому обычно он содержит от 2 до 18 ядер, имеющих сложную структуру.
GPU же изначально проектировался для работы с графикой, потому состоит из большего числа энергоэффективных ядер, способных обрабатывать до нескольких тысяч потоков одновременно. При этом на GPU выполняется лишь часть самых ресурсоемких вычислений, а остальное отдается CPU.
/ фото Mmanss CC
Использование подобного рода вычислений актуально в научной сфере, поэтому для выполнения объемных научных расчетов создаются суперкомпьютеры, «начиненные» GPU. Однако несмотря на все преимущества подобного рода вычислений, закупка физического оборудования выливается в серьезные денежные траты. Более того, «железо» имеет тенденцию к устареванию, потому его приходится регулярно обновлять.
Эти проблемы призвана решить технология виртуальных графических процессоров (vGPU), представленная Nvidia, которая дает пользователям возможность удаленно запускать графикоемкие приложения. Здесь стоит отметить, что до появления vGPU применялись другие методы ускорения обработки графики:
Технология же vGPU вобрала в себя лучшее от этих двух подходов. Как и в случае vSGA, в среде vGPU предполагается совместное использование GPU и RAM несколькими виртуальными рабочими столами, но при этом каждая ВМ использует драйверы Nvidia передает команды напрямую к GPU, как в случае с vDGA.
Такой решение, как показало тестирование, проведенное сотрудниками компании VMware, оказалось достаточно состоятельным. В своей работе они описали результаты тестов приложений с использованием продуктов VMware: Workstation 6.5 и Fusion 2.0. Им удалось установить, что производительность Half-Life 2: Episode 2 и Civilization 4 при использовании виртуальных GPU была близка к фактической (как если бы игры запускали на физической машине).
Но технология vGPU находит применение в самых разных сферах: архитекторы и инженеры используют её в системах автоматизированного проектирования (например в Autodesk BIM), а дизайнеры работают с цифровым фото- и видеоконтентом (например в Adobe Photoshop). Она также применяется работниками из сферы здравоохранения, которые пользуются системами передачи и архивации медицинских изображений и документов обследованных пациентов (PACS), такими как GE Centricity EMR.
Стоит отметить, что до недавних пор невозможно было организовать доступ множества пользователей к одному GPU. Если 32 человека хотели обратиться к чертежам в AutoCAD со своих ВМ, то приходилось приобретать 8 дорогих видеокарт с 4 GPU. Эту проблему решила технология Nvidia GRID. Её суть заключается в совместном использовании vGPU несколькими виртуальными десктопами, к которым предоставляется прямой доступ с помощью драйверов Nvidia.
Фактически последняя версия Nvidia GRID 2.0 позволяет перенести всю работу в виртуальное пространство. Обновленная технология поддерживает до 128 пользователей на сервере и значительно увеличивает производительность приложений. Также GRID 2.0 позволяет запускать виртуальные десктопы на блейд-серверах и поддерживает не только ОС Windows, но и Linux.
/ фото ChrisDag CC
Компания VMware ввела функцию виртуальных GPU в обновлении своей платформы виртуализации vSphere 6.0. Технология vGPU от Nvidia при использовании с продуктами VMware подразумевает использование в качестве платформы VMware vSphere 6, а в качестве средства управления виртуальными ПК – VMware Horizon 6.
vGPU поддерживается для графических адаптеров Nvidia GRID K1 и K2, для каждого из которых определены 4 профиля использования ресурсов видеокарты. Вот таблица их вариантов:
В данной таблице приведены три типа пользователей:
В целом для настройки vGPU с VMware vSphere 6 необходимы следующие компоненты:
Сперва нам потребуется настроить на серверах BIOS, причем для каждого вендора будут свои параметры. Вот, например, конфигурация для Cisco:
Далее, нужно развернуть на хостах компонент Nvidia vGPU Manager, который создает связь между графическими процессорами видеокарты и виртуальной машиной. Устанавливается он как обычный VIB-пакет.
После того как Nvidia vGPU Manager настроен на хост-серверах ESXi, нам нужно подготовить виртуальные машины. Это делается через vSphere Web Client, где выбираются аппаратные характеристики ВМ в зависимости от типа рабочей нагрузки.
Затем в настройках ВМ нужно добавить Shared PCI Device, а также выбрать тип Nvidia GRID vGPU и профиль в соответствии с приведенной выше таблицей. После этого можно устанавливать гостевую ОС (Windows 7 и более поздние версии).
Теперь остается установить драйвер Nvidia GRID и настроить пул виртуальных ПК в VMware Horizon View: просто указываем протокол PCoIP и тип 3D-рендера Nvidia GRID VGPU. На этом все. Виртуальные машины готовы к работе с vGPU.
P.S. Интересные материалы из нашего блога по теме виртуализации:
Мы уже затрагивали тему виртуализации в своем блоге, когда говорили о том, как и кем используется виртуальная инфраструктура. Сегодня нам бы хотелось рассказать вам, как работают виртуальные графические процессоры и какие GPU-технологии существуют на рынке.
Вычисления на GPU используются не только в компьютерных играх и при работе с видеоконтентом. Например, NASA, по заявлению одного из ученых-метеорологов, использует GPU в моделях GEOS-5 для увеличения эффективности численного моделирования атмосферных явлений. Это позволяет повысить доступность системы для большего числа людей, гарантируя разрешение 100–200 км/пиксель.
Вычисления с GPU-ускорением применяются и в бизнес-аналитике. Так, по словам старшего научного сотрудника HP Labs Рена Ву (Ren Wu), GPU позволили увеличить производительность используемых аналитических систем в 5–20 раз.
Сравнение центрального и графического процессоров
Архитектуры CPU и GPU изначально «заточены» под решение разных задач. Центральный процессор решает задачи общего назначения: исполнение набора последовательных инструкций, управление периферийными устройствами и так далее, поэтому обычно он содержит от 2 до 18 ядер, имеющих сложную структуру.
GPU же изначально проектировался для работы с графикой, потому состоит из большего числа энергоэффективных ядер, способных обрабатывать до нескольких тысяч потоков одновременно. При этом на GPU выполняется лишь часть самых ресурсоемких вычислений, а остальное отдается CPU.
/ фото Mmanss CC
Использование подобного рода вычислений актуально в научной сфере, поэтому для выполнения объемных научных расчетов создаются суперкомпьютеры, «начиненные» GPU. Однако несмотря на все преимущества подобного рода вычислений, закупка физического оборудования выливается в серьезные денежные траты. Более того, «железо» имеет тенденцию к устареванию, потому его приходится регулярно обновлять.
Технология vGPU
Эти проблемы призвана решить технология виртуальных графических процессоров (vGPU), представленная Nvidia, которая дает пользователям возможность удаленно запускать графикоемкие приложения. Здесь стоит отметить, что до появления vGPU применялись другие методы ускорения обработки графики:
- Virtual Shared Graphics Acceleration (vSGA) – предполагает совместное использование разными виртуальными рабочими столами физических GPU.
- Virtual Dedicated Graphics Acceleration (vDGA) – выделение физического GPU на виртуальной машине за счет проброса (pass-through) устройства, однако в этом случае ВМ оказывалась привязана к хосту, что выливалось в проблему, связанную с ограничением числа GPU, устанавливаемых на хост.
Технология же vGPU вобрала в себя лучшее от этих двух подходов. Как и в случае vSGA, в среде vGPU предполагается совместное использование GPU и RAM несколькими виртуальными рабочими столами, но при этом каждая ВМ использует драйверы Nvidia передает команды напрямую к GPU, как в случае с vDGA.
Такой решение, как показало тестирование, проведенное сотрудниками компании VMware, оказалось достаточно состоятельным. В своей работе они описали результаты тестов приложений с использованием продуктов VMware: Workstation 6.5 и Fusion 2.0. Им удалось установить, что производительность Half-Life 2: Episode 2 и Civilization 4 при использовании виртуальных GPU была близка к фактической (как если бы игры запускали на физической машине).
Но технология vGPU находит применение в самых разных сферах: архитекторы и инженеры используют её в системах автоматизированного проектирования (например в Autodesk BIM), а дизайнеры работают с цифровым фото- и видеоконтентом (например в Adobe Photoshop). Она также применяется работниками из сферы здравоохранения, которые пользуются системами передачи и архивации медицинских изображений и документов обследованных пациентов (PACS), такими как GE Centricity EMR.
Стоит отметить, что до недавних пор невозможно было организовать доступ множества пользователей к одному GPU. Если 32 человека хотели обратиться к чертежам в AutoCAD со своих ВМ, то приходилось приобретать 8 дорогих видеокарт с 4 GPU. Эту проблему решила технология Nvidia GRID. Её суть заключается в совместном использовании vGPU несколькими виртуальными десктопами, к которым предоставляется прямой доступ с помощью драйверов Nvidia.
Фактически последняя версия Nvidia GRID 2.0 позволяет перенести всю работу в виртуальное пространство. Обновленная технология поддерживает до 128 пользователей на сервере и значительно увеличивает производительность приложений. Также GRID 2.0 позволяет запускать виртуальные десктопы на блейд-серверах и поддерживает не только ОС Windows, но и Linux.
Настройка режима vGPU для карт Nvidia в VMware vSphere 6
/ фото ChrisDag CC
Компания VMware ввела функцию виртуальных GPU в обновлении своей платформы виртуализации vSphere 6.0. Технология vGPU от Nvidia при использовании с продуктами VMware подразумевает использование в качестве платформы VMware vSphere 6, а в качестве средства управления виртуальными ПК – VMware Horizon 6.
vGPU поддерживается для графических адаптеров Nvidia GRID K1 и K2, для каждого из которых определены 4 профиля использования ресурсов видеокарты. Вот таблица их вариантов:
В данной таблице приведены три типа пользователей:
- Дизайнер – человек, который использует «жадные» до графических ресурсов приложения (сюда относятся и пользователи CAD-приложений).
- Продвинутый пользователь – человек, использующий подобные приложения время от времени.
- Информационный работник – пользователь, слабо использующий ресурсы видеокарты.
В целом для настройки vGPU с VMware vSphere 6 необходимы следующие компоненты:
- VMware vCenter 6.0,
- VMware ESXi 6.0,
- VMware Horizon View 6.1,
- Nvidia GRID vGPU Manager.
Сперва нам потребуется настроить на серверах BIOS, причем для каждого вендора будут свои параметры. Вот, например, конфигурация для Cisco:
- CPU Performance: установить Enterprise или High Throughput.
- Energy Performance: выбрать пункт Performance.
- PCI Configuration: выставить MMCFG BASE в 2 GB и отключить Memory Mapped I/O above 4GB.
- VGA Priority: выставить в Onboard VGA Primary.
Далее, нужно развернуть на хостах компонент Nvidia vGPU Manager, который создает связь между графическими процессорами видеокарты и виртуальной машиной. Устанавливается он как обычный VIB-пакет.
После того как Nvidia vGPU Manager настроен на хост-серверах ESXi, нам нужно подготовить виртуальные машины. Это делается через vSphere Web Client, где выбираются аппаратные характеристики ВМ в зависимости от типа рабочей нагрузки.
Затем в настройках ВМ нужно добавить Shared PCI Device, а также выбрать тип Nvidia GRID vGPU и профиль в соответствии с приведенной выше таблицей. После этого можно устанавливать гостевую ОС (Windows 7 и более поздние версии).
Теперь остается установить драйвер Nvidia GRID и настроить пул виртуальных ПК в VMware Horizon View: просто указываем протокол PCoIP и тип 3D-рендера Nvidia GRID VGPU. На этом все. Виртуальные машины готовы к работе с vGPU.
P.S. Интересные материалы из нашего блога по теме виртуализации: