Facebook предложи нов механизъм за управление на паметта за ядрото на Linux

Роман Гушчин (Роман Гушчин) от Facebook опубликовал в пощенския списък на разработчиците на ядрото на Linux набор от корекции с внедряването на нов контролер за разпределение на паметта плоча (контролер на паметта на плочата). Новият контролер се отличава с това, че премества отчитането на slab от нивото на страницата на паметта към нивото на обекта на ядрото, което прави възможно споделянето на страници на slab в различни cgroups, вместо да разпределя отделни кешове на slab за всяка cgroup.

Предложеният подход дава възможност да се увеличи ефективността на използването на slab, да се намали размера на паметта, използвана за slab с 30-45%, и значително да се намали общото потребление на памет от ядрото. Чрез намаляване на броя на неподвижните плочи има и положителен ефект при намаляване на фрагментацията на паметта. Новият контролер на паметта значително опростява кода за отчитане на слабове и не изисква използването на сложни алгоритми за динамично създаване и изтриване на кешове за слабове за всяка cgroup. Всички cgroups на паметта в новата реализация използват общ набор от кеш памети и животът на кеш паметта вече не е обвързан с продължителността на живота на тези, инсталирани чрез cgroup ограничения върху използването на паметта.

По-точното отчитане на ресурсите, внедрено в новия slab контролер, теоретично трябва да натовари процесора повече, но на практика разликите се оказаха незначителни. По-специално, новият контролер за плоча е използван от няколко месеца на производствени сървъри на Facebook, обработващи различни видове натоварване, и все още не са идентифицирани забележими регресии. В същото време има значително намаляване на потреблението на памет - на някои хостове беше възможно да се спести до 1 GB памет, но този показател силно зависи от естеството на натоварването, общия размер на RAM, броя на процесорите и характеристиките на работата с паметта. Предишни тестове шоу намаляване на потреблението на памет с 650-700 MB (42% от плочата памет) на уеб интерфейса, 750-800 MB (35%) на сървъра с DBMS кеш и 700 MB (36%) на DNS сървъра.

Източник: opennet.ru

Добавяне на нов коментар