A Varnish Software, amely tartalomszolgáltató és gyorsítószerver-rendszerek fejlesztésével foglalkozik, bemutatta a TinyKVM nyílt projektet, amely a KVM hipervizor segítségével külön folyamatok végrehajtásának izolációs eszközeit fejleszti. A projekt célja a leggyorsabb sandbox-izolációs rendszer létrehozása, amely hardver alapú virtualizációt használ. A projekt kódja C és C++ nyelveken íródott, és GPLv3 licenc alatt terjesztik (a GPLv3 követelményeinek teljesítésére nem készülőknek kereskedelmi licenc áll rendelkezésre).
A TinyKVM célja, hogy elszigetelt módon indítson bármilyen Linux konzolos programot, teljesítménye közel áll a normál végrehajtáséhoz. A rendszerhívások végrehajtásához szükséges többletköltség körülbelül 2 mikroszekundum. A projekt alkalmazásainak példájaként említésre kerül a folyamatok további izolációja gyorsítószerverek és webes kérések feldolgozásában. A TinyKVM-ot a libriscv emulátor helyettesítésére fejlesztették ki, amelyet a webes kérések feldolgozásának izolálására használnak a Varnish platformon. Továbbá elkészült egy libvmod könyvtár változata, amely lehetővé teszi a TinyKVM használatával készült modulok Varnish-hoz való hozzákapcsolását.


TinyKVM használatával a programok gépi kódja emuláló rétegek nélkül fut, és a KVM hipervizor API-jával van korlátozva, ami lehetővé teszi a többletköltségek kizárását, és a virtualizáció nélküli végrehajtáshoz közeli teljesítmény elérését. A TinyKVM fő funkciói:
- A végrehajtás maximális időtartamának korlátozása. A program kényszerített leállítása történhet a timeout elteltével, jelzőkezelők és szálak meghívása nélkül.
- A memóriafogyasztás korlátozása.
- Lehetőség a nem inicializált példányok fork-lására virtuális gépekhez egy初始化过的程序isolált példányból. A virtuális gépek másolatai copy-on-write módban készülnek, ami jelentősen csökkenti a memóriahasználatot azáltal, hogy csak egy példányt tárol a megosztott adatokból.
- A leválasztott folyamatok visszaállíthatóak az előző állapotra (például egy leválasztott HTTP-kérelmet kezelő folyamat újraindítás nélkül visszatérhet az alapállapotába minden egyes kérés kezelését követően). Az elszigetelt folyamat példánya is visszaállítható egy másik virtuális gép állapotára, nem pedig arra, ahonnan leválasztották, de ez esetben a költségek magasabbak lesznek, mivel a memóriához tartozó oldalakat kell módosítani.
- Statikus memóriacímek létrehozásának lehetősége a kezdeti beállítás során, amelyek még a kifinomult runtime-okhoz is alkalmasak, például a Go nyelvben. Ebben az esetben a változtatás csak a másolásra írás módú oldalakon engedélyezett.
- Távvezérlés támogatása GDB segítségével. Lehetséges a futás közbeni hibakeresés, a végrehajtás folytatásával.
A TinyKVM vendégkörnyezet egy korlátozott magot képez, amely védett a módosításoktól, az oldalvédelmi funkciók bekapcsolásával, és a SMAP (Supervisor Mode Access Prevention) valamint a SMEP (Supervisor Mode Execution Prevention) használatával további elszigetelés érdekében a mag és a felhasználói tér között. A TinyKVM nagy memóriacímeit (hugepage) használ a teljesítmény növelése érdekében. A programok által kezdeményezett rendszerhívások az emulátor által kerülnek megfogásra és a gazda környezetbe irányítódnak (a végrehajtott hívás emulálásának és feldolgozásának késleltetése körülbelül 2 mikroszekundum). virtuális gépben Nem használnak semmilyen drivert, bemeneti/kimeneti eszközöket és virtuális eszközöket.

Forrás: opennet.ru
