Собственно, сабж: https://www.phoronix.com/news/Linux-Wants-To-Drop-SLOB . «Распределитель SLOB (простой список блоков) является одним из трех доступных распределителей памяти в ядре Linux . Два других - это SLAB (slab allocator ) и SLUB . Распределитель SLOB спроектирован таким образом, чтобы потреблять мало памяти для реализации и обслуживания в небольших системах, таких как встроенные системы. К сожалению, основным ограничением распределителя SLOB является то, что он сильно страдает от внутренней фрагментации. . В настоящее время SLOB использует алгоритм первого соответствия , который использует первое доступное пространство для памяти. В 2008 году в списке рассылки Linux был получен ответ от Линуса Торвальдса , в котором он предложил использовать алгоритм наилучшего соответствия , который пытается найти блок памяти, который наилучшим образом соответствует потребностям. . Наилучшее соответствие находит наименьшее пространство, которое соответствует необходимому доступному объему, избегая потери производительности как из-за фрагментации, так и из-за консолидации памяти. По умолчанию ядро Linux использовало систему распределения SLAB до версии 2.6.23, когда распределение SLUB стало по умолчанию. Когда флаг CONFIG_SLAB отключен, ядро возвращается к использованию распределителя SLOB. Распределитель SLOB использовался в DSLinux на Nintendo DS портативной консоли .» https://wiki5.ru/wiki/SLOB Если команда grep SLOB /boot/config-* выводит
CONFIG_SLOB is not set
, то это дропание не затронет текущий конфиг ядра. ЗЫ. В моём текущем ядре юзается SLAB.
На всех системах использую make defconfig + довключаю нужное через scripts/config, отдавая предпочтения решениям мейнстрима – у меня не столько свободного времени, чтобы наблюдать за всеми тенденциями и изменениями.
О том, что существуют альтернативные реализации тех или иных решений я узнаю только из тем подобных этой. Пока вы не сказали, я знать не знал ни о каком SLAB/SLUB/SLOB и для чего это нужно. Думаю я не один такой.
И всё равно я не считаю необходимым тратить время на разбор полётов, потому что я проще тогда добавлю 100 рублей, куплю зион не 2620, а 2630 грубо говоря, и получу процессор на 100мгц больше, который с лихвой перекроет все неоптимизированные подсистемы в ядре.
Это всё конечно здорово и интересно, когда есть желание, время, возможность заниматься подобными оптимизациями, но к сожалению, нам надо работать.
Типичная сборка ядра в CRUX:
# Description: # URL: # Maintainer: # Depends on: name=linux version=6.0 release=1 source=(https://cdn.kernel.org/pub/linux/kernel/v6.x/$name-$version.tar.xz) build() { cd $SRC/$name-$version make mrproper make defconfig scripts/config -e CONFIG_IRQ_REMAP scripts/config -e CONFIG_X86_X2APIC scripts/config -e CONFIG_MAXSMP scripts/config -e CONFIG_KVM scripts/config -m CONFIG_KVM_INTEL scripts/config -m CONFIG_KVM_AMD scripts/config -e CONFIG_BLK_DEV_NVME scripts/config -e CONFIG_SCSI_LOWLEVEL scripts/config -e CONFIG_SCSI_HPSA scripts/config -e CONFIG_MD_RAID0 scripts/config -e CONFIG_MD_RAID1 scripts/config -e CONFIG_MD_RAID10 scripts/config -e CONFIG_MD_RAID456 scripts/config -e CONFIG_BCACHE scripts/config -e CONFIG_BRIDGE scripts/config -e CONFIG_TUN scripts/config -e CONFIG_CRYPTO_ECDSA scripts/config -e CONFIG_WIREGUARD scripts/config -e CONFIG_SMB_SERVER make olddefconfig make -j$(nproc) make dir-pkg mv tar-install/* $PKGполучу процессор на 100мгц больше, который с лихвой перекроет все неоптимизированные подсистемы в ядре
Довольно скоро будем тестить овердохуя клиентов одновременно. Чтобы обслужить одного, в приложении выделяется память и выделяется, где это логически доступно, по возможности крупными кусками, в некоторых местах применено выравнивание. Довольно много жрет проц изза действий с подготовкой данных в буфере перед отправкой клиенту, каждому индивидуально.
Что-то мне кажется, что 100 рублями это никак не покроется.
Ну а вы и дальше можете играть в свой тетрис.
ой ну кто бы сомневался, в наличии говнокода, которому даже двух AMD EPYC 7742 128/256 будет мало.

Смешно!
В настоящее время SLOB использует алгоритм первого соответствия
Неэффективно и фрагментация в итоге большая.
В 2008 году в списке рассылки Linux был получен ответ от Линуса Торвальдса , в котором он предложил использовать алгоритм наилучшего соответствия
Медленно.
Неужели там нет аллокатора, отрезающего от большого свободного блока кусок необходимого размера, а на следующей итерации склеивающий свободные блоки поменьше, если не нашел подходящий, т.е > или ==?
@saahriktu если что у тебя появился статус корректора. можешь попробовать все-таки это писать в новости и сам же подтверждать, если получится.
хотя, как я понял, @saahriktu вернули на лор.
Спасибо, попробую.



