Как да подобрим графичната производителност в съвременните виртуални машини

  • Виртуализацията води до лека загуба на производителност в процесора и RAM паметта, но въздействието обикновено е по-голямо в паметта и графиката, особено при отдалечени настолни компютри.
  • Графичното изживяване на виртуалните машини зависи от графичния процесор, процесора, паметта, дисковия вход/изход, мрежата и използвания протокол за отдалечен работен плот.
  • SR-IOV и GPU passthrough предлагат по-добра графична производителност, но добавят сложност и разходи; virtio-gpu, SPICE и virgl са практичният избор в KVM/Proxmox среди.
  • Изборът между виртуална машина или физически сървър за графични натоварвания изисква стрес тестове и фина настройка на пречките, като съответно се настройва хардуерът и хипервизорът.

Графична производителност във виртуални машини

Когато започнете сериозно да се занимавате със съвременна виртуализация, рано или късно се сблъсквате с повтарящ се проблем: Виртуалните машини рядко предлагат същата графична производителност като операционната система, инсталирана директно на хардуера.Докато десктопът на хоста може да работи гладко дори в 4K, десктопът на виртуалната машина може да е накъсан, със забавяне на мишката, накъсване на екрана или видеоклипове, които не се възпроизвеждат толкова гладко, колкото би трябвало.

Този сценарий се повтаря както в домашна среда, така и в Корпоративни платформи, които използват KVM, Proxmox, VMware, Hyper-V или публичния облак.И усещането е същото: „Хостът работи перфектно, но виртуалната машина е бавна... какво правя погрешно? Трябва ли ми специален графичен процесор, SR-IOV, за да сменям хипервизори, или просто повече сурова процесорна мощност?“

Графична производителност във виртуални машини: какво наистина можете да очаквате

Първата стъпка е да се коригират очакванията: Виртуализирането на настолни компютри с „почти естествено“ 3D ускорение остава предизвикателствоОсобено ако искате да споделяте един графичен процесор между хост и няколко виртуални машини, без да прибягвате до много скъпи или сложни решения.

В типичен случай с Debian 12 като хост през KVM, лаптоп с Ryzen 7 PRO, Radeon iGPU и 4K дисплейФизическият десктоп работи перфектно: преместването на прозорци е мигновено, уебсайтовете се зареждат бързо, а 4K YouTube се възпроизвежда плавно. Въпреки това, на виртуални машини с Linux с Virtio или SPICE графики, производителността спада: Тежките уеб страници и онлайн видеоклиповете изпитват повече забавяне, а плавността не е толкова добра, колкото на хоста..

При тестване на различни конфигурации (драйвер на VirtIO-GPU, SPICE, virgl, различни отдалечени програми за преглед, като например virt-viewer, Windows клиенти и др.) се наблюдава, че Показалецът и общата реакция са донякъде подобрени, но все още са налице накъсване, изпускане на кадри и отчетливо усещане за по-малко „оживен“ десктоп.Това кара много хора веднага да обмислят преминаване през GPU. Или дори да сменят платформата.

Важно е да се разбере, че дори в мощни инфраструктури, Виртуализацията въвежда малко натоварване на процесора, RAM паметта и особено на дисковия входно-изходен капацитет и графиката.При традиционните сървърни натоварвания (уеб, бази данни, микросървиси) това наказание е приемливо; но когато започнете да питате Фина графична интерактивност, ниска латентност и плавно видеовсяка милисекунда е от значение.

Как да подобрим графичната производителност в съвременните виртуални машини

Виртуални машини срещу физически сървъри: реално въздействие върху производителността

Въпреки че тук се фокусираме върху графиката, струва си да поставим виртуализацията в контекст. Физическите (bare metal) сървъри остават еталон, когато търсите сурова производителност и минимална латентност.Особено във високопроизводителни бази данни, 3D рендериране, изкуствен интелект или стрийминг в реално време.

Типичните бенчмарк тестове показват, че добре конфигурирана виртуална машина на KVM или VMware се представя много близо до „голо желязо“ по отношение на процесор и RAM: приблизителни загуби от 5-8% в процесора и 7-13% в паметтаНай-голямата разлика е в паметта. 4K IOPS може да спадне с 17-25%, което е критично, ако работното ви натоварване е много дисково интензивно.

Това наказание съществува и в графичния дизайн, с нюанса, че Графичният процесор обикновено споделя ресурси с множество виртуални машини, а пътят на представяне (SPICE, VNC, RDP, собственият протокол на хипервизора и др.) добавя латентност и компресия.Резултатът: системата „не е неизползваема“, но в сравнение с хоста, тя се усеща по-малко гладка.

Ето защо има сценарии, в които си струва да се придържате към „голия метал“: големи транзакционни бази данни (Oracle, SQL Server Enterprise, SAP HANA), AI/ML двигатели с мощни графични процесори или сървъри за игри/стрийминг с много строги изисквания за латентност. В тези ситуации натоварването на процесора, паметта, входно-изходните данни и графичния процесор на виртуализационния слой става много по-забележимо.

Вместо това, уеб приложения, микросървиси, среди за разработка и виртуални офис десктопи — дори и лек десктоп в Ubuntu— Те се вписват много добре във виртуални машини. Те се възползват от моментни снимки, висока достъпност и бързо мащабиране, а леката загуба на производителност е напълно приемлива.

CPU, RAM, диск и мрежа: какви показатели да се следят в бавна виртуална машина

Преди да обвиним графичния процесор, трябва да потвърдим това Не сте ограничени от процесор, памет, диск или мрежаМного проблеми с „бавния десктоп“ всъщност са насищане на друг ресурс: процесор, който чака своя ред, интензивен суап или диск на лимита си.

Във VMware vSphere, например, процесорът на всеки vCPU преминава през четири състояния: RUN (работа), WAIT (изчакване/I/O или бездействие), READY (в опашка без физически процесор) и COSTOP (съвместно спиране в многоядрени виртуални машини)Високите стойности на READY или COSTOP са ясни индикатори за конфликт и че хостът е свръхзаписан.

За процесорите ключовите показатели са процент на устойчиво използване, използване на MHz на vCPU и броячи Ready/COSTOPАко една виртуална машина е постоянно на 90-100% натоварване или е ГОТОВА повече от 10% от времето, тази машина се затруднява. Добавянето на още виртуални процесори (vCPU) безконтролно почти никога не помага, ако хостът вече е под натоварване.

В паметта си, ние трябва да бдим над Глобалната употреба включва пейджинг/суап и, на платформи като Azure или Hyper-V, пейджинг или суап файлове на вторични дисковеКогато тези томове показват много четения/записи, това е ясен знак, че виртуалната машина е изчерпала RAM паметта.

На диска и в мрежата се наблюдава следното: средна латентност за четене/запис, IOPS и мрежова пропускателна способностПродължителните латентности над 15-20 ms на диска или спадовете в наличността и времето за изчакване в отдалечено хранилище (Azure Storage, SAN и др.) са директни врагове на възприеманата производителност на отдалечения работен плот.

Azure монитор

Инструменти за мониторинг и диагностика: от ESXTOP до Azure Monitor

Големите производители предлагат добре разработени инструменти за анализ на производителността на виртуална машина. Някои примери:

  • VMware: vCenter и ESXTOP.
  • Azure: Azure Monitor и PerfInsights.
  • Hyper-V: Монитор на производителността и PowerShell.
  • KVM/Proxmox: комбинации като top, htop, iostat, virt-top и самият уеб интерфейс.

ESXTOP е класика за анализ в реално време. Той ви позволява да преглеждате, на всеки няколко секунди, показатели за всеки виртуален процесор, като например %ИЗПОЛЗВАН, %РАБОТЕНО, %SYS, %ИЗЧАКВАНЕ, %ПРОСТРАНЕН, %RDY, %CSTP, %MLMTD и много други. Основното правило: ако %RDY или %CSTP се покачат, имате твърде много виртуални процесори (vCPU) или твърде много виртуални машини за хоста.

В Azure, активирането на диагностика на ниво виртуална машина и акаунт за съхранение ви дава диаграми на Процесор, памет, диск и мрежазаедно с показатели за наличност, латентност, дроселиране и грешки при изчакване на съхранението. Тази информация помага да се разграничи проблем с платформата от пречка от ваша страна, дължаща се на прекомерни IOPS или пропускателна способност.

В Hyper-V работата е разделена между Hyper-V Manager, Performance Monitor, Resource Monitor и PowerShell cmdletsМожете да инспектирате физически спрямо логически ядра, NUMA, VHDX дискове, виртуални адаптери, дискови опашки и много други, за да прецизирате коя част не е достатъчна.

Освен производителя, много ръководства препоръчват да се използва специфични стрес тестове: sysbench за процесор, stress-ng и memtester за RAM, fio за дисков вход/изход, iperf3 или netperf за мрежа. Това ви позволява лесно да сравнявате bare metal с VM и да видите ограниченията на всеки хипервизор.

Виртуализация на GPU: SR-IOV, passthrough и собствени решения

Когато проблемът е ясно графичен (накъсване на екрана, ниска честота на кадрите, бавни анимации, накъсано видео), е време да разгледаме... Виртуализация на графичния процесорТук има три основни семейства решения:

  • GPU passthrough (PCI passthrough)Пълна графична карта се присвоява на една виртуална машина. Това предлага почти оригинална производителност, но с очевидни ограничения: тази графична карта става недостъпна за хоста и другите виртуални машини и обикновено се нуждаете от специален видео изход за тази виртуална машина, което не е идеално, ако искате всичко на един и същ екран.
  • Виртуализация на графичния процесор чрез SR-IOV (Single Root I/O Virtualization)Това позволява предоставянето на виртуални функции на графичния процесор (VF) на различни виртуални машини. Идеята е много привлекателна: споделяне на графичен хардуер с минимални режийни разходи. Intel насърчава този подход в своите Xe2 iGPU за лаптопи (като Lunar Lake) и в графични процесори за центрове за данни (Flex), докато AMD и NVIDIA запазват тази функция предимно за... много скъпи визитки където освен това често има модели на лицензиране и абонамент, които не са много удобни за домашни потребители или малки предприятия.
  • SR‑IOVТова решение Не е напълно прозрачно за виртуалните машини, изисква специфични драйвери, BIOS/фърмуер и поддръжка на хипервизор и може да доведе до собствени проблеми със съвместимостта.Не винаги си струва да надграждате целия си хардуер (например, да купувате лаптоп Intel Lunar Lake само за това), ако останалата част от работния ви процес ще остане ограничена от други фактори. Анализ на хардуера на компютъра помага да се реши.
  • Патентовани решения за виртуализация на графични процесориКато например NVIDIA RTX vWS, NVIDIA VGX или техните наследници. Те комбинират специфичен хардуер (например, карти тип VGX K1/K2 с множество графични процесори Kepler, големи количества GDDR5 памет и хиляди CUDA ядра) с GPU хипервизор, който позволява мултиплексиране на графичния изчислителен капацитет върху десетки виртуални десктопи.

QEMU

Частични GPU технологии в настолни среди: virtio-gpu, virgl и SPICE

За тези, които използват KVM, QEMU, Proxmox или подобни, обичайният път включва Паравиртуализирани графични контролери като virtio-gpu, комбинирани с протоколи за отдалечен работен плот като SPICEОт страна на гост системата е инсталиран драйвер, който „разбира“ това виртуално устройство и позволява определено ниво на основно 2D/3D ускорение.

VirGL е допълнителен слой, който превежда OpenGL повиквания от госта към хост графичния процесорПо този начин, приложение във виртуалната машина индиректно използва реалното 3D ускорение. На теория това би трябвало да подобри графичната производителност на работния плот и приложенията. На практика обаче понякога се случва обратното. Ако вграденият графичен процесор на хоста е слаб или имплементацията не е доизпипана, се забелязва значителен спад в производителността.

Всъщност, много потребители с AMD iGPU (например Renoir) съобщават, че когато активират VirGL, Десктопът на виртуалната машина става много по-бавен и по-тежъкдо степен да е по-лошо от използването на Virtio-GPU „без графичния процесор“. Това не означава, че VirGL е безполезен, но зависи силно от комбинацията. хардуер + драйвери + натоварване на VM графики.

В Proxmox, триото virtio-gpu + SPICE + virtual-viewer Това обикновено е минималната разумна конфигурация за графичен Linux десктоп. Тя позволява приличен курсор на мишката, преоразмеряване на прозорците и по-добра компресия на изображенията от обикновения VNC, но все пак... Не очаквайте същото изживяване, както с отдалечената конзола на VMware ESXi или VMRC., които са силно усъвършенствани след години на оптимизация.

Ето защо много администратори, идващи от ESXi, са изненадани, когато опитат Proxmox. Въпреки че имат много мощен хипервизор, Усещането за „щракване“ на отдалечения работен плот е по-ниско освен ако не правите много фина настройка или не използвате специален графичен процесор.

Кога си струва GPU passthrough и кога не?

Преминаването през графичен процесор (GPU passthrough) остава най-ефективната опция за конкретна виртуална машина. Въпреки това, в сценариите за ежедневна употреба на настолни компютри има няколко недостатъка. Например. необходимост от друг мониторен вход, загуба на графичен процесор за хоста, допълнителни усложнения (IOMMU, групи, BIOS, драйвери, грешки със спирането и др.).

Ако целта ви е това една виртуална машина има пълно 3D ускорениеУсилието обикновено си заслужава. Проекти като Looking Glass ви позволяват да „инжектирате отново“ образа на виртуалната машина в работния плот на хоста, за да избегнете допълнителни монитори. Но ако това, което искате, е няколко офис или тестови виртуални машини с добри основни познанияПрехвърлянето на графичен процесор към всеки от тях не е осъществимо.

За мощни настолни компютри можете да помислите за хибридна комбинация: Основен графичен процесор за хоста и преминаване от втори, по-скромен графичен процесор за конкретна виртуална машинаПо този начин поддържате много използваем десктоп на хоста и давате на тази виртуална машина графична среда, много близка до оригиналната; a анализ на лаптоп Може да предложи перспектива за алтернативи на настолните компютри спрямо лаптопите.

С лаптопите нещата стават по-сложни. Те обикновено имат единична iGPU (или iGPU + dGPU, силно интегрирана с фърмуера)С ограничени ресурси и липса на реалистична възможност за инсталиране на друга графична карта, преминаването през виртуална мрежа рядко си струва. По-разумно е да се използват паравиртуализирани опции (virtio-gpu, SPICE, RDP), за да се намалят графичните очаквания на виртуалните машини.

С една дума, Passthrough е правилният инструмент за няколко много взискателни виртуални машини.За лаборатории с много машини или леки настолни компютри, по-важно е да настроите хипервизора, да контролирате натоварването на процесора/RAM/I/O и да изберете правилния протокол за отдалечен работен плот.

Хипервизори, NUMA, динамична памет и други фактори, влияещи върху производителността

Отвъд графичния процесор, начинът, по който хипервизорът управлява Процесор, памет, съхранение и мрежа Това пряко влияе върху възприеманата плавност на работния плот на виртуалната машина. Hyper-V, KVM, VMware и други имат донякъде различни философии, но всички те споделят общи концепции.

Архитектурата на Hyper-V, например, е базирана на хипервизор, който контролира достъпа до хардуера, коренен дял със системата за управление и вторични дялове за виртуалните машиниТова се поддържа от технологии като виртуална NUMA, динамична памет, виртуални комутатори, мрежов SR-IOV и оптимизации за съхранение, като например ODX.

NUMA (неравномерен достъп до паметта) е особено важен в сървъри с много ядра. Ако голяма виртуална машина е лошо разделена между физически NUMA възли, латентността на паметта ѝ се увеличава. И производителността страда, дори ако на хартия изглежда, че разполага с достатъчно ресурси. В идеалния случай vNUMA топологията на виртуалната машина трябва да съвпада с pNUMA топологията на хоста.

Динамичната памет (в Hyper-V, „балонираща“ в други хипервизори) може да спести глобална RAM памет, но Не е подходящ за чувствителни към латентност натоварвания, като бази данни или настолни компютри с много отворени приложения.В такива случаи е препоръчително да се разпредели фиксирана памет, за да се избегнат паузи, когато хипервизорът реши да освободи цялата RAM памет наведнъж.

Съхранението е най-често срещаният проблем. Препоръчително е Използвайте VHDX дискове с фиксиран размер, отделяйте системните дискове от тези с данни, избирайте SSD дискове от корпоративен клас или NVMe устройства и избягвайте RAID конфигурации с лошо поведение при запис (RAID 5/6) за интензивни натоварвания.Където е възможно, Storage Spaces Direct или NVMe масивите помагат за поддържане на латентността в приемливи граници.

В мрежа е препоръчително да конфигурирате Външни виртуални комутатори на бързи мрежови карти (10 GbE, ако е възможно), използвайте обединяване на мрежови карти, активирайте SR-IOV за много големи мрежови натоварвания и настройвайте MTU и разтоварванията Само ако цялата мрежова верига го поддържа. Лошата мрежова конфигурация може да направи отдалечения работен плот, дори с добър графичен процесор, да изглежда по-зле от очакваното.

Стрес тестване и случаи на употреба: кога да изберете виртуална или физическа машина

За да решите дали да мигрирате графично натоварване към виртуална машина или да го оставите на физически носител, е важно Тествайте с бенчмаркове и инструменти за измерване на стрес Те трябва да измерват използването на процесора, RAM паметта, дисковата памет и мрежата. И, когато е възможно, също и използването на графичния процесор. В идеалния случай „истинското“ приложение трябва да се сравнява със същото приложение, работещо във виртуална машина.

Реалистичен модел може да бъде: Стартирайте sysbench или Geekbench за процесор, stress-ng или memtester за RAM, fio за 4K IOPS и латентност на диска, iperf3 за мрежова честотна лента.и някои основни графични бенчмаркове (напр. glxgears или WebGL тест, базиран на браузър) както на хоста, така и на виртуалната машина.

Ако загубата на производителност е в приемливи граници (например, По-малко от 10% натоварване на процесора/RAM паметта и 15-20% натоварване на дискаАко отдалеченият работен плот изглежда достатъчно гладък за предвидената употреба (офис автоматизация, администриране, лека разработка), виртуализацията е напълно валиден вариант.

Ако, от друга страна, приложението разчита в голяма степен на Графичен процесор, ниска латентност и висока устойчива I/O пропускателна способност (рендиране в Blender, тежък CAD, AI двигатели, обучаващи големи модели, игри и др.), изживяването обикновено е много по-добро на физически сървър със специален GPU или на професионална виртуална машина с GPU passthrough.

Ключът е да се открие кой компонент (готов процесор, недостатъчна RAM, ограничен входно/изходен трафик, липса на истински графичен процесор, бавна мрежа или лошо оптимизиран протокол за десктоп) забавя всяка виртуална машина. приложете най-простото и най-рентабилно възможно решение за този случайи запазете големите инвестиции (специализирани графични процесори, SR-IOV, професионален хардуер) за натоварванията, където те наистина имат значение.