Роман Гушчин () от Фейсбук в пощенския списък на разработчиците на ядрото Linux набор от пачове, имплементиращи нов контролер за разпределение на паметта (контролер на паметта на slab). Новият контролер е забележителен с преместването на отчитането на slab-овете от нивото на страниците на паметта на нивото на обектите на ядрото, което позволява споделянето на slab-страниците между различни cgroups, вместо да се разпределят отделни кешове на slab-ове за всяка cgroup.
Предложеният подход подобрява използването на slab-овете, намалява размера на slab-паметта с 30-45% и значително намалява общото потребление на памет от ядрото. Намаляването на броя на неподвижните slab-ове също има положителен ефект върху намаляването на фрагментацията на паметта. Новият контролер на паметта значително опростява кода за отчитане на slab-ове и елиминира необходимостта от сложни алгоритми за динамично създаване и изтриване на slab-кешове за всяка cgroup. Всички cgroup памет в новата имплементация споделят общ набор от slab-кешове, а животът на slab-кешовете вече не е обвързан с живота на тези, създадени чрез cgroup. върху използването на паметта.
По-точното отчитане на ресурсите, внедрено в новия контролер за slab, теоретично би трябвало да увеличи използването на процесора, но на практика разликите се оказаха незначителни. По-конкретно, новият контролер за slab се използва от няколко месеца на производствени сървъри на Facebook, обработващи различни видове натоварвания, и досега не са наблюдавани значителни регресии. В същото време е наблюдавано значително намаление на консумацията на памет - на някои хостове е спестена до 1 GB памет, но тази цифра варира значително в зависимост от естеството на натоварването, общия размер на RAM паметта, броя на процесорите и функциите за управление на паметта. Предишни тестове Намаляване на консумацията на памет с 650-700 MB (42% от малката памет) на уеб интерфейса, 750-800 MB (35%) на сървъра с кеш на СУБД и 700 MB (36%) на DNS сървъра.
Източник: opennet.ru
