VMX: Új Linux kernel patchek javítják az Intel beágyazott virtualizáció teljesítményét Linuxon

A KVM fejlesztői listára érkezett egy ötrészes kernel patch sorozat, amely a beágyazott VMX futtatásának szűk keresztmetszetét célozza meg. Fred Griffoul javaslata az úgynevezett „nem menedzselt” vendégmemória kezelését optimalizálja, vagyis azt az L1/L2 által használt tárterületet, amelyhez nem tartozik klasszikus kernel oldali lapstruktúra. Ilyen lehet a mem= paraméterrel kiosztott RAM vagy a guest_memfd nem bizalmas számítási környezetekben, ahol a KVM eddig minden L2 belépésnél és kilépésnél újratérképezte az érintett oldalakat. A javaslat célja ennek a „drága” map–unmap ciklusnak a megszüntetése, hogy az L2 kontextusváltások látványosan gyorsuljanak.

VMX: Új Linux kernel patchek javítják az Intel beágyazott virtualizáció teljesítményét Linuxon

A szűk keresztmetszet azonosítása és a pfncache visszahozása

A jelenlegi végrehajtásban az L2 vendég belépési és kilépési útvonalain a kvm_vcpu_map és kvm_vcpu_unmap hívások memremap és memunmap műveleteket indítanak a nem menedzselt oldalakon, miközben a futás közben gyakran ugyanazokat az oldalakat kell újra és újra elérni vagy továbbítani a vmcs02 mezőin keresztül. A sorozat ezt a mintát a kvm_host_map elhagyásával és a gfn_to_pfn_cache bevezetésével töri meg, visszaállítva és kiegészítve a „guest-uses-pfn” működést. Az alapvető gondolat az, hogy a L1-ből és a rendszeroldalakról érkező, gyakran használt lapok PFN-jei gyorsítótárba kerüljenek, így a VMX útvonal ismételt remappelés nélkül férhessen hozzájuk, a KVM pedig validált módon adhassa tovább őket az L2-nek.

Célzott gyorsítótárak az MSR-bitmaphez és az APIC oldalakhoz

A VMX működését érintő javaslat két típust emel ki a kritikus oldalak közül: Az első az L1 MSR-bitmap, amelyet az L1 és az L0 MSR-bitek „összehajtásához” olvasásra használ a rendszer; ehhez külön pfncache alapú útvonal érkezik, amely stabil, olvasható leképezést biztosít L2 be- és kilépéseknél is. A második csoport az APIC-hoz kötődő lapok: az APIC access oldal, a virtuális APIC oldal és a posted interrupt leíró. Ezek bonyolultabbak, mert a beágyazott VMX kód közvetlenül is hozzájuk fér, és ugyanakkor vmcs02 mezőként tovább is kell adni az L2 vendégnek. A pfncache „guest-uses-pfn” támogatásának helyreállítása és kiegészítése ezért elengedhetetlen, amit a sorozat külön patchben validációs ellenőrzésekkel is megtámogat, hogy a beállított fészkelt állapot következetes és biztonságos maradjon.

Önteszt és üzemeltetési hatás

A változtatásokhoz új önellenőrző teszt is érkezik, amely az APIC-hoz kapcsolódó gyorsítótár-invalidator logikát és a memslot-frissítések mellett történő koherenciát vizsgálja. Az elvárt gyakorlati következmény a L2 belépés–kilépés ciklusok gyorsulása és a CPU-idő csökkenése olyan vendégeknél, amelyek jelentős mennyiségű nem menedzselt memóriát használnak. A fejlesztői ágról elérhető sorozat így egyértelműen a nested VMX kritikus forróösvényeit célozza, csökkentve a memóriatérképezés költségeit, miközben a KVM állapotgép konzisztenciáját új ellenőrzésekkel védik. A kezdeményezés, ha beolvasztásra kerül, a beágyazott virtualizációt használó felhő- és tesztkörnyezetekben kézzelfogható teljesítményjavulást hozhat.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.