Подтвердить что ты не робот

Что выбрать между Slab и Slub Allocator в ядре Linux?

Каковы факторы, которые помогают решить выбор распределителей памяти в ядре Linux?

В настоящем ядре Linux мы можем выбрать SLAB, SLUB или SLOB. Я прочитал, что SLOB используется для ядра меньших отпечатков. Но я хочу знать факторы, которые помогают решать между Sloc Allocator и Slub Allocator.

4b9b3361

Ответ 1

В поисках ответа я отправил тот же вопрос о Quora, и Роберт Лав ответил на него:

Я предполагаю, что вы спрашиваете об этом с точки зрения пользователя системы, или, возможно, кто-то строит ядро для конкретного продукта. Как разработчику ядра, вам все равно, какой распределитель "slab" используется; API то же самое.

Во-первых, "slab" стал общим именем, относящимся к стратегии выделения памяти, использующей кэш объектов, позволяющий эффективно распределять и освобождать объекты ядра. Впервые он был задокументирован инженером Sun Джеффом Бонвиком 1 и реализован в ядре Solaris 2.4.

Linux в настоящее время предлагает три варианта для своего распределителя "slab":

Slab - оригинал, основанный на оригинальной статье Bonwick и доступный с версии ядра Linux 2.2. Это точная реализация предложения Bonwick, дополненная многопроцессорными изменениями, описанными в последующем документе Bonwick 2.

Slub - это замещающий распределитель памяти следующего поколения, который по умолчанию используется в ядре Linux с 2.6.23. Он продолжает использовать базовую модель "slab", но исправляет несколько недостатков в дизайне Slab, особенно вокруг систем с большим количеством процессоров. Slub проще, чем Slab.

SLOB (простой список блоков) - это распределитель памяти, оптимизированный для встраиваемых систем с очень небольшим объемом памяти - порядка мегабайт. Он применяет очень простой алгоритм первого соответствия для списка блоков, мало чем отличающийся от старого распределителя кучи в стиле K & R. Устраняя почти всю избыточность из распределителя памяти, SLOB хорошо подходит для систем с экстремальными ограничениями памяти, но он не предлагает ни одного из преимуществ, описанных в 1, и может страдать от патологической фрагментации.

Что вы должны использовать? Slub, если только вы не собираете ядро для встроенного устройства с ограниченным объемом памяти. В этом случае я бы сравнил Slub против SLOB и посмотрел, что лучше всего подходит для вашей рабочей нагрузки. Нет причин использовать плиту; скорее всего, он будет удален из будущих выпусков ядра Linux.

Пожалуйста, обратитесь к этой ссылке для оригинального ответа.