Facebook memperkenalkan mekanisme TMO, membolehkan anda menyimpan 20-32% memori pada pelayan

Jurutera dari Facebook (diharamkan di Persekutuan Rusia) menerbitkan laporan mengenai pelaksanaan tahun lepas teknologi TMO (Transparent Memory Offloading), yang membolehkan penjimatan ketara dalam RAM pada pelayan dengan menggantikan data sekunder yang tidak diperlukan untuk kerja kepada pemacu yang lebih murah, seperti NVMe SSD -cakera. Facebook menganggarkan bahawa menggunakan TMO boleh menjimatkan 20 hingga 32% RAM pada setiap pelayan. Penyelesaian ini direka untuk digunakan dalam infrastruktur di mana aplikasi dijalankan dalam bekas terpencil. Komponen sisi kernel TMO sudah disertakan dalam kernel Linux.

Di sisi kernel Linux, teknologi ini disokong oleh subsistem PSI (Pressure Stall Information), tersedia bermula dengan keluaran 4.20. PSI sudah digunakan dalam pelbagai pengendali memori rendah dan membolehkan anda menganalisis maklumat tentang masa menunggu untuk mendapatkan pelbagai sumber (CPU, memori, I/O). Dengan PSI, pemproses ruang pengguna boleh menilai tahap beban sistem dan corak kelembapan dengan lebih tepat, membolehkan anomali dikenal pasti lebih awal, sebelum ia mempunyai kesan ketara terhadap prestasi.

Dalam ruang pengguna, TMO disediakan oleh komponen Senpai, yang, melalui cgroup2, melaraskan had memori secara dinamik untuk bekas aplikasi berdasarkan data yang diterima daripada PSI. Senpai menganalisis tanda-tanda permulaan kekurangan sumber melalui PSI, menilai sensitiviti aplikasi terhadap kelembapan dalam akses memori dan cuba menentukan saiz memori minimum yang diperlukan oleh bekas, di mana data yang diperlukan untuk operasi kekal dalam RAM, dan yang disertakan bersama. data yang diselesaikan dalam cache fail atau tidak digunakan secara langsung pada masa ini, dipaksa keluar ke partition swap.

Facebook memperkenalkan mekanisme TMO, membolehkan anda menyimpan 20-32% memori pada pelayan

Oleh itu, intipati TMO adalah untuk mengekalkan proses mengikut diet yang ketat dari segi penggunaan ingatan, memaksa pertukaran halaman memori yang tidak digunakan yang pengusirannya tidak menjejaskan prestasi dengan ketara (contohnya, halaman dengan kod yang digunakan hanya semasa permulaan, dan penggunaan tunggal data dalam cache cakera). Tidak seperti mengusir maklumat ke partition swap sebagai tindak balas kepada tekanan memori, dalam data TMO diusir berdasarkan ramalan proaktif.

Salah satu kriteria untuk pengusiran adalah ketiadaan akses ke halaman memori selama 5 minit. Halaman sedemikian dipanggil halaman memori sejuk dan secara purata membentuk kira-kira 35% memori aplikasi (bergantung pada jenis aplikasi, terdapat julat dari 19% hingga 65%). Preemption mengambil kira aktiviti yang dikaitkan dengan halaman memori tanpa nama (memori yang diperuntukkan oleh aplikasi) dan memori yang digunakan untuk caching fail (diperuntukkan oleh kernel). Dalam sesetengah aplikasi penggunaan utama adalah memori tanpa nama, tetapi dalam yang lain cache fail juga penting. Untuk mengelakkan ketidakseimbangan pengusiran cache, TMO menggunakan algoritma paging baharu yang mengusir halaman tanpa nama dan halaman yang dikaitkan dengan cache fail secara berkadar.

Menolak halaman yang jarang digunakan ke dalam memori yang lebih perlahan tidak mempunyai kesan yang ketara pada prestasi, tetapi boleh mengurangkan kos perkakasan dengan ketara. Data disalurkan ke pemacu SSD atau ke kawasan swap termampat dalam RAM. Dari segi kos menyimpan satu bait data, menggunakan SSD NVMe adalah sehingga 10 kali lebih murah daripada menggunakan pemampatan dalam RAM.

Facebook memperkenalkan mekanisme TMO, membolehkan anda menyimpan 20-32% memori pada pelayan


Sumber: opennet.ru

Tambah komen