Etter 11 måneders utvikling er verktøysettet CRIU 4.3 (Checkpoint and Restore In Userspace) publisert, og det er designet for å lagre og gjenopprette prosesser i brukerområdet. Verktøysettet lar deg lagre statusen til en eller flere prosesser, for deretter å gjenoppta arbeidet fra den lagrede posisjonen, inkludert etter systemomstart eller på en annen server uten å avbryte allerede etablerte nettverkstilkoblinger. Koden til prosjektet er skrevet i C og distribueres under GPLv2-lisensen. CRIU brukes i containerstyringssystemer som OpenVZ, LXC/LXD og Docker. Nødvendige endringer for å bruke CRIU er inkludert i hovedkjernen til Linux.
Som bruksområder for CRIU-teknologien nevnes muligheten for omstart av operativsystemet uten å underbrekke kontinuiteten av langvarige prosesser, live-migrering av isolerte containere, akselerering av oppstart av langsomme prosesser (kan starte med en tilstand lagret etter initialisering), oppdatering av kjernen uten å starte tjenestene på nytt, periodisk lagring av status for langvarige beregningsoppgaver for å gjenoppta arbeidet i tilfelle av brudd, lastbalansering på noder i klynger, duplisering av prosesser til en annen maskin (fork til et eksternt system), og opprettelse av snapshots av brukerprogrammer under drift for analyse på et annet system eller i tilfelle det er behov for å tilbakestille videre handlinger i programmet.
I den nye utgaven:
- Muligheten for komprimering av blokker og minnesider ved hjelp av LZ4-algoritmen og flertrådet dekomprimering er implementert.
- Ytelsen er forbedret takket være bruk av asynkron inn- og utdata (AIO) under gjenoppretting av VMA-sider (Virtual Memory Area), en ny metode for å stoppe oppgaver uten bruk av maskinvarepunkt for stopp, samt parallellisering av gjenoppretting av memfd og anonym delt minne.
- Støtte for ARM64 GCS (Guarded Control Stack) er lagt til, noe som gir maskinvarebeskyttelse av returadresser fra funksjoner. Etter at kontrollen er overført til en funksjon, lagres returadresser av prosessoren ikke bare i den vanlige stakken, men også i en egen skyggestakk som ikke kan endres direkte. Før utgang fra funksjonen hentes returadressen fra skyggestakken og sammenlignes med returadressen fra hovedstakken.
- Backend for lagring av tilstanden til NVIDIA CUDA-driverens API er lagt til.
- Restaurering av GPU-mapping er sikret.
- For amdgpu-driveren er lagring og gjenoppretting av tilstanden til DRM (Direct Rendering Manager)-buffersystemet og DMA-BUF filbeskrivelser implementert.
- Benyttede kommandoer for komprimering og dekomprimering av minnebilder i offline-modus.
- Støtte for lagring og gjenoppretting av UID-identifiseringsbindinger til nettverks-sokler er lagt til.
- Alternativet «—image-io-mode» for å skrive og lese minnesidebilder i O_DIRECT-modus (bypasser sidestabelen) er lagt til.
Kilde: opennet.ru
