Po 11 měsících vývoje byl zveřejněn nástroj CRIU 4.3 (Checkpoint and Restore In Userspace), určený k ukládání a obnově procesů v uživatelském prostoru. Tento nástroj umožňuje uložit stav jednoho nebo skupiny procesů a poté obnovit činnost od uloženého bodu, včetně možnosti po restartu systému nebo na jiném serveru bez přerušení již existujících síťových spojení. Kód projektu je napsán v jazyce C a je distribuován pod licencí GPLv2. CRIU se používá v takových systémech pro správu kontejnerů jako OpenVZ, LXC/LXD a Docker. Nezbytné změny pro CRIU jsou zahrnuty v hlavní části jádra Linux.
Z oblastí použití technologie CRIU se uvádí zajištění restartu OS bez narušení kontinuity výkonu dlouhodobě běžících procesů, live migrace izolovaných kontejnerů, zrychlení spuštění pomalých procesů (lze zahájit práci ze stavu uloženého po inicializaci), provádění aktualizací jádra bez restartu služeb, periodické ukládání stavu dlouhodobě prováděných výpočetních úloh pro obnovení činnosti v případě havarijního ukončení, vyvažování zátěže na uzlech v clusterech, duplikování procesů na jiný stroj (fork na vzdálený systém), vytváření snapshotů uživatelských aplikací v průběhu práce pro jejich analýzu na jiném systému nebo pro případ, kdy bude třeba zrušit další akce v programu.
V novém vydání:
- Byla implementována možnost komprese bloků a stránek paměti pomocí algoritmu LZ4 a vícethreadového rozbalování.
- Zvýšena výkonnost díky využití asynchronního vstupu/výstupu (AIO) při obnově stránek VMA (Virtual Memory Area), nové metodě zastavení úloh bez použití hardwarových bodů zastavení a paralelizaci obnovy memfd a anonymní sdílené paměti.
- Přidána podpora rozšíření ARM64 GCS (Guarded Control Stack), které poskytuje hardwarovou ochranu adres návratu z funkcí. Po předání řízení funkci jsou adresy návratu uchovávány procesorem nejen v běžném zásobníku, ale také v samostatném stínovém zásobníku, který nelze měnit přímo. Před opuštěním funkce je adresa návratu vytažena ze stínového zásobníku a porovnána s adresou návratu z hlavního zásobníku.
- Přidán backend pro ukládání stavu API ovladače NVIDIA CUDA.
- Zajištěno obnovení mapování GPU.
- Pro ovladač amdgpu byla implementována možnost ukládat a obnovovat stav bufferů subsystému DRM (Direct Rendering Manager) a souborových deskriptorů DMA-BUF.
- Byly přidány příkazy pro kompresi a rozbalení obrazů paměti v offline režimu.
- Přidána podpora ukládání a obnovy informací o vazbách UID-identifikátorů na síťové sokety.
- Přidána možnost „—image-io-mode“ pro zápis a čtení obrazů stránek paměti v režimu O_DIRECT (obejití stránkového cache).
Zdroj: opennet.ru
