Na 11 maanden ontwikkeling is de release van de CRIU 4.3-toolkit (Checkpoint and Restore In Userspace) gepubliceerd, die is ontworpen voor het opslaan en herstellen van processen in de gebruikersruimte. De toolkit maakt het mogelijk de status van één of meerdere processen op te slaan en vervolgens voort te zetten vanaf de opgeslagen positie, inclusief na een systeemherstart of op een andere server zonder al gevestigde netwerkverbindingen te verbreken. De projectcode is geschreven in C en wordt verspreid onder de GPLv2-licentie. CRIU wordt toegepast in containerbeheersystemen zoals OpenVZ, LXC/LXD en Docker. De noodzakelijke wijzigingen voor de werking van CRIU zijn opgenomen in de hoofdversie van de Linux-kernel.
Toepassingsgebieden van de CRIU-technologie omvatten het mogelijk maken van herstart van het besturingssysteem zonder de continuïteit van langlopende processen te verstoren, live-migratie van geïsoleerde containers, versnelling van de opstart van trage processen (je kunt beginnen met de staat die is opgeslagen na de initialisatie), het uitvoeren van kernel-updates zonder de services opnieuw op te starten, periodiek opslaan van de toestand van langlopende rekenopdrachten voor hervatting in geval van een crash, belastingverdeling op knooppunten in clusters, duplicatie van processen naar een andere machine (fork naar een externe systeem), het maken van snapshots van gebruikersapplicaties tijdens het werken voor analyse op een ander systeem of voor het geval toekomstige actie in het programma ongedaan moet worden gemaakt.
In de nieuwe release:
- De mogelijkheid voor compressie van geheugenblokken en -pagina's is geïmplementeerd met behulp van het LZ4-algoritme en multithreaded decompressie.
- De prestaties zijn verbeterd door gebruik te maken van asynchrone invoer/uitvoer (AIO) bij het herstellen van VMA (Virtual Memory Area)-pagina's, een nieuwe methode voor het stoppen van taken zonder gebruik te maken van hardware-onderbrekingen, en het paralleliseren van het herstel van memfd en anonieme gedeelde geheugen.
- Ondersteuning toegevoegd voor de ARM64 GCS (Guarded Control Stack) uitbreiding, die hardwarematige bescherming van retouradressen uit functies waarborgt. Na het overdragen van de controle aan een functie, worden de retouradressen door de processor niet alleen in de gewone stack opgeslagen, maar ook in een aparte schaduwstack, die niet direct kan worden gewijzigd. Voor het verlaten van de functie wordt het retouradres van de schaduwstack gehaald en vergeleken met het retouradres van de gewone stack.
- Een backend voor het opslaan van de toestand van de NVIDIA CUDA-driver API is toegevoegd.
- Herstel van GPU-mapping is gegarandeerd.
- Voor de amdgpu-driver is het opslaan en herstellen van de toestand van DRM (Direct Rendering Manager)-buffers en DMA-BUF-bestandshandvatten geïmplementeerd.
- Opdrachten voor compressie en decompressie van geheug beelden in offline-modus zijn toegevoegd.
- Ondersteuning toegevoegd voor het opslaan en herstellen van informatie over de koppeling van UID-identificatoren aan netwerk-sockets.
- Een optie ‘—image-io-mode’ is toegevoegd voor het schrijven en lezen van afbeeldingen van geheugenpagina's in O_DIRECT-modus (om het pagina-cache te omzeilen).
Bron: opennet.ru
