Facebook ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ slab для ядра Linux

Π ΠΎΠΌΠ°Π½ Π“ΡƒΡ‰ΠΈΠ½ (Roman Gushchin) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Facebook ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π² спискС рассылки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра Linux Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° распрСдСлСния памяти slab (slab memory controller). Новый ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ пСрСносом ΡƒΡ‡Ρ‘Ρ‚Π° slab с уровня страниц памяти Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ядра, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ slab-страницы Π² Ρ€Π°Π·Π½Ρ‹Ρ… cgroup, вмСсто выдСлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… кэшСй slab для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ cgroup.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ использования slab, Π½Π° 30-45% ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для slab памяти ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ядром. Π—Π° счёт сокращСния числа Π½Π΅ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… slab Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт Π² области сниТСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ памяти. Новый ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ памяти Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ для ΡƒΡ‡Ρ‘Ρ‚Π° slab ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ примСнСния услоТнённых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² динамичСского создания ΠΈ удалСния slab-кэшСй для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ cgroup. ВсС cgroup для памяти Π² Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ кэшСй slab, Π° врСмя ΠΆΠΈΠ·Π½ΠΈ кэшСй slab большС Π½Π΅ привязано ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ установлСнных Ρ‡Π΅Ρ€Π΅Π· cgroup ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° использованиС памяти.

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ slab Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΡƒΡ‡Ρ‘Ρ‚ рСсурсов тСорСтичСски Π΄ΠΎΠ»ΠΆΠ΅Π½ большС Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ CPU, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ различия оказались нСсущСствСнными. Π’ частности, Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ slab ΡƒΠΆΠ΅ нСсколько мСсяцСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… сСрвСрах Facebook, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… рСгрСссий ΠΏΠΎΠΊΠ° Π½Π΅ выявлСно. ΠŸΡ€ΠΈ этом Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ сущСствСнноС сниТСниС расхода памяти — Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хостах ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π΄ΠΎ 1Π“Π‘ памяти, Π½ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ сильно зависит ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠžΠ—Π£, числа CPU ΠΈ особСнностСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ тСсты ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ сниТСниС расхода памяти Π½Π° 650-700 ΠœΠ‘ (42% ΠΎΡ‚ slab-памяти) Π½Π° web-фронтэндС, 750-800 ΠœΠ‘ (35%) Π½Π° сСрвСрС с кэшСм Π‘Π£Π‘Π” ΠΈ 700 ΠœΠ‘ (36%) Π½Π° DNS-сСрвСрС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ