Setelah 11 bulan pengembangan, CRIU 4.3 (Checkpoint and Restore in Userspace), sebuah toolkit yang dirancang untuk menyimpan dan memulihkan proses di ruang pengguna, telah dirilis. Toolkit ini memungkinkan penyimpanan status satu atau sekelompok proses dan kemudian melanjutkan eksekusi dari posisi yang tersimpan, termasuk setelah sistem di-reboot atau di server yang berbeda tanpa mengganggu koneksi jaringan yang ada. Kode proyek ditulis dalam bahasa C dan didistribusikan di bawah lisensi GPLv2. CRIU digunakan dalam sistem manajemen kontainer seperti OpenVZ, LXC/LXD, dan Docker. Perubahan yang diperlukan agar CRIU berfungsi telah dimasukkan ke dalam kernel inti. Linux.
Bidang penerapan teknologi CRIU antara lain memastikan boot ulang OS tanpa mengganggu kelangsungan proses yang berjalan lama, migrasi langsung kontainer yang terisolasi, mempercepat peluncuran proses yang lambat (Anda dapat mulai bekerja dari status yang disimpan setelah inisialisasi), melakukan pembaruan kernel tanpa memulai ulang layanan, menyimpan status tugas komputasi yang berjalan lama secara berkala untuk melanjutkan pekerjaan jika terjadi penghentian yang tidak normal, menyeimbangkan beban pada node dalam kluster, menduplikasi proses ke mesin lain (fork ke sistem jarak jauh), membuat snapshot aplikasi pengguna selama operasi untuk analisisnya di sistem lain atau jika perlu membatalkan tindakan lebih lanjut dalam program.
Dalam rilis baru:
- Kemampuan untuk mengompres blok dan halaman memori menggunakan algoritma LZ4 dan dekompresi multi-threaded telah diimplementasikan.
- Performa ditingkatkan dengan menggunakan I/O asinkron (AIO) saat memulihkan halaman VMA (Virtual Memory Area), metode baru untuk menghentikan tugas tanpa menggunakan breakpoint perangkat keras, dan memparalelkan pemulihan memfd dan memori bersama anonim.
- Menambahkan dukungan untuk ekstensi ARM64 GCS (Guarded Control Stack), yang menyediakan perlindungan perangkat keras untuk alamat pengembalian fungsi. Setelah mentransfer kendali ke suatu fungsi, prosesor menyimpan alamat pengembalian tidak hanya pada tumpukan reguler tetapi juga pada tumpukan bayangan terpisah, yang tidak dapat dimodifikasi secara langsung. Sebelum keluar dari fungsi, alamat pengembalian dikeluarkan dari tumpukan bayangan dan dibandingkan dengan alamat pengembalian pada tumpukan utama.
- Menambahkan backend untuk menyimpan status API driver NVIDIA CUDA.
- Pemulihan pemetaan GPU telah dipastikan.
- Untuk driver amdgpu, penyimpanan dan pemulihan status buffer subsistem DRM (Direct Rendering Manager) dan deskriptor file DMA-BUF telah diimplementasikan.
- Menambahkan perintah untuk mengompresi dan mendekompresi citra memori dalam mode offline.
- Menambahkan dukungan untuk menyimpan dan memulihkan informasi tentang pengikatan UID ke soket jaringan.
- Menambahkan opsi "--image-io-mode" untuk menulis dan membaca citra halaman memori dalam mode O_DIRECT (melewati cache halaman).
Sumber: opennet.ru
