Artikel top billede

(Foto: Computerworld)

Dét skal du vide om virtuelle maskiner

Elsker du at lege med avanceret virtualisering, så kom med ud på legepladsen her, hvor du også kan springe med tilbage i tiden til virtualiseringens barndom. Du får en hurtig gennemgang af den aktuelle virtuelle verden fra enkeltstående virtuelle gæster i VirtualBox til superorkestrerede gæster.

Af Torben Okholm, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Nu om dage verserer der en konspirationsteori om, at verden ikke findes, og at alt dette – altså det, der foregår i redaktionslokalerne hos AOD – er en snedig virtualiseret simulation, der bliver afviklet af et vrantent teenage-rumvæsen på en Apple IIq-kvantecomputer. Vi ser her bort fra enkle spørgsmål som “Hvorfor?” og “Hvad med at give mig mere i løn?” og konstaterer i stedet, at den moderne verden nu om dage faktisk i vid udstrækning bliver styret i en virtuel verden.

Denne tekst bliver afviklet som en del af en Java Virtual Machine inden i en browser. Den bliver lagret i “skyen” som en styret virtuel lagerpulje, der bliver vedligeholdt som del af et Kubernetes-orkestreret virtuelt containersystem. De websider, vi har læst under vores research til denne artikel, er blevet leveret af virtuelle serverclusters, og den musik-streaming-tjeneste, som underholder os i vores pauser, kommer fra en tilsvarende serverfarm. Og så videre, og så videre.

Dette er i meget høj grad den kommercielle del af vores virtuelle verden, hvor kompleksitet bliver abstraheret hinsides automatiserede softwarelag med henblik på nemmere håndtering. I takt med, at virtuel teknologi begiver sig ind på gpu-området, orkestrerer den nu gamestreaming-tjenester og firma-accelererede 3D-desktops. Men selv på vores personlige maskiner kan den samme abstraktion hjælpe os med at håndtere vores egen række af virtuelle maskiner, der kører og afprøver software fra Linux-servere til gamle Windows-installationer, DOS-spil og meget andet. Lad os derfor se på de redskaber, der bliver brugt, hvordan man kan køre virtualiserede maskiner, og hvordan den virtuelle teknologi kommer til at omfatte gpu’er.  Nøglen til succes med virtualisering er i den sidste ende finansiel, og når vi siger finansiel, taler vi om dovenskab. Man kan oprette mængder af virtuelle servere efter behov og droppe dem, når der ikke længere er brug for dem. Det gør systemadministratorens arbejde nemmere, men det betyder også, at man nemt kan skalere tjenester – op og ned – i overensstemmelse med behovet. Det minimerer udgifterne og kan i den yderste konsekvens blive gjort til en automatiseret proces.


Man skal beherske sig, når man bruger disse skydere, men med gamle systemer er beskedenhed en dyd.

Denne teknologi sigter i første omgang på Xeon-servere med 22 kerner, men en Intel Core i5 eller AMD Ryzen rummer faktisk den samme hardware-virtualiseringsteknologi som disse serversystemer. Vi kommer sikkert ikke til at køre systemer på helt det samme niveau, men vi kan sagtens høste fordelene fra både hardware- og open source-softwareudviklingen.

På AOD har vi tidligere beskæftiget os med VirtualBox. Dengang drejede det sig om version 5.2 af VirtualBox, men siden har version 6.0 set dagens lys, og i slutningen af 2019 blev version 6.1 lanceret. En væsentlig faktor var integrationen ind i Oracle Cloud-tjenesten i tilgift til en gui-opdatering, men hertil kom en anden tilføjelse i form af overgangen til VBoxSVGA-support (også VMSVGA).

VMSVGA står for VMware SVGA (der er standarden for Linux), og den bruger en VMware-udviklet skærmdriver, der er mere effektiv end den gamle VirtualBox VBoxVGA-driver, og som stadig er hurtigere end den nyere VBoxSVGA-driver (Windows’ standard). De understøtter begge OpenGL 2.1 og DirectX 8/9-acceleration med Windows, når man har installeret VirtualBox-tilføjelserne.

Tidligere fandtes der et system, som hed PCI Passthrough – det vender vi senere tilbage til – og det var et hack, som “leverede” PCIe-overførsler fra en ekstra gpu “via” selve den virtuelle maskine. Det gav en passende VirtualBox-VM en gpu-acceleration med næsten fuld hastighed, men det var snarere en genvej end en egentlig virtualiseret løsning. Den var også hardware-ineffektiv, idet gpu’en skulle være dedikeret til en enkelt gæste-VM og ikke kunne bruges af den lokale vært. Desuden var der sikkerhedsproblemer. Derfor blev denne funktion fjernet fra lanceringen af version 6.0 og fremefter, mens den gamle VBoxVGA-drivermulighed blev fjernet i version 6.1 (bortset fra visse undtagelser).

Sagde I 60 minutes? Aldrig i livet

Virtuelt gammel

Vi skal stifte bekendtskab med VirtualBox 6.1, og derfor skal vi have et historisk Windows 95-gæstesystem op at køre. Prøv at tænke tilbage på pc’er fra midten af 1990’erne: Hukommelse og lagerkapacitet skal tælles i sølle megabyte. Vi tør vædde på, at du har en gammel Windows 95-installations-cd liggende på loftet. Ideelt set skal man have den som et ISO-image – gå til imgburn.com, der er det klassiske Windows-baserede redskab til at tage images af optiske diske. Husk, at Microsoft stadig har copyright på Windows 95, og det er derfor ulovligt at satse på nemt tilgængelige Windows 95 OSR2 ISO-images, der ligger på internettet.

Tænk 25 år tilbage i tiden, og husk, at de originale Windows 95-installationsdiske ikke kunne boote! De gamle dage var virkelig forfærdelige. Det var en forudsætning, at man havde en installation af Windows 3.1 ved hånden, eller at man havde en bootdiskette inden for rækkevidde. Man kan få et image af en egnet bootdisk på allbootdisks.com/download/95.html. Til Windows 95a skal man hente IMG-filen, men hvis man bruger den “seneste” Windows 95 OSR2-version, er 95b.img sagen.

Når disse images er i hus, kan vi begynde at oprette en passende virtuel gæst i VirtualBox. Klik New > name this Windows 95, så bliver hukommelsen angivet til et fornuftigt niveau på 64 MB. Når man opretter et virtuelt drev, bruger Windows 95 filsystemet FAT16, og derfor er den maksimale drevstørrelse 2 GB – det bliver også valgt.

På dette stade opretter VirtualBox gæsten, men vi er nødt til at justere indstillingerne: Klik på knappen “Settings”. Nu om dage vælger VirtualBox sunde standarder, som det er værd at se nærmere på. Windows 95 kan kun bruge en enkeltkerne-processor, og man er nødt til at slå hardwarevirtualisering fra (det virker, men det kan forårsage problemer og blå skærm – Blue Screen of Death – under brugen). Det samme gælder 3D og 2D; men alt dette bør blive valgt automatisk. Tilsvarende bliver det ældre PIIX3-chipsæt, PS/2-mus og SoundBlaster-audio automatisk valgt.


Det var dengang: DOS-partitioner.

Under “Storage” skal du pege “Floppy Device” mod dit diskette-image og “Optical Device” mod dit Windows 95 ISO-image. Begge dele sker under sektionen “Storage”. Hvis dine filer er “raw” IMG-filer, skal du ændre filtypen i dialogboksen “Explorer”. Klik “OK” for at gemme dine indstillinger.

Klik “Start”, og før Windows 95 over på systemet. Dit diskette-image bør boote dig til en A:\>-prompt. Hvis det ikke sker, skal du sikre dig, at du har et korrekt diskette-diskimage, at den virtuelle maskine har en disketteenhed tilsluttet, og at den peger på den korrekte fil.

Den virtuelle gæst vil “gribe” input fra mus og tastatur. Tryk på den højre Ctrl-tast for at springe tilbage. Skriv “fdisk”, tryk Enter, vælg “Large Disk”-support, således at vi kan gøre brug af EBORNE-lagerpladsen på 2 GB (unge mennesker aner ikke, hvor heldige de er), vælg 1 > 1 > Y, og tryk Escape. Det opretter en aktiv primær partition, der bruger al pladsen. Vælg Input > Keyboard > Insert Ctrl-Alt-Del for at fremtvinge en genstart.

Formater nu C-drevet med “FORMAT C”. Tiden er inde til at installere Windows. Det optiske drev vil typisk være R:. Skriv derfor “CD R:\” og “R:” for at gå til dette drev. 

Drevbogstavet bliver vist, når driveren starter i takt med, at disketten booter. Vi beskriver også installtion fra en cd-rom. Det kan give hovedbrud undervejs, fordi driveropdateringer konstant leder efter cd-drevet, der måske er ændret eller slet ikke aktivt. Det kan man undgå ved at installere alle installationsfilerne ved hælp af “xcopy R:\ C:\INSTALL\ /S” og installere derfra.

Kan du huske de manglende drivere og den blå dødsskærm?
Skriv “setup” for at komme i gang. Glem ikke din Windows 95-licensnøgle. Når du bliver bedt om det, vælger du “Network and Sound cards”. Lad installationen køre – det går lynhurtigt. Før du genstarter, vælger du Devices > Floppy og tager bootdisken ud. Det er også en god idé at gå ind i “System” og flytte harddiskens placering i boot-rækkefølgen foran det optiske drev. Hvis der er behov for at installere drivere, skal du først læse det næste afsnit.

Hvis du kører et AMD Ryzen-system, løber du sandsynligvis ind i en overdådig Windows-bug, når Windows 95 genstarter. Den leverer en frygtindgydende meddelelse: “Initializing Device IOS: Windows Protection Error”. Det kan ske på ethvert AMD-system, der er hurtigere end 350 MHz (hårrejsende!), og potentielt også på Intel-cpu’er 2,1 GHz. Gå til http://lonecrusader.x10host.com/fix95cpu.html, download og udpak patchen Fix95CPU. Dette indebærer en Microsoft-løsning med en ISO-fil. Når Windows 95-gæsten er slået fra, tilføjer du filen FIX95CPU.ISO og booter. Spring readme-filen over, og kør patchen. Fjern dernæst ISO-filen, så burde hele historien boote fint. Husk at erstatte Win95-ISO’et og justere boot-order for driverinstallationer.

Vi kan ikke huske, at Windows 95 var så rædsom. Vi husker formentlig Windows 98, og her havde man ordnet mange, mange problemer. Den dårlige nyhed er, at vi sandsynligvis hænger på 640 x 480 i 16 farver, fordi der ikke findes nogen officiel løsning på det i VirtualBox. Windows 95 har aldrig for alvor henvendt sig til VirtualBox-gæster, men man kan måske opspore det afdøde SciTech Nucleus Driver-ISO, der kan åbne 1024 x 768-opløsninger ved 32-bit-farver, og det er ret fancy.

Den gode nyhed er, at man kan komme online med nogle mindre justeringer. Højreklik på Network Neighbors icon > Properties. Tilføj først Microsoft > TCP/IP Protocol, og fjern dernæst “Client for NetWare” (fjollede Novell) plus protokollerne NetBEUI og IPX. Windows 95 vil geninstallere drivere fra cd-rommen – tjek derfor, om drevbogstavet stemmer i rullemenuen. Efter en genstart kan du køre “winipcfg” og se, om du har tildelt en ip-adresse. Vi føjede vores router-ip til ”Gateway TCP Properties”, og det syntes at hjælpe.

Du kan gå videre til websites, men du vil konstatere, at den antikke Internet Explorer, der mangler JavaScript og moderne HTML5, er inderligt ubrugelig, men det er sjovt. Du kan eventuelt prøve at få fat i en anvendelig udgave af Netscape, men så mangler vi heller ikke noget.

Fjernadgang

Der er et fikst trick, som vi godt kan lide at bruge med VirtualBox, og det er evnen til at bruge en Remote Display Server. Man kan give nogle på netværket mulighed for at få fjernadgang til en kørende virtuel maskine. Hvis man bruger det sideløbende med de “headless” og detachable VM-tilstande, kan man gøre en hvilken som helst gæstemaskine tilgængelig for enhver, der har adgang til ens lokalnet, med en passende RDP-klient. Man skal blot have ip-adressen på værts-pc’en. På en Windows-pc trykker man på Windowstasten og skriver “cmd” plus “ipconfig” efterfulgt af IPv4-address.

Vi tillader os at antage, at du allerede har arrangeret din VM-gæst, og derfor vil vi justere en eksisterende VM. I VirtualBox vælger du den relevante VM og klikker derefter “Settings” efterfulgt af Display > Remote Display > Enable Server.

Du ser nu, at standardporten er 3389. Du har måske også regnet ud, at dette er Windows’ standard-RDP-port, og hvis du i forvejen bruger RDP, skal du afgjort ændre denne port. Det vil være klogt at gøre det under alle omstændigheder for at undgå problemer senere hen. Kun én aktiv VM-gæst kan bruge en specifik port ad gangen på et system, og hvis du har planer om at bruge den med mere end én VM-gæst, skal du ændre indstillingerne for hver af dem. Oracle anbefaler porte mellem 5000 og 5050, og derfor bør du begynde med 5000 og gå opefter.

Når du har valgt det, trykker du på Windows-tasten på den samme pc og skriver “RDP < Run Remote Desktop Connection”.

Da du er på den samme pc som den virtuelle gæst, bruger du i RDP-vinduet 127.0.0.1:5000 (det er den lokale loopback-adresse og din port). På en fjern-pc på det samme netværk skal du gøre det samme, men skriv “<ipv4 address>:5000”, og klik på “Connect”.

Fra en kommandoprompt kan du skrive “mstsc -v <ipv4 address>:5000” og opnå det samme resultat.

Vi kan lige nævne, at Oracle understøtter begrænset fjern-USB-adgang. En VirtualBox-gæst kan få adgang til fjerncomputerens USB-enheder, hvorpå VRDP-dataene bliver vist, ligesom USB-enhederne er forbundet til den aktuelle vært. Problemet er, at Oracle kun leverer en Linux-RDP-klient, der er i stand til det.


Dette er de tre vigtigste tilstande til virtualisering af gpu-adgang og deres funktioner.

Virtuel grafik

Hvis du er interesseret i fjernadgang, skal du også kende til headless-tilstand. Den starter VM’en uden et vindue og er udelukkende til fjernadgang. Man kan starte den fra GUI’et ved at klikke pil nedad ved siden ad Start-knappen.

Det sidste store område inden for virtualisering, der skulle håndteres, var gpu’er. Komplette virtualiseringsløsninger begyndte først at komme frem i midten af 2010’erne, men de henvendte sig kun til virksomheder og professionelle. Tjenester som Nvidia GRID, der bliver brugt til at drive GeForce NOW-tjenesten, og AMD Radeon MxGPU betyder, at gpu- og beregningskapacitet kan blive leveret fra datacentre til netforbundne arbejdsstationer i et sikkert miljø. På grund af de omkostninger, der er forbundet med disse specialistområder, er meget af denne teknologi ikke nået frem til forbrugerne.

Et område, der er nået igennem, er PCI
Passthrough. Det bliver leveret af virtualiseringssoftware ved hjælp af generisk gpu-hardware og rummer ikke egentlig virtualiseringsabstraktion. Det giver høj ydelse og er nemt at arrangere, men det har et ødselt forbrug af hardware, idet kun ét gæste-operativsystem kan bruge gpu’en, og værten er også lukket ude.

En anden generisk softwareløsning hedder API-forwarding eller API-remoting. Ved hjælp af en speciel virtuel gpu-driver på gæsten bliver eventuelle 3D-kald til gpu-API’et videresendt til værtssystemet, hvor de bliver kørt på den rigtige gpu-hardware. Fordelen er, at flere gæster kan få adgang til gpu’en. Ulempen er effektiviteten – ydelsen er i bedste fald 80 procent, men den kan komme ned på 15 procent, afhængigt af de kald, der bliver afviklet. Der er også sikkerhedsproblemer, idet man kan dele hukommelsen mellem flere gæster af hensyn til effektiviteten. Der er dog den fordel, at man kan netværksoverføre kald og dermed opnå øget fleksibilitet.

En ideel fuldt virtualiseret løsning bør give fuld API-kompatibilitet, det vil sige support til OpenGL 4.x, DirectX 11/12, OpenCL og CUDA med høj ydelse og delt hardware mellem gæster og værter. Det var været den sidste anstødssten for den virtuelle verden til trods for de anselige pengesummer, der flyder rundt om for eksempel Nvidia, AMD og Intel.

Nvidia tilbyder en række virtualiseringsløsninger, herunder Virtual Compute Server (vCS), Quadro Virtual Data Center Workstation (vDWS), GRID Virtual PC (vPC) og Virtual vApps. AMD har sin AMD MxGPU-teknologi, der leverer op til 16 VM’er pr. gpu over et netværk. Den kom i 2017 med firmaets Radeon Instinct-serie, som sigtede på deep learning-netværksløsninger. Men alt dette henvender sig til virksomheder og professionelle.

Den eneste udbredte gpu-virtualiseringsteknologi til forbrugere kommer fra Intel som del af Intel Graphics Virtualization Technology (GVT). Tidlige versioner af den blev lanceret af Intel i 2014/2015. Den er blevet præsenteret i tre former og burde fungere sammen med 5. generations-processorer (Broadwell) og senere på Intels integrerede grafik.

Intel tilbyder GVT-d, GVT-s og GVT-g. Den første, -d, er direkte passthrough, og det er ikke netop ideelt. Den er værd at overveje til enkelte VM’er, men det er ikke muligt at bruge den indbyggede Intel-grafik til den primære skærm. Bogstavet “-s” står for “Shared” og gør det muligt for flere virtuelle gæster at få adgang til en enkelt fysisk gpu via API-forwarding. Der er mere fleksibelt i tilfælde af flere gæster, men der er ingen gpgpu-support og igen ingen værtsadgang.

Den løsning, som alle ville være interesseret i, er GVT-g og dens komplette gpu-virtualisering, fuld API-support, næsten fuld ydelse og delt adgang. Intels virtuelle driver understøtter op til syv virtuelle gæster oven på værten.

Den dårlige nyhed er, at der overhovedet ikke er nogen Windows-værtssupport til dette. Vi gætter på, at det skyldes, at man skal opdatere og konfigurere kernen for at håndtere de omdirigerede virtuelle kald, og Microsoft har ikke nogen interesse i at investere ressourcer for at bringe det inden for forbrugernes rækkevidde.

Der findes en Linux-værtsløsning (selvfølgelig gør det det), men den er temmelig kompliceret. Når man har fået den arrangeret, får man gpu-acceleration med næsten fuld hastighed på Ubuntu- og Windows 7/8/10-gæsteoperativsystemer. Den er derfor af reel værdi for udviklere, der ønsker adgang til flere styresystemer.


Et dybere kig på, hvordan Intels GTV-g-system arbejder sammen med Xen-arkitekturen.

Virtuel Orkestrering

Mens vi ledte efter en “nem” virtualiseringsløsning, der understøttede de forskellige gpu-passthrough-tilstande, faldt vi over projektet http://xcp-ng.org. Det er en nem server-virtualiseringsløsning, der bygger på Linux-projektet XenProject.org.

Hvis man har dedikeret hardware til rådighed, og man ønsker at køre og håndtere virtuelle maskiner, er den værd at overveje. Husk imidlertid, at der er tale om en serverinstallation, og den er beregnet til at overtage hele maskinen/installationsdrevet og blive fjernadministreret. Hvis du har et ekstra drev, kan du udskifte det eksisterende bootdrev på en maskine og give denne løsning en chance. Når den er installeret og i gang (det tager kun få minutter), er den beregnet til at køre i headless-tilstand (uden skærm), og man kan derfor styre den fra et web-interface, men til Windows-brugere vedligeholder miljøet et uofficielt Windows XCP-ng Center, https://github.com/xcp-ng/xenadmin på v20.04 (siden april 2020).

Den gode nyhed for os er, at hvis man har den rette hardware, kan XCP-ng understøtte gpu-passthrough på virtuelle gæster. Til Intel-grafik er det GVT-p og GVT-g; hvis man har “dumme” forbruger-gpu’er, giver den direkte passthrough, men hvis man har adgang til tungere kort som Nvidia Quadro eller AMD MxGPU-kapable Radeon Pro/FirePro-kort, kan man opnå komplet gpu-virtualisering.

Hvis du vil prøve en fuld hypervisor-løsning, får du her anvisninger på, hvordan du får den installeret og op at køre med gpu-passthrough. Men du må selv finde ud af de små skridt undervejs – det er en professionel løsning, og du skal derfor være forberedt på at læse en anselig manual.

Gå til https://xcp-ng.org/#easy-to-install, og hent installations-ISO’et. Skriv det til et USB-drev, og boot dit ekstra “server”-system med det. Sørg for, at du kender det korrekte tomme drev, du kan installere det på – du kan også bruge det til at gemme de virtuelle maskiner. Når du bliver bedt om det, bruger du de lokale filer og ignorerer add-ons. Du bliver bedt om at oprette et kodeord. Husk det, for du skal bruge det til fjern-login. Hvis alt går glat, genstarter maskinen til en klassisk DOS-agtig XCP-ng-hovedmenu, der meddeler dig ip-adresserne på pc’en, men det kan du ignorere.

På en anden netværksforbundet pc downloader du den seneste udgave af XCP-ng Center og installerer den. Sørg for, at din XCP-ng-server kører på det samme netværk, og vælg “Add Server.” Skriv dens ip-adresse og det kodeord, du har oprettet. Vi anbefaler afgjort, at du bruger en netværksdelt mappe til at gemme dine ISO-images til installation af virtuelle gæster. Sjovt nok havde vi allerede en kørende. Vælg serveren, klik New Storage > ISO Library > Windows File Sharing. Du skal bruge netværksstien til din server //<server name>/<iso folder>, hvis du har valgt offentlig adgang, og du skal bruge brugernavn-gæsten, ellers går du på med adgangsoplysningerne.

Brug “New VM” til at oprette en virtualiseret gæst. Vi satser på Windows 10 – på dette stade minder det meget om VirtualBox at oprette en VM, men i “Installation Media” får du en rullemenu med dine gemte ISO-filer. Vi ville tilføje gpu’en senere – hvis der opstår nogen problemer, ender man med en blank skærm. Før du starter VM’en, skal du boote dit dvd-image. Vælg VM > General > Properties > Boot options, og flyt dvd’en op i tippen. Klik “OK”. Start VM’en, og gå til fanen “Console” for at interagere med VM’en og installere dit operativsystem.

Det var det – en hurtig gennemgang af den aktuelle virtuelle verden fra enkeltstående virtuelle gæster i VirtualBox til superorkestrerede gæster, der bruger Xen og XCP-ng sammen med gpu-virtualisering. 


En XCP-ng-server, der kører i al sin DOS GUI-pragt.

Hardware-acceleration i cpu’en

Enhver processor, der er lavet i de seneste 15 år (siden lanceringen af Intels Core-serie), har sandsynligvis en form for hardware-virtualisering. AMD fulgte Intel et år efter i 2006 og føjede de første hardware-udvidelser til sine Athlon 64 “Orleans”-modeller og Phenom II-processorer. 

Tidligere blev disse funktioner sommetider slået fra i BIOS, og selv i dag kan der være BIOS-virtualiserings-løsninger, som er gemt af vejen.

Hardware-virtualisering inddrager interne hardwaresystemer, der gør det muligt for processoren hurtigere at skifte processortilstand fra værtsstyresystemet til den virtuelle gæst. Hardware-udvidelserne betyder, at et hypervisor effektivt kan skifte hele cpu-konteksten mellem det lokale operativsystem og hypervisor-VM-kode med henblik på at registrere interrupt-håndtering og instruktionskald og kritisk håndtere oversigten over hukommelseskald sideløbende med I/O- og DMA-adgang.

Både AMD og Intel har indført en række processorfunktioner. De første funktioner, der hedder Intel-x og AMD-v, leverer instruktioner om hurtigt at give gæsten en privilegeret tilstand. AMD har også tilføjet Rapid Virtualization Indexing efterfulgt af Intel EPT, der virtualiserer opslag i hukommelses-sidetabeller. Benchmarks viser, at de øger ydelsen på kerneniveau op til fem gange afhængig af belastningen.

AMD-Vi og Intel VT-d leverer en enhed til I/O-hukommelsesstyring, der bliver kaldt PCI Passthrough. Den gør det muligt for gæsteoperativsystemet at få adgang til hardware tilsyneladende direkte via en oversættelsestabel på værten. Både processor og bundkort skal understøtte funktionen, og det kan være nødvendigt at aktivere den i BIOS.

På baggrund af I/O-funktionerne blev virtual interrupt-support tilføjet kort efter IOMMU. AMD med sin AVIC (Advanced Virtual Interrupt Controller) og Intel med sin APICv. De er begge beregnet til at route virtual interrupts til den korrekte fysiske cpu.