/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.