După 11 luni de dezvoltare, a fost publicat instrumentul CRIU 4.3 (Checkpoint and Restore In Userspace), destinat salvării și restaurării proceselor în spațiul utilizatorului. Instrumentul permite salvarea stării unui grup de procese și continuarea lucrului de la poziția salvată, inclusiv după repornirea sistemului sau pe un alt server fără întreruperea conexiunilor de rețea deja stabilite. Codul proiectului este scris în limbajul C și este distribuit sub licența GPLv2. CRIU este utilizat în sisteme de gestionare a containerelor, precum OpenVZ, LXC/LXD și Docker. Modificările necesare pentru funcționarea CRIU sunt incluse în nucleul Linux de bază.
Printre domeniile de aplicare ale tehnologiei CRIU se numără asigurarea repornirii sistemului de operare fără a întrerupe continuitatea executării proceselor pe termen lung, migrarea live a containerelor izolate, accelerarea pornirii proceselor lente (se poate începe de la un stadiu salvat după inițializare), efectuarea actualizărilor nucleului fără a reporni serviciile, salvarea periodică a stării sarcinilor de calcul prelungite pentru a relua activitatea în caz de întreruperi neașteptate, echilibrarea încărcăturii pe noduri în clustere, duplicarea proceselor pe o altă mașină (fork pe un sistem îndepărtat), realizarea de instantanee ale aplicațiilor utilizator în timpul funcționării pentru analiză pe un alt sistem sau în cazul în care este necesară anularea acțiunilor ulterioare în program.
În noua versiune:
- A fost implementată posibilitatea de comprimare a blocurilor și paginilor de memorie folosind algoritmul LZ4 și de decompresie multithread.
- Performanța a fost îmbunătățită datorită utilizării intrării și ieșirii asincrone (AIO) la restaurarea paginilor VMA (Virtual Memory Area), unei noi metode de oprire a sarcinilor fără a folosi puncte de oprire hardware și paralelizării restaurării memfd și memoriei partajate anonime.
- A fost adăugat suport pentru extensia ARM64 GCS (Guarded Control Stack), care asigură protecția hardware a adreselor de întoarcere din funcții. După transferul controlului la funcție, adresele de întoarcere sunt salvate de către procesor nu doar în stiva normală, ci și într-o stivă secundară care nu poate fi modificată direct. Înainte de ieșirea din funcție, adresa de întoarcere este extrasă din stiva secundară și verificată cu adresa de întoarcere din stiva principală.
- A fost adăugat un backend pentru salvarea stării API-ului driverului NVIDIA CUDA.
- A fost asigurat restaurarea mapării GPU.
- Pentru driverul amdgpu, a fost implementată salvarea și restaurarea stării bufferelor subsystemului DRM (Direct Rendering Manager) și a descriptorilor de fișiere DMA-BUF.
- Au fost adăugate comenzi pentru comprimarea și decompresarea imaginilor de memorie în modul offline.
- A fost adăugat suport pentru salvarea și restaurarea informațiilor despre asocierea identităților UID cu socketurile de rețea.
- A fost adăugată opțiunea „—image-io-mode” pentru citirea și scrierea imaginilor paginilor de memorie în modul O_DIRECT (o ocolire a cache-ului pe pagini).
Sursa: opennet.ro
