Realtime hypervisors

advertisement
/technologie
Realtime hypervisors
Vir tualisatie voor industriële toepassing
We gaan links! Nee, we gaan rechts!
Een auto met twee bestuurders, dat is onmogelijk en onverstandig.
Toch gebeurt iets soortgelijks wel op moderne computers.
Dankzij virtualisatie kunnen meerdere besturingssystemen tegelijk
werken op één computer. Ze delen de CPU, de harde schijf en het
werkgeheugen, zonder elkaar in de weg te zitten. De besturingssystemen zijn zo goed van elkaar gescheiden dat ze geen weet van
elkaar hebben.
De software die virtualisatie mogelijk maakt, heet hypervisor, ook
wel de Virtual Machine Manager (VMM) genoemd. Dit is een laag
tussen het besturingssysteem en de computerhardware die regelt
dat alle besturingssystemen dezelfde hardware kunnen gebruiken,
alsof zij de enige zijn die op de hardware draaien. Dit klinkt eenvoudig,
in de praktijk zijn er echter verschillende toepassingsgebieden
voor virtualisatie die hieraan allemaal verschillende eisen stellen.
Ook zijn er verschillende vormen van virtualisatie met bijbehorende
voor- en nadelen. Dit maakt het juist toepassen van virtualisatie
uiteindelijke lastig, maar gelukkig niet zo lastig als een auto met
twee bestuurders.
Meerdere systemen op één pc
Makers van geavanceerde apparatuur zoals medische scanners
en elektronenmicroscopen gebruiken nu nog aparte pc’s voor
verschillende soorten toepassingen, bijvoorbeeld een realtime
regelsysteem, een rekensysteem en een presentatiesysteem.
Virtualisatie met realtime hypervisors maakt het mogelijk om deze
in karakter sterk verschillende systemen samen te voegen op één
computer. Een moderne en hiervoor gespecialiseerde hypervisor
laat een realtime systeem probleemloos draaien naast een
algemeen (niet realtime) systeem zoals Windows. Door systemen
samen te voegen zijn minder pc’s nodig, dat resulteert in minder
onderhoud en uitval, minder energieverbruik en een kleinere
footprint. Toch bestaat er een zekere reserve bij industriële
gebruikers. ‘Gaat dat wel goed, als ik die belangrijke systemen op
één pc zet? Ik wil niet dat mijn machines stilvallen.’ Deze argwaan
werpt een drempel op om professionele systemen te virtualiseren.
Maar is die argwaan terecht? Wat zijn eigenlijk de mogelijkheden
en beperkingen van virtualisatie met een hypervisor?
Virtualisatie is niet nieuw
Al in de jaren zestig gebruikte IBM virtualisatie op zijn mainframes.
Intel komt historisch uit een hele andere hoek met zijn microprocessor. Dat was aanvankelijk een simpele chip, die dankzij de
wet van Moore een enorme ontwikkeling heeft doorgemaakt.
Oorspronkelijk was virtualisatie in dergelijke processoren niet goed
geregeld omdat daar simpelweg geen behoefte aan was. De eerste
generatie virtualisatie producten voor pc’s kon alleen werken bij de
gratie van vele software trucjes die er de oorzaak van waren dat
alles erg traag werd. Dankzij de wet van Moore is een moderne
processor veel krachtiger en is uitgerust met veel intelligentie voor
onder andere efficiënte virtualisatie. Eigenlijk zijn we op een punt
beland waarbij de belangrijkste taak van een processor is om te
wachten op de harddisk, het netwerk of de gebruiker. De CPU’s zijn
zo krachtig dat het zonde is om er niet meer uit te halen. Dat kan
met technieken uit de mainframe-wereld.
>>de CPU’s zijn zo krachtig dat het
zonde is om er niet meer uit te halen
Hosted configuratie: host- en gast-OS
Een eerste stap in die richting vormde virtualisatie binnen een
besturingssysteem. Op een draaiend besturingssysteem (de host),
bijvoorbeeld Linux of Windows, wordt met virtualisatietechnologie
een omgeving gemaakt waarin een tweede besturingssysteem
(de gast) kan draaien. Een situatie die bijvoorbeeld met de
stijgende populariteit van Apple-computers bekend is geworden.
Overstappers naar de Mac die toch Windows software willen
gebruiken, kunnen met Parallels of VMware Fusion een Windowsomgeving binnen het Mac OS X openen. Alle hardwarekoppelingen
van de Windows-sessie worden gesimuleerd door de virtualisatie
software. Ook gebruiken ontwikkelaars virtualisatiemogelijkheden
graag om vanachter één computer meerdere besturingssystemen
te kunnen gebruiken tijdens software- en systeemontwikkeling.
Gezien de beperkingen van de oudere Intel-processors was het
host/gast-model een voor de hand liggend begin van virtualisatie.
Dit model van virtualisatie wordt gerealiseerd door een combinatie
van simulatie en virtualisatie en vergt slimme software in de kernel
en drivers van het host- en gast-OS. De host/gast-vorm van
virtualisatie wordt nog steeds veel gebruikt door desktopgebruikers:
het is gemakkelijk te installeren en biedt voor veel desktoptoepassingen interessante mogelijkheden om verschillende OS-en
naast elkaar te kunnen gebruiken.
De cloud en virtualisatie
In de Enterprise-wereld is vandaag de dag de cloud een veel
gehoorde term. Voor deze wereld is de cloud een verzameling van
online beschikbare rekenkracht. Bedrijven als Google en Amazone
zouden zonder de cloud niet kunnen bestaan. Flexibiliteit en
schaalbaarheid zijn eigenschappen van de cloud. Virtualisatietechnieken zijn essentieel voor deze aspecten van de cloud.
Omgekeerd is de vraag vanuit de Enterprise-wereld naar efficiënte
virtualisatietechnologie er primair verantwoordelijk voor dat
bedrijven zoals Intel hierin veel geld hebben geïnvesteerd.
Vanwege de grote (en winstgevende) investeringen zijn de
moderne processoren voorzien van zeer effectieve ondersteuning
voor virtualisatie. Waar vroeger de hypervisor overal tussen zat,
worden nu de processor en hardware ingezet voor de belangrijkste
stappen van virtualisatie.
In de cloud wordt virtualisatie met veel succes toegepast op
enorme aantallen servers waarop allerhande toepassingen in
virtuele machines draaien. Als het druk is, gebruiken ze veel
resources zoals CPU, geheugen en schijfruimte. Maar wordt het
rustig, dan kunnen meerdere virtual machines op één serversysteem
draaien en de rest van de servers gaat uit. Wordt het drukker,
dan verdeel je de toepassingen weer over meer servers.
Typische kenmerken van deze situatie zijn dat resources (CPU’s,
geheugen, opslag en netwerk) worden gedeeld en dat de
toegepaste OS-en gelijksoortig zijn. Daarnaast is een belangrijke
eigenschap dat je eenvoudig een virtuele machine met een
toepassing kunt ‘bevriezen’ en verhuizen naar een andere server
zonder dat online gebruikers dit merken.
Windows
Multicore CPU
RTOS
App
Stand-alone configuratie: naast elkaar
Bij het host/gast-virtualisatiemodel is er duidelijk sprake van een afhankelijkheid tussen
de OS-en. De scheduler van de gast lift mee op de scheduler van de host. Ook geldt dat
een gast meer moeite heeft om hardware devices, zoals een netwerkadapter, te bereiken
omdat de host ertussen zit. Dit virtualisatiemodel is daarom minder geschikt voor het
combineren van OS-en met een verschillend karakter zoals een realtime toepassing en
een Windows-presentatiesysteem. Zo is het vrijwel onmogelijk een realtime besturingssysteem te draaien binnen een niet-realtime gastheer, en wat te denken van de situatie
dat het host-OS faalt? Dit soort uitdagende combinaties zijn beter te realiseren als deze
afhankelijkheid er niet is.
App
OS
Hardware
Situatie zonder hypervisor
Guest-VM
App
App
App
Drv
Drv
App
Guest-OS
Hypervisor
Host OS
Drv
Hardware
Dev
Bij het standalone-virtualisatiemodel draaien de verschillende besturingssystemen
onafhankelijk van elkaar en naast elkaar. Maar dit lijkt mooier dan het is. Waar zit nu de
device driver van de harddisk? Je zou de drivers nu in de hypervisor kunnen leggen maar
dan hebben we eigenlijk het host/gast-model weer terug en een complexere hypervisor.
Maar als we iets verder nadenken over de asymmetrische configuratie (realtime OS +
algemeen OS) komen we echter tot de conclusie dat we resources eigenlijk niet willen
delen maar vooral willen verdelen. In de asymmetrische situatie kunnen resources zoals
de harddisk en de grafische kaart vaak direct worden toegewezen aan de Windows VM,
terwijl een PCIe-kaart die voor de realtime VM (en voor het realtime gedrag) van belang
is toegewezen kan worden aan de realtime VM. De realtime hypervisor is een hypervisor
die gespecialiseerd is in deze asymmetrische configuratie.
Een punt is nog wel dat de hypervisor nu nog steeds verantwoordelijk is voor het
afhandelen van allerlei events tussen de VM’s en de hardware zoals interrupts, DMAtransfers en I/O. Dit komt doordat er met de hypervisor een nieuwe conceptuele laag is
geïntroduceerd met weer een nieuwe adresruimte. De hardware weet in principe niets
van deze adrestranslaties tussen de lagen en is dan ook niet zondermeer in staat om
het geheugen van een VM te bereiken of om een interrupt direct af te leveren aan een
CPU in de VM-context. Om deze reden zit de hypervisor software overal nog tussen
en doet afbreuk aan het harde realtime gedrag.
Host-/Gast hypervisor configuratie
GP-VM
App
Drv
Virtual
machines
RT-VM
App
GP-OS
App
RT-OS
App
OS1
App
Drv
App App App App
Virtualisatie
laag
App
App
OS2
Hypervisor
(sw product)
App
OS3
Virtualisatie Hardware Assist
(b.v. VT-x, VT-d)
Hypervisor
Dev
Hardware
Dev
Hardware
(geheugen, cores, interrupts, DMA, PCle)
HW Platform
Hardware
Realtime hypervisor configuratie
Software
Moderne processoren voeren deeltaken van virtualisatie uit in hardware
>>realtime hypervisors toepassen
blijft maatwerk
Direct Assignment
Processorbouwers streven er naar om de verschillende besturingssystemen in hun VM zo efficiënt mogelijk met de hardware te laten
werken. In moderne processoren voegen ze daarom steeds meer
voorziening toe voor hardwarematige ondersteuning van
virtualisatie. Het doel is de hypervisor te ontlasten van een aantal
kritische taken zoals interruptverwerking. De nieuwere generatie
Intel-processoren biedt niet alleen goede ondersteuning voor
het virtualiseren van de CPU (VT-x), maar biedt nu ook goede
hardware ondersteuning voor het virtualiseren van I/O (interrupts,
DMA transfers, I/O aansturing) met de VT-d technologie.
Intel noemt deze hardware-ondersteuning Direct Assignment
(VT-d). De hardware van bijvoorbeeld een ethernetkaart krijgt met
deze hardware-ondersteuning wel direct toegang tot het geheugen
van de VM en zodra het daarin heeft geschreven volgt een interrupt
die wel rechtstreeks naar de CPU in de VM-context gestuurd wordt
ter signalering van het afgeleverde bericht. Deze technologieën
sluiten naadloos aan bij de PCI-express architectuur die veel
gebruikt wordt voor allerlei I/O.
Zo verschuift steeds meer zwaar werk van software (hypervisor)
naar hardware. De rol van de hypervisor verandert van ‘actieve
deelnemer’ naar ‘configurator’ of ‘facilitator’. Dat betekent ook dat
de hypervisor voor dit virtualisatiemodel als eerste moet opstarten.
Aan de hand van bijvoorbeeld een configuratiebestand gaat hij
daarna de besturingssystemen laden, stukken geheugen en
hardware devices toekennen aan besturingssystemen. Daarna kan
de hypervisor (software-deel van virtualisatie) een stapje terug
doen en is de hardware-ondersteuning er voor de uitvoering.
Volwassen
In de nieuwste generatie hypervisors krijgt elk proces een eigen
stuk geheugen toebedeeld, zodat processen niet meer in elkaars
geheugen kunnen schrijven. Deze isolatie voorkomt dat fouten in
software of I/O van het ene systeem een ander systeem doen
crashen. Als Windows een blauw scherm krijgt door een fout met
een device driver, dan blijft het andere besturingssysteem
doordraaien.
Het virtualisatieconcept is dus volwassen genoeg om twee totaal
verschillende systemen toch goed te laten presteren op dezelfde
hardware. Virtualisatie is daarmee een serieuze optie geworden
voor bedrijfskritische systemen waarbij meerdere toepassingen
geconcentreerd kunnen worden op minder hardware.
Toepassingen waar realtime gedrag wordt geëist, zien we steeds
vaker naast een standaard besturingssysteem op één pc. Het
toepassen van realtime netwerktechnologie zoals EtherCAT betekent
dat een EtherCAT mastercomponent in een pc de realtime cyclus
moet dicteren. Bij de gratie van de efficiënte realtime hypervisors
kan dit tegenwoordig prima werken. Steeds meer bedrijven zien dit
en passen deze technologie toe.
Maatwerk
Hoe volwassen hypervisortechnologie ook is, het blijft maatwerk
om realtime hypervisors toe te passen op een pc. Je moet de
hypervisors kennen om te weten welke technologieën leveranciers
wel en niet toepassen in hun producten. We zien veel dat hypervisorproducten technisch ver achter lopen omdat zij het verleden
met zich meeslepen en ook de oude CPU-architecturen nog
moeten ondersteunen. De glanzende brochures vertellen hier
natuurlijk niets over. Pas als je onder de motorkap kijkt, zie je of
de hypervisor werkelijk de nieuwste technologie toepast en het
onderste uit de kan haalt. Daarnaast geldt dat hypervisors de
resources zo goed mogelijk van elkaar zullen scheiden maar
sommige resources bijna per definitie moeten worden gedeeld.
De bus naar het geheugen is hier een voorbeeld van. Als een
toepassing in de ene VM de bus extreem belast gaat de andere
toepassing dit uiteindelijk ook merken.
Het pc-platform heeft een inherent moeilijk voorspelbaar gedrag
en dat blijft zo bij virtualisatie. Dus valt moeilijk te voorspellen of
alles gaat werken zoals bedacht. Technolution heeft een aantal
realtime hypervisors aan de tand gevoeld en in demo-opstellingen
toegepast. Sommige hypervisor producten leveren zeer
bemoedigende resultaten qua stabiliteit en realtime gedrag, zoals
een niet (of nauwelijks) toenemende interrupt latency en jitter.
Kortom, realtime hypervisors bieden een efficiënte oplossing,
mits je weet hoe je deze technologie het beste inzet.
Download