Facebook telah mencadangkan mekanisme pengurusan memori papak baharu untuk kernel Linux

Roman Gushchin (Roman Gushchin) daripada Facebook diterbitkan pada senarai mel pembangun kernel Linux satu set patch dengan pelaksanaan pengawal peruntukan memori baharu papak (pengawal memori papak). Pengawal baharu terkenal kerana memindahkan perakaunan papak dari peringkat halaman memori ke peringkat objek kernel, yang memungkinkan untuk berkongsi halaman papak dalam kumpulan c yang berbeza, dan bukannya memperuntukkan cache papak yang berasingan untuk setiap cgroup.

Pendekatan yang dicadangkan memungkinkan untuk meningkatkan kecekapan penggunaan papak, mengurangkan saiz memori yang digunakan untuk papak sebanyak 30-45%, dan dengan ketara mengurangkan penggunaan memori keseluruhan kernel. Dengan mengurangkan bilangan papak tidak boleh alih, terdapat juga kesan positif dalam mengurangkan pemecahan memori. Pengawal memori baharu dengan ketara memudahkan kod untuk perakaunan papak dan tidak memerlukan penggunaan algoritma rumit untuk mencipta dan memadam cache papak secara dinamik untuk setiap cgroup. Semua kumpulan c memori dalam pelaksanaan baharu menggunakan set cache papak biasa dan jangka hayat cache papak tidak lagi terikat dengan jangka hayat yang dipasang melalui cgroup sekatan mengenai penggunaan memori.

Perakaunan sumber yang lebih tepat yang dilaksanakan dalam pengawal papak baharu seharusnya secara teorinya memuatkan CPU lebih banyak, tetapi dalam praktiknya perbezaannya ternyata tidak ketara. Khususnya, pengawal papak baharu telah digunakan selama beberapa bulan pada pelayan Facebook pengeluaran yang mengendalikan pelbagai jenis beban kerja, dan tiada regresi yang ketara telah dikenal pasti. Pada masa yang sama, terdapat pengurangan ketara dalam penggunaan memori - pada sesetengah hos adalah mungkin untuk menyimpan sehingga 1GB memori, tetapi penunjuk ini sangat bergantung pada sifat beban, jumlah saiz RAM, bilangan CPU. dan ciri-ciri bekerja dengan ingatan. Ujian sebelumnya menunjukkan pengurangan penggunaan memori sebanyak 650-700 MB (42% daripada memori papak) pada bahagian hadapan web, 750-800 MB (35%) pada pelayan dengan cache DBMS dan 700 MB (36%) pada pelayan DNS.

Sumber: opennet.ru

Tambah komen