Facebook випустив патчі, які вдосконалюють контролер пам'яті Slab в Linux

Роман Гущин (інженер-програміст Facebook) реєстру у списку розробки ядра Linux, набір латок для програми відображення пам'яті контролера плити (контролер пам'яті).

Новий контролер є чудовим шляхом переміщення обліку слябів з рівня сторінки пам’яті на рівень об’єкта ядра, що робить можливим спільний доступ до сторінок сляба між різними групами c, а не виділенням окремих кеш-пам’яток для кожної групи c.

Роман виявив, що він називає "дуже серйозною вадою" в існуючому контролері пам'яті плит, що в наш час призводить до низького рівня використання груп.

«Справжня причина, через яку існуюча конструкція призводить до низького використання слябів, проста: сторінки плит використовуються виключно пулом пам'яті.

Якщо є лише декілька розподілів певного розміру, зроблених cgroup, або якщо після видалення cgroup залишилося кілька активних об'єктів, або cgroup містить єдину потокову програму, яка ледь виділяє будь-які об'єкти ядра, але кожен раз новий процесор: у всіх цих випадках коефіцієнт використання плити дуже низький.

Якщо облік kmem вимкнено, ядро ​​може використовувати вільний простір на сторінках плит для інших розподілів. «

Запропонований контролер пам'яті Slab Романо Гущин у минулому році був досить перспективним підвищує ефективність використання плити, зменшити обсяг використовуваної пам'яті для плити на 30-45% і значно зменшить загальне споживання пам'яті ядра.

Також, введені виправлення вказали що Facebook вже використовує код у виробництві на своїх серверах і був економія ~ 650-700 МБ + для інтерфейсних веб-серверів, кешування бази даних та DNS-сервери, серед інших нагород.

Зменшуючи кількість нерухливих плит, позитивний ефект спостерігається також у галузі зменшення фрагментації пам'яті. Новий контролер пам'яті значно спрощує код для обліку сляба і не вимагає складних алгоритмів для динамічного створення та видалення кеш-пам’яток для кожної групи c.

Усі cgroups для пам'яті в новій реалізації використовують загальний набір кеш-пам’яті плити, і тривалість життя кеш-пам’яті більше не прив’язана до тривалості життя обмежень пам'яті, встановлених через cgroup.

Більш точний облік ресурсів, впроваджений у новому контролері плит, теоретично повинен навантажувати процесор більше, але на практиці відмінності виявилися незначними.

Зокрема новий драйвер плити використовується вже кілька місяців на серверах Facebook в експлуатації, що обробляє різні типи навантажень, і до цих пір не було виявлено значних регресій.

Патч містить пару напівнезалежних частин, які також можуть бути використані поза контролером пам'яті плити:

  • API завантаження підсторінок, який можна використовувати в майбутньому для підрахунку інших об’єктів, розмір яких не є сторінкою, наприклад, розміщення percpu
  • API mem_cgroup_ptr, де вказівники підраховуються до memcg, може бути використаний повторно для ефективного перенаправлення інших об'єктів, наприклад кешу сторінок.

Водночас спостерігається значне зменшення споживання пам'яті- На деяких хостах можна було заощадити до 1 ГБ пам'яті, але цей показник багато в чому залежить від характеру навантаження, загальний розмір оперативної пам'яті, обсяг центрального процесора та характеристики роботи з пам’яттю.

Замість того, щоб створювати окремий набір kmem_caches для кожної групи пам'яті, використовуються два глобальні набори: кореневий набір для необлікованих та кореневі групи присвоєнь групи, а другий набір для всіх інших призначень. Це спрощує управління життям окремих kmem_caches.

Нарешті, якщо вам цікаво знати новий набір з 19 виправлень, його можна знайти у списку пошта ядра.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.