Собственно, сабж: 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.

  • Spoofing
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    На всех системах использую 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
    
    • deep-purple
      link
      fedilink
      arrow-up
      0
      ·
      4 years ago

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

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

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

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

      • Spoofing
        link
        fedilink
        arrow-up
        0
        ·
        4 years ago

        ой ну кто бы сомневался, в наличии говнокода, которому даже двух AMD EPYC 7742 128/256 будет мало.

  • Meyer
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

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

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

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

    Медленно.

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

  • crypt
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    @saahriktu если что у тебя появился статус корректора. можешь попробовать все-таки это писать в новости и сам же подтверждать, если получится.

    хотя, как я понял, @saahriktu вернули на лор.