Facebook merilis tambalan yang meningkatkan pengontrol memori Slab di Linux

Roman Gushchin (seorang insinyur perangkat lunak Facebook) registri dalam daftar pengembangan kernel Linux, satu set tambalan ke aplikasi pemetaan memori pengontrol lempengan (pengontrol memori).

Kontroler baru ini luar biasa dengan memindahkan penghitungan slab dari level halaman memori ke level objek kernel, sehingga memungkinkan untuk berbagi halaman slab di berbagai grup c, daripada mengalokasikan cache slab terpisah untuk setiap grup c.

Roman menemukan apa yang dia sebut sebagai "cacat yang sangat serius" dalam pengontrol memori lempengan yang ada yang menyebabkan rendahnya penggunaan akhir-akhir ini dengan cgroup.

“Alasan sebenarnya mengapa desain yang ada mengarah pada pemanfaatan pelat yang rendah adalah sederhana: halaman pelat digunakan secara eksklusif oleh kumpulan memori.

Jika hanya ada beberapa alokasi dengan ukuran tertentu yang dibuat oleh cgroup, atau jika ada beberapa objek aktif yang tersisa setelah cgroup dihapus, atau cgroup berisi aplikasi berulir tunggal yang hampir tidak mengalokasikan objek kernel apa pun, tetapi setiap saat pada CPU baru: dalam semua kasus ini, penggunaan slab yang dihasilkan sangat rendah.

Jika penghitungan kmem dinonaktifkan, kernel dapat menggunakan ruang kosong di halaman slab untuk alokasi lain. «

Pengontrol memori Slab yang diusulkan oleh Romano Gushchin pada tahun lalu cukup menjanjikan sebagai meningkatkan efisiensi dari penggunaan lempengan, kurangi ukuran memori yang digunakan untuk slab sebesar 30-45% dan secara signifikan mengurangi konsumsi memori kernel total.

Juga, patch yang diterapkan telah menunjukkan bahwa Facebook sudah menggunakan kode produksi di server mereka dan sebelumnya menghemat ~ 650-700MB + untuk server web front-end, cache database dan server DNS, di antara penghargaan lainnya.

Dengan mengurangi jumlah pelat non-seluler, efek positif juga diamati di bidang pengurangan fragmentasi memori. Pengontrol memori baru secara signifikan menyederhanakan kode untuk pelat akuntansi dan tidak memerlukan algoritme yang rumit untuk pembuatan dinamis dan penghapusan cache slab untuk setiap grup c.

Semua cgroup untuk memori dalam implementasi baru menggunakan sekumpulan cache slab yang umum, dan masa pakai cache slab tidak lagi terikat dengan jangka waktu batasan memori yang ditetapkan melalui cgroup.

Penghitungan sumber daya yang lebih tepat yang diterapkan di pengontrol pelat baru secara teoritis akan memuat CPU lebih banyak, tetapi dalam praktiknya perbedaan tersebut ternyata dapat diabaikan.

Khususnya driver slab baru telah digunakan selama beberapa bulan di server Facebook dalam operasi yang menangani berbagai jenis beban, dan sejauh ini tidak ada regresi signifikan yang terdeteksi.

Tambalan berisi beberapa bagian semi-independen, yang juga dapat digunakan di luar pengontrol memori slab:

  • API Pemuatan Subhalaman, yang dapat digunakan di masa mendatang untuk menghitung objek lain yang bukan seukuran halaman, misalnya alokasi percpu
  • API mem_cgroup_ptr, di mana pointer yang dihitung ke sebuah memcg, dapat digunakan kembali untuk reparenting yang efisien dari objek lain, misalnya pagecache.

Pada saat bersamaan, ada penurunan konsumsi memori yang signifikan- Pada beberapa host dimungkinkan untuk menyimpan hingga 1 GB memori, tetapi indikator ini sangat tergantung pada sifat beban, ukuran total RAM, jumlah CPU dan karakteristik bekerja dengan memori.

Alih-alih membuat satu set kmem_caches terpisah untuk setiap cgroup memori, dua set global digunakan: set root untuk tidak terhitung dan tugas cgroup grup root dan set kedua untuk semua tugas lainnya. Hal ini memungkinkan penyederhanaan pengelolaan seumur hidup dari setiap kmem_caches.

Terakhir, jika Anda tertarik untuk mengetahui set baru 19 patch, itu dapat ditemukan di daftar surat kernel.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.