company_banner

Релиз Linux 5.12, подробности для локалхоста


    В самом начале последней недели апреля увидела свет новая версия ядра Linux. Особенностью данного релиза стал сам факт того, что понадобился RC8. Помимо того в течении апреля произошла совершенно невероятная история с исправлениями из Университета Миннесоты, о которых следует рассказать отдельно, когда немного осядет пыль и полностью будет восстановлен ущерб от преднамеренно неисправных патчей.

    Патч размером 39 MiB содержит труд 1873 разработчиков, из них 262 новых. Усилиями сообщества добавлено 518307 и удалено 313155 строк кода. Больше всего отличились следующие компании:

    • Intel;
    • Linaro;
    • Red Hat;
    • Google;
    • Huawei Technologies;
    • Facebook;
    • NVIDIA;
    • AMD;
    • SUSE;

    Но на втором месте по числу исправлений не отдельная компания, а Unknown, что не может не радовать. Из списка активных контрибютеров выпала компания Habana Labs.

    ▍- Графика


    Львиную долю кодовой базы ядра Linux занимают драйвера, поэтому совсем неудивительно, что им посвящена значительная часть изменений и обновлений релиза.

    Intel VRR / Adaptive-Sync


    Для чипов Intel Tiger Lake (Gen 12) и более новых добавлена поддержка Variable Rate Refresh (VRR) / Adaptive-Sync. Данная функциональность пока существует лишь для DisplayPort / eDP подключений. HDMI Forum закрыл доступ к спецификациям, и по этой причине ощутить преимущества адаптивной синхронизации смогут только обладатели eDP дисплеев с VRR функционалом.

    Разгон GPU Radeon RX 6000


    В реализации RDNA 2 (Sienna Cichlid) на ОС Linux одной из отсутствующих функций была поддержка OverDrive разгона для графических карт серии Radeon RX 6800/6900. Наконец в новой версии ядра эта возможность реализована в драйвере amdgpu. Разгон Sienna Cichlid выполняется с использованием тех же атрибутов sysfs, которые в настоящее время разгоняют AMD GPU OverDrive.

    Пиксельный формат FP16 для DCE


    Благодаря патчам независимого разработчика Марио Кляйнеру в ядре появилась поддержка пиксельного формата FP16 для старых поколений графических процессоров AMD Radeon. Исправления затрагивают Display and Compositing Engine с 8-й по 11-ю версию. Это позволяет снять ограничения на неспособность старых устройств масштабировать фреймбуфер формата FP16.

    AC/DC для GPU Radeon и прочие обновления для amdgpu


    Включение функции ACDC на мобильных графических процессорах Radeon, где сила тока и тактовый диапазон изменяются в зависимости от того, работает ли ноутбук в режиме питания переменного или постоянного тока. При включенном бите функции микропрограммное обеспечение берет на себя управление обработкой функции. Кроме того для APU Van Gogh и GPU Navy 22, a. k. a. Navy Flounder появилась возможность сброса GPU.

    ▍- Файловые системы


    Ожидаемые обновления вызывающей противоречивые чувства btrfs, XFS, CIFS и других.

    Начальная поддержка зонированных устройств в btrfs


    Зонированные блочные устройства обладают непривычными свойствами, это сделано с умыслом и во имя более плотной записи данных. Эти устройства разделены на зоны, в которых не возможен произвольный доступ для операций записи. Запись в таких зонах осуществляется только последовательно, от первого блока и до последнего.
    image
    Единственный способ перезаписи данных в последовательной зоне — это сброс указателя записи в начало зоны, что приведет к немедленному удалению всего содержимого. С другой стороны, полностью поддерживается произвольный доступ для чтения. Для файловых систем это создает определенные проблемы, так как разработка драйверов ведется с учетом того, что блоки хранения могут быть записаны в произвольном порядке. До сих пор поддержка зонированных устройств практически отсутствовала в основных ФС, однако с релизом Linux 5.12 btrfs получил эту функциональность.

    Перенос идентификаторов при монтировании


    Добавлен новый системный вызов mount_setattr(2), который дает возможность переносить идентификаторы прав с одного mount на другой для fat, ext4 и xfs. Перенос ID при монтировании файловой системы полезен для ряда серверных и DevOps сценариев. В частности ФС, в которых нет самой концепции владельца ресурса, как например vfat, могут использовать данную функциональность для реализации DAC (discretionary access control) проверок.

    Режим ранней записи в NFS


    Когда на NFS включен режим ранней записи, операции ввода будут немедленно отправляться на сервер. До этого кернел асинхронно отправлял их в фоновом режиме. В некоторых сценариях это дает преимущество, например, гарантирует, что клиент NFS немедленно увидит ошибки ENOSPC.

    Опции mount.tfs дополнились новыми элементами:

    • writes=lazy — текущий способ записи по умолчанию.
    • writes=eager — нестабильные операции ввода немедленно отправляются на сервер.
    • writes=wait — нестабильные операции ввода немедленно отправляются на сервер и затем ядро ожидает ответа на запрос.


    XFS


    Проведена активная работа по ускорению заморозки, когда выполняются только рабочие нагрузки для чтения, рефакторингу кода ведения журнала, более быстрому сканированию fsync и сборке мусора, а также продолжению работы над возможностью поддержки сжатия используемого дискового пространства.

    F2FS


    Добавлена поддержка выбора уровня сжатия для алгоритма LZ4, также реализована новая опция монтирования checkpoint_merge. Еще в sysfs появились новые элементы:

    • /sys/fs/f2fs/<dev name>/stat/sb_status для отображения статуса суперблока в режиме реальном времени в шестнадцатеричном формате;
    • /sys/fs/f2fs/<disk>/ckpt_thread_ioprio для изменения приоритета ввода-вывода службы совмещения контрольных точек.


    CIFS


    В настоящее время NFS и CIFS в Linux имеют параметр монтирования actimeo для управления кэшированием метаданных но в то же время CIFS не имеет сопутствующих параметров монтирования для того, чтобы различать атрибуты каталога кэширования и файлы. Теперь же в CIFS эти опции добавлены: acregmax для управления кэшированием файлов и acdirmax для управления кэшированием атрибутов каталогов.

    ▍- Сетевая подсистема


    TCP/IP стек ядра Linux занимает особое место в общей картине, в виду существенной сложности архитектуры и огромным возможностям по использованию в самых разнообразных устройствах. Сетевая инфраструктура больше других обеспечивает доминирование Linux ОС на серверах и продолжает развиваться семимильными шагами.

    • добавлены уведомления при изменении флагов маршрутизации на сетевом оборудовании;
    • netfilter, реализована структура владения таблицами, позволяющая пользователям привязывать таблицу вместе с содержимым к процессу через сокет netlink;
    • TCP, изменения связанные с рандомизацией портов в протоколах транспортного уровня (RFC-6056).
    • в IGMPv3 появилась поддержка механизма Explicit Host Tracking.
    • cfg80211/mac80211, у пользователей появилась возможность отключить режим HE, аналогично тому, как можно отключить VHT и HT.
    • hsr, реализована поддержка EntryForgetTime, благодаря чему удалось устранить проблемы связи с Cisco IE в режиме Redbox;
    • ipvs, новый алгоритм балансировки нагрузок, основанный на случайном выборе двух серверов, в зависимости от взвешенных оценок.


    Опрос NAPI в потоках ядра


    NAPI призвана повышать производительность при высоких нагрузках, опрашивая сетевое устройство вместо ожидания IRQ. Этот опрос, однако, выполняется в контексте softirq, где планировщик задач не может его видеть, и это затрудняет настройку системы для максимальной производительности.

    Благодаря исправлениям Wei Wang-а, а также Paolo Abeni, Felix Fietkau, и Jakub Kicinski ядро может по выбору создать отдельный поток для каждого сетевого интерфейса с поддержкой NAPI. После этого опрос NAPI будет выполняться в контексте этого потока, а не в программном прерывании. Это пока еще не избавление от softirq, но шаг в нужном направлении. Новое свойство активируется из sysfs через параметр /sys/class/net/<iface>/threaded.

    Multipath TCP


    MPTCP является набором расширений (RFC-6824) протокола TCP, с помощью которых данные для одного соединения передаются через разные сетевые интерфейсы по нескольким IP маршрутам одновременно. В новой версии появилась поддержка MP_PRIO для выставления приоритета определенным потоком нижнего уровня. Данный атрибут также определен в RFC-6824. Также улучшена возможность отображения IPv4 адресов в пространство IPv6.

    Internet Protocol


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

    Ранее при сбое во время разгрузки маршрутов в пользовательское пространство не поступало никаких извещений и из-за этого демон маршрутизации мог бесконечно долго пребывать в состоянии ожидания. Новый патч добавляет статус offload_failed с помощью флага RTM_F_OFFLOAD_FAILED к маршрутам IPv4, чтобы пользователи могли лучше видеть процесс разгрузки.

    ▍- Безопасность


    Сюда вошли исправления, связанные с Security Enhanced Linux, KFENCE, Trusted Protection Module и Integrity Management architecture.

    KFENCE


    Kernel Electric-Fence, или KFENCE, представляет из себя новое средство обнаружения ошибок безопасности памяти на основе выборки, отличительной особенностью которого является незначительная потеря производительности. KFENCE предназначен для ядер на промышленных системах и имеет практически нулевые накладные расходы на производительность. Новый детектор способен отловить такие ошибки использования памяти, как выход за пределы буфера и обращения после освобождения памяти.

    Основная причина появления на свет KFENCE в способности обнаружить редкие сценарии с ошибками в коде, которые обычно не присутствуют в тестовых средах.

    IMA


    Integrity Measurement Architecture позволяет измерять данные в файлах и буферных массивах. Однако различные структуры данных, политики и состояния, хранящиеся в памяти ядра, тоже влияют на целостность системы. До недавнего времени IMA не обладала обобщенной функцией для измерения критически важных данных целостности ядра. Сейчас подобная возможность уже присутствует в подсистеме IMA.

    Криптография


    Из кода ядра удалены некоторые алгоритмы хэшей:

    • RIPE-MD 128;
    • RIPE-MD 256;
    • RIPE-MD 320;
    • Tiger 128;
    • Tiger 160;
    • Tiger 190.

    Такая же судьба постигла алгоритм потокового шифрования Salsa20, а blake2 подтянулся до blake2s.

    В картах eMMC стало возможным использовать встроенное шифрование.

    ▍- Nintendo 64


    Хорошие новости для ретро-игроманов, в новой версии Linux наконец-то появилась поддержка игровой консоли Nintendo пятого поколения.
    image
    В далеком 1996 г․ компания выпустила игровую приставку Nintendo 64. Консоль была оснащена 64-битным процессором NEC VR4300 (MIPS R4300i) с тактовой частотой 93.75 МГц и стала самой производительной среди приставок середины 1990-х гг.

    ▍- Чипы и чипсеты


    В Linux 5.12 было значительное число обновлений для архитектуры x86 и ARM.

    x86


    В настоящее время существует созданная сообществом, с помощью обратной разработки, поддержка Microsoft Surface System Aggregation Module (SAM). The system aggregation module в своей основе — это встроенный контроллер, найденный в более поздних версиях аппаратного обеспечения Surface. SAM отвечает за обработку состояния батареи, тепловую отчетность, ввод с сенсорной панели, поведение скрытой клавиатуры и многое другое.

    Платформа Lenovo IdeaPad получила поддержку:

    • подсветка клавиатуры;
    • всегда на зарядке USB;
    • повторное включение управления сенсорной панелью.

    Также ACPI драйвер Lenovo ThinkPad теперь может управлять языковыми настройками клавиатуры и управлять режимами энергопотребления. Lenovo ThinkPad X1 Tablet Gen 2 обзавелся драйвером с поддержкой подсистемы HID.

    ARM


    В число поддерживаемых платформ, плат и устройств добавлены:

    • ASUS ASUS Zenfone 2 Laser смартфон;
    • Beacon i.MX8M Nano;
    • Beacon EmbeddedWorks (на платах RZ/G2H и RZ/G2N);\
    • Boundary Devices i.MX8MM Nitrogen SBC;
    • BQ Aquaris X5 a. k. a. Longcheer L8910 смартфон;
    • Intel eASIC N5X;
    • NanoPi M4B;
    • OnePlus6 / OnePlus6T смартфон;
    • Netgear R8000P Wi-Fi маршрутизатор;
    • PineTab Early Adopter tablet;
    • Plymovent BAS;
    • Plymovent M2M;
    • Purism Librem5 Evergreen смартфон;
    • Samsung GT-I907 смартфон;
    • Snapdragon 888 / SM8350;
    • Snapdragon MTP;
    • Sony Xperia Z3+/Z4/Z5 смартфоны.

    Некоторые платформы ARM подверглись чистке ввиду отсутствия сколь-нибудь значимого количества устройств с ОС Linux, либо ввиду отсутствия поддержки со стороны производителя.

    • efm32;
    • picoxcell;
    • prima2/atlas;
    • tango;
    • u300;
    • zte zx.

    ARM64 также имеет немало обновлений для SoC драйвером, также в подсистеме KVM обновился код PMU (Performance Monitoring Unit) до ARMv8.

    RISC-V


    Появилась начальная поддержка SoC SiFive FU740, анонсированного в конце прошлого года. Этот чип используется на плате разработки HiFive Unmatched. Другим новшеством для платформы стала поддержка технологии NUMA.


    RUVDS.com
    VDS/VPS-хостинг. Скидка 10% по коду HABR10

    Комментарии 7

      0

      Т.к. ядро линукса состоит в основном из драйверов, то почему оно не пересобирается под текущую конфигурацию железа ? Даже у производителей ноутбуков с предустановленным линуксом! Неужели это не окупается удалить из ядра драйверы для интел и Радеон, если процессор стоит AMD и видеокарта GeForse ?

      Раньше полно было статей на тему как пересобрать ядро. Но я не нашёл достаточно свежих и подробных на эту тему.

      Может кто нибудь из спецов сделает это на виртуалке для debian/ubuntu и протестирует производительность - было/стало ?

        +2

        Так оно лежит и есть не просит - зачем тогда такие танцы?

          +2
          Совершенно не окупается, разница едва выше погрешности.
            +5

            драйвера лежат в модулях, модули подгружаются по мере необходимости.

              0
              то почему оно не пересобирается под текущую конфигурацию железа
              а зачем? Модули лежат на диске, по сравнению с объемами даже дешевых SSD они не весят ничего.
              +3

              Странно — Itanium выбросили, зато добавили N64.

                +3
                А вот кроме шуток: кому может понадобиться поддержка Nintendo 64? Вот чтобы прямо пользоваться, а не «прикол, оно работает».

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое