Facebook memperkenalkan mekanisme TMO yang memungkinkan Anda menghemat 20-32% memori di server

Insinyur dari Facebook (dilarang di Federasi Rusia) menerbitkan laporan tentang penerapan teknologi TMO (Transparent Memory Offloading) tahun lalu, yang memungkinkan penghematan RAM yang signifikan di server dengan memindahkan data sekunder yang tidak diperlukan untuk bekerja ke drive yang lebih murah, seperti NVMe SSD -disk. Facebook memperkirakan penggunaan TMO dapat menghemat 20 hingga 32% RAM di setiap server. Solusi ini dirancang untuk digunakan dalam infrastruktur di mana aplikasi berjalan dalam wadah yang terisolasi. Komponen sisi kernel TMO sudah disertakan dalam kernel Linux.

Di sisi kernel Linux, teknologi ini didukung oleh subsistem PSI (Pressure Stall Information), tersedia mulai rilis 4.20. PSI sudah digunakan di berbagai penangan memori rendah dan memungkinkan Anda menganalisis informasi tentang waktu tunggu untuk memperoleh berbagai sumber daya (CPU, memori, I/O). Dengan PSI, pemroses ruang pengguna dapat menilai tingkat beban sistem dan pola perlambatan dengan lebih akurat, sehingga anomali dapat diidentifikasi lebih awal, sebelum anomali tersebut berdampak nyata pada kinerja.

Di ruang pengguna, TMO disediakan oleh komponen Senpai, yang melalui cgroup2, secara dinamis menyesuaikan batas memori untuk kontainer aplikasi berdasarkan data yang diterima dari PSI. Senpai menganalisis tanda-tanda permulaan kekurangan sumber daya melalui PSI, menilai sensitivitas aplikasi terhadap perlambatan akses memori dan mencoba menentukan ukuran memori minimum yang dibutuhkan oleh wadah, di mana data yang diperlukan untuk pengoperasian tetap berada di RAM, dan hal-hal yang menyertainya data disimpan di cache file atau tidak langsung digunakan saat ini, dipaksa keluar ke partisi swap.

Facebook memperkenalkan mekanisme TMO yang memungkinkan Anda menghemat 20-32% memori di server

Dengan demikian, inti dari TMO adalah untuk menjaga proses pada diet ketat dalam hal konsumsi memori, memaksa pertukaran halaman memori yang tidak terpakai yang pengusirannya tidak mempengaruhi kinerja secara signifikan (misalnya, halaman dengan kode yang hanya digunakan selama inisialisasi, dan halaman sekali pakai) data dalam cache disk). Tidak seperti mengeluarkan informasi ke partisi swap sebagai respons terhadap tekanan memori, data di TMO dikeluarkan berdasarkan prediksi proaktif.

Salah satu kriteria penggusuran adalah tidak adanya akses ke halaman memori selama 5 menit. Halaman seperti itu disebut halaman memori dingin dan rata-rata menempati sekitar 35% dari memori aplikasi (tergantung pada jenis aplikasi, kisarannya berkisar antara 19% hingga 65%). Preemption memperhitungkan aktivitas akun yang terkait dengan halaman memori anonim (memori yang dialokasikan oleh aplikasi) dan memori yang digunakan untuk cache file (dialokasikan oleh kernel). Dalam beberapa aplikasi, konsumsi utama adalah memori anonim, tetapi di aplikasi lain, cache file juga penting. Untuk menghindari ketidakseimbangan penggusuran cache, TMO menggunakan algoritma paging baru yang mengeluarkan halaman anonim dan halaman yang terkait dengan cache file secara proporsional.

Mendorong halaman yang jarang digunakan ke dalam memori yang lebih lambat tidak berdampak signifikan terhadap kinerja, namun dapat mengurangi biaya perangkat keras secara signifikan. Data dipindahkan ke drive SSD atau ke area swap terkompresi di RAM. Dalam hal biaya penyimpanan satu byte data, penggunaan NVMe SSD 10 kali lebih murah dibandingkan menggunakan kompresi pada RAM.

Facebook memperkenalkan mekanisme TMO yang memungkinkan Anda menghemat 20-32% memori di server


Sumber: opennet.ru

Tambah komentar