En VM-exit er en central mekanisme i virtualisering. Den opstår, når en virtuel maskine, også kaldet en guest, midlertidigt stopper sin normale kørsel, så kontrollen overgår til hypervisoren, som er laget der styrer de virtuelle maskiner. Det sker typisk, når den virtuelle maskine udfører en instruktion eller udløser en hændelse, som hypervisoren skal håndtere direkte.
Hvad sker der ved en VM-exit?
Når en VM kører, forsøger processoren at lade den arbejde så direkte som muligt for at opnå høj ydeevne. Men visse handlinger kræver, at hypervisoren tager over. Det kan for eksempel være adgang til bestemt hardware, særlige processorinstruktioner, afbrydelser eller forsøg på at ændre systemkritiske indstillinger.
Ved en VM-exit gemmes den virtuelle maskines tilstand, hvorefter hypervisoren undersøger årsagen til afbrydelsen og beslutter, hvad der skal ske. Når arbejdet er udført, kan systemet vende tilbage til den virtuelle maskine i en såkaldt VM-entry. Denne skiften mellem gæstesystem og hypervisor er nødvendig for sikkerhed og kontrol, men den koster også tid.
Hvorfor er det vigtigt for ydeevne?
VM-exits er ikke fejl i sig selv. De er en normal del af, hvordan virtualisering fungerer. Men hvis de sker meget ofte, kan de forringe ydeevnen mærkbart. En server, der håndterer mange I/O-operationer, afbrydelser eller privilegerede instruktioner, kan opleve flere VM-exits og dermed større overhead.
I praksis er det derfor et vigtigt mål i drift og optimering at reducere unødvendige VM-exits. Hypervisorer, operativsystemer og moderne processorer er designet til at begrænse dem, så virtuelle miljøer bliver hurtigere og mere effektive.