В предыдущей статье мы не затронули некоторые интересные аспекты использования виртуальных серверов с видеоадаптерами. Пришло время дополнить тестирование.
Для использования физических видеоадаптеров в виртуальных средах мы выбрали технологию RemoteFX vGPU, которая поддерживается гипервизором Microsoft. При этом на хосте должны быть установлены процессоры с поддержкой SLAT (EPT от Intel или NPT/RVI от AMD), а также соответствующие требованиям создателей Hyper-V видеокарты. Ни в коем случае не стоит сравнивать это решение с настольными адаптерами в физических машинах, которые обычно показывают лучшую производительность при работе с графикой. В нашем тестировании vGPU будет конкурировать с центральным процессором виртуального сервера — вполне логично для вычислительных задач. Отметим также, что помимо RemoteFX существуют и другие сходные технологии, например NVIDIA Virtual GPU — она позволяет передавать графические команды каждой виртуальной машины напрямую в адаптер без трансляции их гипервизором.
Тесты
В тестах использовалась машина с 4 вычислительными ядрами на 3,4 ГГц, 16 ГБ оперативной памяти, твердотельным накопителем (SSD) на 100 ГБ и виртуальным видеоадаптером с 512 МБ видеопамяти. В физический сервер установлены профессиональные видеокарты NVIDIA Quadro P4000, а гостевая система работает под управлением Windows Server 2016 Standard (64-bit) со стандартным видеодрайвером Microsoft Remote FX.
▍GeekBench 5
Для начала запустим актуальную версию утилиты GeekBench 5, которая позволяет измерить производительность системы для приложений OpenCL.
Этот бенчмарк мы использовали в предыдущей статье и он только подтвердил очевидное — наш vGPU слабее производительных настольных видеокарт для решения типичных «графических» задач.
▍GPU Caps Viewer 1.43.0.0
Созданную компанией Geeks3D утилиту нельзя назвать бенчмарком. Тестов производительности она не содержит, но позволяет получить информацию об используемых аппаратных и программных решениях. Здесь можно увидеть, что наша виртуальная машина с vGPU поддерживает только OpenCL 1.1 и не поддерживает CUDA, несмотря на установленный в физическом сервере видеоадаптер NVIDIA Quadro P4000.
▍FAHBench 2.3.1
Официальный бенчмарк от проекта распределенных вычислений Folding@Home посвящен решению узкоспециализированной задачи компьютерного моделирования свертывания белковых молекул. Это нужно для исследования причин возникновения связанных с дефектными белками патологий — болезней Альцгеймера и Паркинсона, коровьего бешенства, рассеянного склероза и т.д. Утилита FAHBench не может всесторонне оценить вычислительные мощности виртуального видеоадаптера, но позволяет сравнить производительность CPU и vGPU в сложных расчетах.
Измеренная с помощью FAHBench производительность вычислений на vGPU с использованием OpenCL оказалась примерно в 6 раз (для метода моделирования implicit — примерно в 10 раз) выше аналогичных показателей для достаточно мощного центрального процессора.
Дальше приведем результаты вычислений с двойной точностью.
▍SiSoftware Sandra 20/20
Еще один универсальный пакет для диагностики и тестирования компьютеров. Он позволяет в деталях изучить аппаратную и программную конфигурацию сервера и содержит огромное количество разнообразных бенчмарков. Помимо вычислений с использованием CPU, Sandra 20/20 поддерживает OpenCL, DirectCompute и CUDA. Нас в первую очередь интересуют включенные в бесплатную версию Sandra Lite наборы эталонных вычислительных тестов общего назначения (GPGPU) с использованием аппаратных ускорителей.
Результаты довольно неплохие, хотя они немного ниже ожидаемых для видеоадаптера NVIDIA Quadro P4000. Вероятно сказываются накладные расходы на виртуализацию.
В Sandra 20/20 есть сходный набор эталонных тестов для центрального процессора. Запустим их, чтобы сравнить результаты с вычислениями на vGPU.
Преимущества видеоадаптера видны наглядно, однако настройки общем пакете тестов не вполне идентичны, к тому же в результатах нельзя увидеть показатели с нужной степенью детализации. Мы решили провести несколько отдельных испытаний. Сначала определили пиковую производительность vGPU с помощью набора простых математических расчетов с использованием OpenCL. Этот бенчмарк по сути аналогичен мультимедийному (не арифметическому!) тесту Sandra для CPU. Для сравнения на ту же диаграмму поместим результат мультимедийного теста центрального процессора
От синтетических тестов перейдем к вещам практическим. Определить скорость кодирования и декодирования данных нам помогли криптографические тесты. Здесь сравнение результатов для vGPU и CPU также показало явное преимущество ускорителя.
Еще одна сфера применения vGPU — финансовый анализ. Такие расчеты несложно распараллелить, но для их выполнения потребуется видеоадаптер, поддерживающий вычисления с двойной точностью. И опять результаты говорят сами за себя: достаточно мощный процессор вчистую проигрывает GPU.
Последний проведенный нами тест — научные расчеты с высокой точностью. Графический адаптер снова справился лучше центрального процессора с умножением матриц, быстрым преобразованием Фурье и другими подобными задачами.
Выводы
vGPU плохо подходят для запуска графических редакторов, а также приложений для 3D-рендеринга и обработки видео. Адаптеры для настольных систем справляются с графикой куда лучше, зато виртуальный может быстрее CPU выполнять параллельные вычисления. За это нужно сказать спасибо производительной оперативной памяти и большему количеству арифметико-логических модулей. Сбор и обработка данных с различных датчиков, аналитические расчеты для бизнес-приложений, научные и инженерные расчеты, анализ и тарификация трафика, работа с торговыми системами — существует масса вычислительных задач, для решения которых GPU незаменимы. Конечно можно собрать такой сервер дома или в офисе, но за покупку «железа» и приобретение лицензионного ПО придется выложить кругленькую сумму. Помимо капитальных затрат существуют и операционные издержки на обслуживание, включающие в том числе и счета за электроэнергию. Существует амортизация — оборудование со временем изнашивается, а морально устаревает еще быстрее. Виртуальные серверы этих недостатков лишены: их можно создавать по мере необходимости и удалять, когда потребность в вычислительной мощности пропадет. Платить за ресурсы только когда они нужны всегда выгодно.
Автор: ru_vds