Facebook mengeluarkan patch yang meningkatkan pengawal memori Slab di Linux

Roman Gushchin (jurutera perisian Facebook) pendaftaran dalam senarai pengembangan kernel Linux, satu set patch ke aplikasi pemetaan memori pengawal papak (pengawal memori).

Pengawal baru luar biasa dengan memindahkan perakaunan slab dari tahap halaman memori ke tahap objek kernel, memungkinkan untuk berkongsi halaman papak di pelbagai kumpulan c, dan bukannya memperuntukkan cache papak yang terpisah untuk setiap kumpulan c.

Roman menemui apa yang disebutnya sebagai "kelemahan yang sangat serius" dalam pengawal memori papak yang ada yang menyebabkan penggunaan rendah hari ini dengan kumpulan.

"Sebab sebenar mengapa reka bentuk yang ada menyebabkan penggunaan slab rendah adalah mudah: halaman slab digunakan secara eksklusif oleh kumpulan memori.

Sekiranya hanya ada beberapa peruntukan ukuran tertentu yang dibuat oleh cgroup, atau jika ada beberapa objek aktif yang tersisa setelah cgroup dikeluarkan, atau cgroup tersebut berisi aplikasi berulir tunggal yang hampir tidak mengalokasikan objek kernel, tetapi setiap saat CPU baru: dalam semua kes ini, penggunaan papak yang dihasilkan sangat rendah.

Sekiranya perakaunan kmem dilumpuhkan, kernel dapat menggunakan ruang kosong pada halaman papak untuk peruntukan lain. «

Pengawal memori Slab yang dicadangkan oleh Romano Gushchin pada tahun lalu cukup menjanjikan meningkatkan kecekapan penggunaan papak, mengurangkan saiz memori yang digunakan untuk papak sebanyak 30-45% dan mengurangkan penggunaan memori kernel secara signifikan.

Juga tambalan yang dilaksanakan telah menunjukkan bahawa Facebook sudah menggunakan kod dalam pengeluaran di pelayan mereka dan pernah menjimatkan ~ 650-700MB + untuk pelayan web front-end, cache pangkalan data dan pelayan DNS, antara anugerah lain.

Dengan mengurangkan bilangan papak yang tidak bergerak, kesan positif juga diperhatikan dalam bidang mengurangkan pemecahan memori. Pengawal memori baru secara sederhana mempermudahkan kod untuk papak perakaunan dan tidak memerlukan algoritma rumit untuk penciptaan dinamik dan penghapusan slab cache untuk setiap kumpulan c.

Semua cgroup untuk memori dalam implementasi baru menggunakan sekumpulan slab cache yang biasa, dan jangka hayat slab cache tidak lagi terikat dengan jangka hayat memori yang ditetapkan melalui cgroup.

Perakaunan sumber yang lebih tepat yang dilaksanakan dalam pengawal papak baru seharusnya secara teori memuatkan CPU lebih banyak, tetapi dalam praktiknya perbezaannya dapat diabaikan.

Secara khusus pemacu papak baru telah digunakan selama beberapa bulan di pelayan Facebook dalam operasi yang menangani pelbagai jenis beban, dan setakat ini tidak ada regresi yang signifikan yang dapat dikesan.

Tampalan itu mengandungi beberapa bahagian separa bebas, yang juga dapat digunakan di luar kawalan memori papak:

  • Subpage Load API, yang dapat digunakan di masa depan untuk menghitung objek lain yang tidak berukuran halaman, misalnya peruntukan percpu
  • API mem_cgroup_ptr, di mana penunjuk yang dihitung ke memcg, dapat digunakan kembali untuk penyampaian semula objek lain yang cekap, misalnya pagecache.

Pada masa yang sama terdapat penurunan penggunaan memori yang ketara- Pada beberapa hos mungkin untuk menyimpan memori sehingga 1 GB, tetapi penunjuk ini banyak bergantung pada sifat beban, jumlah RAM, jumlah CPU dan ciri-ciri bekerja dengan memori.

Daripada membuat satu set kmem_caches yang berasingan untuk setiap kumpulan memori, dua set global digunakan: set root untuk tidak dihitung dan tugasan kumpulan kumpulan akar dan set kedua untuk semua tugasan lain. Ini membolehkan mempermudah pengurusan sepanjang kmem_caches individu.

Akhirnya, jika anda berminat untuk mengetahui set 19 patch baru, ia boleh didapati dalam senarai mel kernel.


Kandungan artikel mematuhi prinsip kami etika editorial. Untuk melaporkan ralat, klik di sini.

Menjadi yang pertama untuk komen

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan.

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.