Технология получения доступа к аппаратной части графических процессоров в виртуальной машине

Технология получения доступа к аппаратной части графических процессоров в виртуальной машине Купецкий М. Г.

Купецкий Максим Геннадьевич /Kupetskiy Maksim Gennadyevitch - аспирант, кафедра компьютерного моделирования и многопроцессорных систем, факультет прикладной математики - процессов управления,

Санкт-Петербургский государственный университет, г. Санкт-Петербург

Аннотация: статья посвящена виртуализации и аппаратным устройствам в ней, в частности, видеокартам. Благодаря развитию современных вычислительных мощностей и появлению таких технологий, как CUDA, AMD OpenCL APP Technology, OpenCL и многих других, возникла проблема предоставления доступа к аппаратной части устройств в рамках виртуальной машины. В статье предлагается вариант использования вышеупомянутых технологий при помощи гипервизора Xen.

Abstract: the article is devoted to virtualization and hardware within it (GPUs in particular). Due to growing of modern computational power and development of such technologies as CUDA, AMD OpenCL APP Technology and OpenCL, there is a problem of providing access to the hardware within a single virtual machine. The article suggests a way of using these technologies with the help of Xen hypervisor.

Ключевые слова: виртуализация, гипервизор, GPGPU, Xen.

Keywords: virtualization, hypervisor, GPGPU, Xen.

Введение.

История виртуализации тесно связана с развитием вычислительной техники. В 60-е годы прошлого века компания IBM применила технологию виртуализации на своих мейнфреймах System/360™ Model 67. Она применялась для логического разделения мейнфреймов на отдельные виртуальные машины. Этим обеспечивалась «многозадачность»: одновременное выполнение нескольких приложений и процессов. Так как стоимость мейнфреймов была очень высока, они проектировались с учетом разделения для эффективного использования инвестиций.

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

Выделение и распределение ресурсов кластеров (а также подобных объединений вычислительных мощностей) является одним из применений виртуализации. Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Специально выделяют высокопроизводительные кластеры (обозначаются аббревиатурой HPC Cluster — High-performance computing cluster) [3].

С развитием GPU в кластеры начали включать видеокарты для высокопроизводительных вычислений. Преимущественно это карты компании NVIDIA с технологией CUDA. Такие системы получили название «Гибридные кластеры». Одна из важных задач заключается в выделении мощности одной или нескольких видеокарт для конкретного пользователя. В статье рассмотрены способы создания виртуальной машины с непосредственным доступом к аппаратной части видеокарт. Таким образом достигнута изолированность исполняемых приложений, отсутствие возможных конфликтов и несовместимостей, относительно меньшие ресурсозатраты, удобство управления [2].

Организации доступа к GPU посредством Xen.

Виртуализация — это создание виртуальной версии чего-нибудь (аппаратной платформы, операционной системы, устройства хранения, сетевое устройство). Условно физический компьютер — это физический компьютер как с точки зрения пользователя, так и с точки зрения администратора, а виртуальная машина остается «физической» только для пользователя.

Виртуализация может рассматриваться как часть общей тенденции в ИТ, которая включает в себя автономные вычисления (самоуправляемые ИТ-среды) и «коммунальные» вычисления, в которых мощность компьютеров рассматривается как услуга, за которую клиенты платят по мере необходимости [2].

Условно виртуализацию можно разбить на несколько типов:

1) аппаратная виртуализация;

2) десктопная виртуализация;

3) программная виртуализация;

4) виртуализация памяти;

5) виртуализация хранилища;

6) виртуализация данных.

Нас интересует паравиртуализация с использованием Xen.

Xen — это кроссплатформенный гипервизор, который предоставляет возможность запускать одновременно несколько ОС на одном и том же аппаратном обеспечении [1]. Распространяется на условиях лицензии GPL, изначально разработан в Кембриджском университете.

В гипервизоре есть поддержка следующих технологий:

• паравиртуализация;

• аппаратная виртуализация;

• миграция виртуальных машин;

• Unix-подобные ОС в роли хоста;

• ограничение ресурсов в виде 100 паравиртуализированнных блочных устройств, 64 CPU, 2 TB RAM и 64 виртуальных машины на один сервер.

Базовой единицей данного гипервизора является домен. Домен — это запущенная копия виртуальной машины. Если виртуальная машина перезагружается, то в момент перезагрузки ее домен завершается, и появляется новый домен. При миграции содержимое копируется из одного домена в другой домен, и при этом виртуальная машина всегда доступна.

Таким образом, за время своей жизни практически все виртуальные машины оказываются по очереди в разных доменах. Xen оперирует только понятием домена, а понятие «виртуальной машины» появляется на уровне администрирования (прикладных программ, управляющих гипервизором) [5].

В гипервизоре Xen существует возможность добавления физического устройства в домен. Таким образом, можно использовать возможности GPU, находясь в виртуальной машине.

Виртуализация.

Первая задача, которая стоит перед средой виртуализации — виртуализация процессора. Реализуется следующим образом: процесс на некоторое время получает эксклюзивное право на использование

процессора, после чего происходит прерывание. Состояние CPU сохраняется, запускается следующий процесс [2].

Когда ОС запущена, то некоторым процессам доступен привилегированный доступ к CPU, что позволяет организовать такие операции, как доступ к оперативной памяти. Попек и Голдберг в 1974 г. сформулировали набор формальных требований к виртуализируемой архитектуре:

1) привилегированные инструкции — те, которые могут выполняться в привилегированном режиме, но не могут запускаться извне;

2) чувствительные инструкции по управлению — те, которые могут изменять конфигурацию ресурсов системы: отображение виртуальной памяти в физическую, общение с устройствами, управление глобальными регистрами;

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

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

Scp,PcA

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

Далее для виртуализации требуются память и устройства. Виртуализировать память можно следующим образом: разделить на условные части и отдать каждую отдельной привилегированной инструкции. Современные CPU содержат Memory Management Unit (MMU) — устройство управления памятью. На некоторых платформах существует Input/Output Memory Management Unit (IOMMU) — устройство, которое отображает также физическое пространство в виртуальное для отдельных устройств.

Реализация.

Изначально проведем установку гипервизора.

sudo aptitude install xen-linux-system sudo aptitude install xen-qemu-dm sudo aptitude install xen-tools sudo reboot

Листинг 1. Установка Xen в debian

После этого debian будет представлять из себя dom0 систему с гипервизором. Также возможна установка Xen Cloud Platform — консоль управления, которая представляет собой связку из гипервизора и домена dom0.

В файлах конфигурации гипервизора необходимо включить поддержку IOMMU. Далее необходимо сконфигурировать гостевой домен domU с OS MS Windows. За основу взяты наработки из [4]. В текущей

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

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

import os, re

arch = os.uname()[4]

if re.search('64', arch):

arch_libdir = 'lib64'

else:

arch_libdir = 'lib'

kernel = "/usr/lib/xen-6.0/boot/hvmloader"

builder='hvm'

memory = 4096

vcpus = 4

name = "winxp"

vif = [ 'type=ioemu, mac=aa:33:44:b1:33:11, bridge=xenbr0' ] disk =

['phy:/dev/vg0/windows,hda,w','file:/root/windows.iso,hdc:cdrom,r'] #acpi = 1

device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'

boot = "d"

sdl = 0

serial = 'pty'

vnc = 1

vncviewer = 1

vncpasswd = "

gfx_passthru = 1

pci=['yy:zz.n'] //id pci-устройства

Листинг 2. Windows.cfg

Заключение

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

В статье реализована система на гипервизоре Xen, которая позволяет получать доступ к аппаратной части видеокарт. Достигается это за счет поддержки аппаратным обеспечением аппаратной виртуализации. Конечным продуктом является непривилегированный домен domU — виртуальная машина с гостевой операционной системой.

В полученном домене выполняются следующие требования:

1) прозрачность доступа к видеокартам для пользователя;

2) изолированность виртуальных сред;

3) одновременная поддержка видеокарт от AMD и NVIDIA;

4) возможность использования технологий NVIDIA CUDA и AMD APP Technology;

5) независимость доступности видеокарты и времени выполнения задачи от других пользователей.

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

Литература

1. David Chisnall The Definitive Guide to the Xen Hypervisor. Prentice Hall, page 286, 2008.

2. Wade A. Reynolds David Marshall. Advanced Server Virtualization: VMware and Microsoft Platforms in the Virtual Data Center. Auerbach Publications, 2006, 742 p.

3. Tim JonesM. Virtual linux. an overview of virtualization methods, architectures and implementations. [HTML].

4. Steve Kaplan Tim Reeser Citrix XenApp Platinum Edition for Windows: The Official Guide. McGraw-Hill Osborne Media, 2008, 560 p.

5. William von Hagen Professional Xen Virtualization. Wrox, 2008, 405 p.