В самом начале последней недели апреля увидела свет новая версия ядра Linux. Особенностью данного релиза стал сам факт того, что понадобился RC8. Помимо того в течении апреля произошла совершенно невероятная история с исправлениями из Университета Миннесоты, о которых следует рассказать отдельно, когда немного осядет пыль и полностью будет восстановлен ущерб от преднамеренно неисправных патчей.
Патч размером 39 MiB содержит труд 1873 разработчиков, из них 262 новых. Усилиями сообщества добавлено 518307 и удалено 313155 строк кода. Больше всего отличились следующие компании:
Но на втором месте по числу исправлений не отдельная компания, а Unknown, что не может не радовать. Из списка активных контрибютеров выпала компания Habana Labs.
Львиную долю кодовой базы ядра Linux занимают драйвера, поэтому совсем неудивительно, что им посвящена значительная часть изменений и обновлений релиза.
Для чипов Intel Tiger Lake (Gen 12) и более новых добавлена поддержка Variable Rate Refresh (VRR) / Adaptive-Sync. Данная функциональность пока существует лишь для DisplayPort / eDP подключений. HDMI Forum закрыл доступ к спецификациям, и по этой причине ощутить преимущества адаптивной синхронизации смогут только обладатели eDP дисплеев с VRR функционалом.
В реализации RDNA 2 (Sienna Cichlid) на ОС Linux одной из отсутствующих функций была поддержка OverDrive разгона для графических карт серии Radeon RX 6800/6900. Наконец в новой версии ядра эта возможность реализована в драйвере amdgpu. Разгон Sienna Cichlid выполняется с использованием тех же атрибутов sysfs, которые в настоящее время разгоняют AMD GPU OverDrive.
Благодаря патчам независимого разработчика Марио Кляйнеру в ядре появилась поддержка пиксельного формата FP16 для старых поколений графических процессоров ADM Radeon. Исправления затрагивают Display and Compositing Engine с 8-й по 11-ю версию. Это позволяет снять ограничения на неспособность старых устройств масштабировать фреймбуфер формата FP16.
Включение функции ACDC на мобильных графических процессорах Radeon, где сила тока и тактовый диапазон изменяются в зависимости от того, работает ли ноутбук в режиме питания переменного или постоянного тока. При включенном бите функции микропрограммное обеспечение берет на себя управление обработкой функции. Кроме того для APU Van Gogh и GPU Navy 22, a. k. a. Navy Flounder появилась возможность сброса GPU.
Ожидаемые обновления вызывающей противоречивые чувства btrfs, XFS, CIFS и других.
Зонированные блочные устройства обладают непривычными свойствами, это сделано с умыслом и во имя более плотной записи данных. Эти устройства разделены на зоны, в которых не возможен произвольный доступ для операций записи. Запись в таких зонах осуществляется только последовательно, от первого блока и до последнего.
Единственный способ перезаписи данных в последовательной зоне — это сброс указателя записи в начало зоны, что приведет к немедленному удалению всего содержимого. С другой стороны, полностью поддерживается произвольный доступ для чтения. Для файловых систем это создает определенные проблемы, так как разработка драйверов ведется с учетом того, что блоки хранения могут быть записаны в произвольном порядке. До сих пор поддержка зонированных устройств практически отсутствовала в основных ФС, однако с релизом Linux 5.12 btrfs получил эту функциональность.
Добавлен новый системный вызов mount_setattr(2), который дает возможность переносить идентификаторы прав с одного mount на другой для fat, ext4 и xfs. Перенос ID при монтировании файловой системы полезен для ряда серверных и DevOps сценариев. В частности ФС, в которых нет самой концепции владельца ресурса, как например vfat, могут использовать данную функциональность для реализации DAC (discretionary access control) проверок.
Когда на NFS включен режим ранней записи, операции ввода будут немедленно отправляться на сервер. До этого кернел асинхронно отправлял их в фоновом режиме. В некоторых сценариях это дает преимущество, например, гарантирует, что клиент NFS немедленно увидит ошибки ENOSPC.
Опции mount.tfs дополнились новыми элементами:
Проведена активная работа по ускорению заморозки, когда выполняются только рабочие нагрузки для чтения, рефакторингу кода ведения журнала, более быстрому сканированию fsync и сборке мусора, а также продолжению работы над возможностью поддержки сжатия используемого дискового пространства.
Добавлена поддержка выбора уровня сжатия для алгоритма LZ4, также реализована новая опция монтирования checkpoint_merge. Еще в sysfs появились новые элементы:
В настоящее время NFS и CIFS в Linux имеют параметр монтирования actimeo для управления кэшированием метаданных но в то же время CIFS не имеет сопутствующих параметров монтирования для того, чтобы различать атрибуты каталога кэширования и файлы. Теперь же в CIFS эти опции добавлены: acregmax для управления кэшированием файлов и acdirmax для управления кэшированием атрибутов каталогов.
TCP/IP стек ядра Linux занимает особое место в общей картине, в виду существенной сложности архитектуры и огромным возможностям по использованию в самых разнообразных устройствах. Сетевая инфраструктура больше других обеспечивает доминирование Linux ОС на серверах и продолжает развиваться семимильными шагами.
NAPI призвана решать повышать производительность при высоких, опрашивая сетевое устройство вместо ожидания IRQ. Этот опрос, однако, выполняется в контексте softirq, где планировщик задач не может его видеть, и это затрудняет настройку системы для максимальной производительности.
Благодаря исправлениям Wei Wang-а, а также Paolo Abeni, Felix Fietkau, и Jakub Kicinski ядро может по выбору создать отдельный поток для каждого сетевого интерфейса с поддержкой NAPI. После этого опрос NAPI будет выполняться в контексте этого потока, а не в программном прерывании. Это пока еще не избавление от softirq, но шаг в нужном направлении. Новое свойство активируется из sysfs через параметр /sys/class/net/<iface>/threaded.
MPTCP является набором расширений (RFC-6824) протокола TCP, с помощью которых данные для одного соединения передаются через разные сетевые интерфейсы по нескольким IP маршрутам одновременно. В новой версии появилась поддержка MP_PRIO для выставления приоритета определенным потоком нижнего уровня. Данный атрибут также определен в RFC-6824. Также улучшена возможность отображения IPv4 адресов в пространство IPv6.
Асинхронность установки маршрута в аппаратном обеспечении может привести к тому, что служба маршрутизации объявит маршрут до того, как он был фактически установлен в сетевом устройстве. Это может привести к потере пакетов или неправильной маршрутизации пакетов до тех пор, пока маршрут не будет фактически установлен в аппаратном обеспечении.
Ранее при сбое во время разгрузки маршрутов в пользовательское пространство не поступало никаких извещений и из-за этого демон маршрутизации мог бесконечно долго пребывать в состоянии ожидания. Новый патч добавляет статус offload_failed с помощью флага RTM_F_OFFLOAD_FAILED к маршрутам IPv4, чтобы пользователи могли лучше видеть процесс разгрузки.
Сюда вошли исправления, связанные с Security Enhanced Linux, KFENCE, Trusted Protection Module и Integrity Management architecture.
Kernel Electric-Fence, или KFENCE, представляет из себя новое средство обнаружения ошибок безопасности памяти на основе выборки, отличительной особенностью которого является незначительная потеря производительности. KFENCE предназначен для ядер на промышленных системах и имеет практически нулевые накладные расходы на производительность. Новый детектор способен отловить такие ошибки использования памяти, как выход за пределы буфера и обращения после освобождения памяти.
Основная причина появления на свет KFENCE в способности обнаружить редкие сценарии с ошибками в коде, которые обычно не присутствуют в тестовых средах.
Integrity Measurement Architecture позволяет измерять данные в файлах и буферных массивах. Однако различные структуры данных, политики и состояния, хранящиеся в памяти ядра, тоже влияют на целостность системы. До недавнего времени IMA не обладала обобщенной функцией для измерения критически важных данных целостности ядра. Сейчас подобная возможность уже присутствует в подсистеме IMA.
Из кода ядра удалены некоторые алгоритмы хэшей:
Такая же судьба постигла алгоритм потокового шифрования Salsa20, а blake2 подтянулся до blake2s.
В картах eMMC стало возможным использовать встроенное шифрование.
Хорошие новости для ретро-игроманов, в новой версии Linux наконец-то появилась поддержка игровой консоли Nintendo пятого поколения.
В далеком 1996 г․ компания выпустила игровую приставку Nintendo 64. Консоль была оснащена 64-битным процессором NEC VR4300 (MIPS R4300i) с тактовой частотой 93.75 МГц и стала самой производительной среди приставок середины 1990-х гг.
В Linux 5.12 было значительное число обновлений для архитектуры x86 и ARM.
В настоящее время существует созданная сообществом, с помощью обратной разработки, поддержка Microsoft Surface System Aggregation Module (SAM). The system aggregation module в своей основе — это встроенный контроллер, найденный в более поздних версиях аппаратного обеспечения Surface. SAM отвечает за обработку состояния батареи, тепловую отчетность, ввод с сенсорной панели, поведение скрытой клавиатуры и многое другое.
Платформа Lenovo IdeaPad получила поддержку:
Также ACPI драйвер Lenovo ThinkPad теперь может управлять языковыми настройками клавиатуры и управлять режимами энергопотребления. Lenovo ThinkPad X1 Tablet Gen 2 обзавелся драйвером с поддержкой подсистемы HID.
В число поддерживаемых платформ, плат и устройств добавлены:
Некоторые платформы ARM подверглись чистке ввиду отсутствия сколь-нибудь значимого количества устройств с ОС Linux, либо ввиду отсутствия поддержки со стороны производителя.
ARM64 также имеет немало обновлений для SoC драйвером, также в подсистеме KVM обновился код PMU (Performance Monitoring Unit) до ARMv8.
Появилась начальная поддержка SoC SiFive FU740, анонсированного в конце прошлого года. Этот чип используется на плате разработки HiFive Unmatched. Другим новшеством для платформы стала поддержка технологии NUMA.
Источник статьи: https://habr.com/ru/company/ruvds/blog/557474/
Патч размером 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 для старых поколений графических процессоров ADM 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
Зонированные блочные устройства обладают непривычными свойствами, это сделано с умыслом и во имя более плотной записи данных. Эти устройства разделены на зоны, в которых не возможен произвольный доступ для операций записи. Запись в таких зонах осуществляется только последовательно, от первого блока и до последнего.
Единственный способ перезаписи данных в последовательной зоне — это сброс указателя записи в начало зоны, что приведет к немедленному удалению всего содержимого. С другой стороны, полностью поддерживается произвольный доступ для чтения. Для файловых систем это создает определенные проблемы, так как разработка драйверов ведется с учетом того, что блоки хранения могут быть записаны в произвольном порядке. До сих пор поддержка зонированных устройств практически отсутствовала в основных ФС, однако с релизом 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 пятого поколения.
В далеком 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.
Источник статьи: https://habr.com/ru/company/ruvds/blog/557474/