LINUXTALKS.CO

Разработчики ядра Linux собираются дропать SLOB

 ,

L


0

1

Собственно, сабж: 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
Spoofing    
★★★★★★
Linux / Firefox
Ответ на: комментарий от Spoofing

получу процессор на 100мгц больше, который с лихвой перекроет все неоптимизированные подсистемы в ядре

Довольно скоро будем тестить овердохуя клиентов одновременно. Чтобы обслужить одного, в приложении выделяется память и выделяется, где это логически доступно, по возможности крупными кусками, в некоторых местах применено выравнивание. Довольно много жрет проц изза действий с подготовкой данных в буфере перед отправкой клиенту, каждому индивидуально.

Что-то мне кажется, что 100 рублями это никак не покроется.

Ну а вы и дальше можете играть в свой тетрис.

deep-purple    
★★★★★★★★★★
Android / Firefox

В настоящее время SLOB использует алгоритм первого соответствия

Неэффективно и фрагментация в итоге большая.

В 2008 году в списке рассылки Linux был получен ответ от Линуса Торвальдса , в котором он предложил использовать алгоритм наилучшего соответствия

Медленно.

Неужели там нет аллокатора, отрезающего от большого свободного блока кусок необходимого размера, а на следующей итерации склеивающий свободные блоки поменьше, если не нашел подходящий, т.е > или ==?

Meyer    
★★★★★★
Android / Firefox