Facebook пусна кръпки, които подобряват контролера на паметта Slab в Linux

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

Новият контролер е забележителен чрез преместване на счетоводното отчитане от нивото на страницата на паметта до нивото на ядрото на ядрото, което прави възможно споделянето на страниците на слято в различни групи c, вместо да се разпределят отделни кешови плочи за всяка група c.

Роман откри това, което той нарича „много сериозен недостатък“ в съществуващия контролер на паметта на плочата, което води до ниско използване в наши дни с cgroups.

„Истинската причина, поради която съществуващото оформление води до ниско използване на плоча, е проста: страниците на плочите се използват изключително от пул памет.

Ако има само няколко разпределения с определен размер, направени от cgroup, или ако има някои активни обекти, останали след премахването на cgroup, или cgroup съдържа едно приложение с резба, което едва разпределя никакви обекти на ядрото, но всеки път на нов процесор: във всички тези случаи използваната плоча е много ниска.

Ако отчитането на kmem е деактивирано, ядрото може да използва свободно място на страниците на плочата за други разпределения. «

Предложеният контролер за памет на Slab от Романо Гущин през изминалата година беше доста обещаващо като повишава ефективността от използването на плочата, намаляване на размера на използваната памет за плоча с 30-45% и значително намалява общото потребление на памет на ядрото.

Също, внедрените кръпки са посочили че Facebook вече използва кода в производство на своите сървъри и е бил спестявайки ~ 650-700MB + за уеб сървъри от преден край, кеширане на база данни и DNS сървъри, наред с други награди.

Чрез намаляване на броя на неподвижните плочи се наблюдава положителен ефект и в областта на намаляването на фрагментацията на паметта. Новият контролер на паметта значително опростява кода за счетоводна плоча и не изисква сложни алгоритми за динамично създаване и изтриване на кешове на плочи за всяка група c.

Всички cgroups за памет в новата реализация използват общ набор от кешове на плочи и продължителността на живота на кешовете на плочи вече не е обвързана с продължителността на живота на ограниченията на паметта, зададени чрез cgroup.

По-прецизното отчитане на ресурсите, внедрено в новия контролер на плочи, теоретично би трябвало да натовари повече процесора, но на практика разликите се оказаха незначителни.

По-специално новият драйвер за плоча се използва от няколко месеца на сървърите на Facebook в експлоатация, които се справят с различни видове товари и досега не са открити значителни регресии.

Пластирът съдържа няколко полунезависими части, които също могат да намерят приложение извън контролера на паметта на плочата:

  • API за зареждане на подстраници, който може да се използва в бъдеще за преброяване на други обекти, които не са с размер на страница, например разпределения на percpu
  • API mem_cgroup_ptr, където се преброяват указатели към memcg, може да се използва повторно за ефективно препращане на други обекти, например кеш на страници.

В същото време, има значително намаляване на консумацията на памет- На някои хостове беше възможно да се спестят до 1 GB памет, но този индикатор до голяма степен зависи от естеството на товара, общият размер на RAM, количеството процесор и характеристиките на работа с памет.

Вместо да се създава отделен набор от kmem_caches за всяка cgroup памет, се използват два глобални набора: основният набор за неотчетени и присвояванията на cgroup на основната група и вторият набор за всички останали назначения. Това позволява опростяване на доживотното управление на отделни kmem_caches.

И накрая, ако се интересувате от познаването на новия набор от 19 лепенки, той може да бъде намерен в списъка поща на ядрото.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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