Вышел Linux 5.8 — один из величайших. Более подробный обзор
В начале августа Линус Торвальдс представил новую версии ядра Linux. Согласно давней традиции сам релизы крупнейшего проекта с открытым исходным кодом происходит вполне буднично, создатель пишет электронное письмо в рассылку коллегам по цеху с кратким резюме по новой стабильной версии кернела.
Особенностью ядра 5.8 стало рекордное количество изменений за все время существование проекта. Был лишь один более крупный релиз ядра Linux 4.9, но тот был искусственно раздут из-за новой подсистемы greybus в то время, как 5.8 действительно вобрал в себя больше изменений по самым разным направлениям. Посмотрим, что есть такого полезного и интересного в Linux 5.8, а заодно и 5.8.1 главным образом для обычных пользователей и рабочих станций.
Патч размером 64 MiB содержит труд 1991 разработчиков, в т. ч. 304 новых. Усилиями сообщества добавлено 904 тыс. и удалено 553 тыс. строк кода. Если смотреть в разрезе компаний, то среди самых активных есть знакомые имена.
- Intel;
- Huawei Technologies;
- Habana Labs;
- Red Hat;
- Google;
- Linaro;
- IBM;
- AMD;
- Mellanox;
- SUSE;
Графика
Львиную долю кодовой базы ядра Linux занимают драйвера, поэтому совсем не удивительно, что им посвящена значительная часть изменений и обновлений релиза.
Поддержка GPU драйверов Adreno 405 / 640 / 650
Благодаря обновлению открытых драйверов MSM (Freedreno), добавлена поддержка графических процессоров Qualcomm Adreno 405, 640 и 650. Эти мобильные GPU можно увидеть на некоторых из последних SoC (system on a chip), таких, как Snapdragon 855+ и Snapdragon 865. Эти чипы можно встретить в смартфонах Samsung Galaxy S10 / S20, OnePlus и многих других гаджетах.
В то же время в рамках открытых API OpenGL и Vulkan продолжают развиваться драйвера Adreno, соответственно с Freedreno Gallium3D и TURNIP. Новые изменения войдут в Mesa 20.2-devel.
Многочисленные улучшения драйверов amdgpu
AMD из кожи вон лезла, чтобы улучшить качество графических драйверов в Linux 5.8. Наряду с повышением производительности, реализована возможность использования шифрованных буферов видеопамяти (Trusted Memory Zone).
AMD Radeon Trusted Memory Zone предназначена для защиты избранных страниц от чтения со стороны центрального процессора, а также иных отличных от GPU клиентов и предотвращения записи на защищенные TMZ страницы.
Кроме того в драйвер добавлена поддержка пиксельного формата FP16 и завершена обширная работа по предоставлению однорангового совместного использования DMA буферов между устройствами (p2p DMA-BUF) без поддержки страниц системной памяти.
Файловые системы
Ожидаемые обновления вызывающей противоречивые чувства Btrfs, FAT, exFAT и других.
Разнообразные усовершенствования Btrfs
OpenSUSE и SUSE Linux одни из немногих, использующих Btrfs в качестве основной файловой системы. Не удивительно, что SUSE представила ряд патчей для этой ФС. В результате для Btrfs была улучшена обработка операций чтения в режиме I/O.
- код прямого ввода-вывода был перенесен на интерфейсы iomap;
- теперь при сбое при удалении вложенного тома из-за нехватки места файловая система не становится доступна только для чтения;
- устранение различных дефектов и чистка кода.
Сжатие с использованием алгоритма LZO-RLE в F2FS
Заметным новым дополнением для Flash Friendly File System в новой версии ядра Linux является формат сжатия LZO-RLE. LZO Run-Length Encoding нацелена на те же степени сжатия, что и у стандартного алгоритма LZO, но с более высокой производительностью. Это стало возможным после того, как реализация LZO-RLE была внесена в ядро в прошлом году ARM.
Поддержка верификации загрузочной области exFAT
Компания Samsung представила улучшения exFAT для ядра Linux 5.8, в новой версии драйвера есть ряд исправления и оптимизаций. В частности проведена очистка кода, улучшено журналирование и оптимизирована функция кеширования записей. Также инженеры компании добавили новую функциональность — проверку области загрузки для exFAT.
Повышение I/O производительности SMB v3 / CIFS
Определен новый параметр nodelete, с которым клиенту можно запускать штатные проверки на сервере, но запрещено удалять файлы и папки. Патчи SMB v3 содержат значительное улучшение производительности для больших операций ввода-вывода при использовании многоканальности, а также исправления DFS.
Улучшение упреждающей загрузки элементов в FAT
Опережающее чтение для записей FAT в предыдущее версии было очень простым, но имело некоторые недостатки, из-за чего в некоторых средах оно работало не эффективно.
Благодаря механизму обновления окна опережающего чтения до полного исчерпания и настраиваемому bdi→ra_pages удалось добиться значительного повышения производительности. На медленном 2TB USB-накопителе провели тест, результат — сокращение времени прохождение теста с 383 до 51 с.
Поддержка DAX для Ext4 и XFS
DAX, или Direct Acces предназначен для прямого доступа к файловой системе в обход страничного кеша. Минуя кеширования страниц в режиме DAX означает отказ от дополнительной копии для чтения / записи на устройство хранения. В свою очередь это позволяет напрямую и более эффективно отображать устройство хранения в пользовательское пространство.
Данные усовершенствования DAX кода со стороны компании Intel позволяют активировать режим прямого доступа для каждого inode, а не просто включать, или выключать для всей файловой системы. Также с помощью системного вызова statx () можно из пользовательского пространства запрашивать состояние прямого доступа к конкретному файлу.
Сетевая подсистема
TCP/IP стек ядра Linux занимает особое место в общей картины ввиду существенной сложности архитектуры и огромным возможностям по использованию в самых разнообразных устройствах. Сетевая инфраструктура больше других обеспечивает доминирование Linux ОС на серверах и продолжает развиваться семимильными шагами.
- Netfilter, в модуле nftables обеспечено динамические обновления устройств для таблиц потоков;
- *MRP, добавлена поддержка Media Redundancy Protocol — сетевого стандарта IEC 62439–2. Протокол позволяет обеспечить устойчивость к сбоям в сети, объединив в кольцо несколько Ethernet коммутаторов, при этом работает быстрее, чем STP.
- bluetooth, новые драйвера для Realtek RTL8761B, Intel Typhoon Peak и Qualcomm QCA6390;
- lx5/mlx5e, сетевые карты Mellanox обычно используются в критически важных установках, где требуются скорости 10, 40 и 100 гигабит. Обширный список изменений для драйверов mlx5 и mlx5e касается улучшений в TLS, IPsec, MPLS и пр;
- rnbd, новое сетевое блочное устройство RNBD позволяет организовать удаленный доступ к блочному при помощи RDMA транспорта RTRS. Последний поддерживает работу с несколькими путями, обеспечивает переключение ввода-вывода и балансировку нагрузки.
Обновления Wi-Fi
- Драйвер ath10k наконец-то получил поддержку режимов VHT160 и VHT80+80. Это должно привести к значительно более высокой скорости беспроводной связи для пользователей систем с беспроводной картой Qualcomm Atheros IEEE 802.11ac и точкой доступа Wifi 5(802.11ac).
- Драйвер iwlwifi стал поддерживать ACPI DSM (device specific method) для новых чипов Intel.
Обновления Ipv6
- Ipv6 стек обзавелся поддержкой MPLS;
- Добавлена инкапсуляции IPv6 для ESP через транспорт UDP и TCP;
- Реализована поддержка RFC 6069. Стандарт описывает алгоритм TCP Long Connectivity Disruptions, обеспечивающий возможность сделать транспорт TCP более устойчивым к длительным сбоям связи.
Безопасность
Сюда вошли исправления связанные с интеловскими дырами безопасности типа Spectre, SELinux, блокировкой модулей ядра с битами исполнения и записи, генератором случайных чисел и пр.
Исправления по устранению уязвимости Spectre
Очевидно, что Intel в ближайшее время не перевыполнит план по устранению всех последствий уязвимости класса Spectre в своих чипсетах.
Речь идёт о нескольких срочных исправлений для ядра Linux по обработки спекулятивного выполнения x86 / x86_64 инструкций. Это случилось после того, как инженер безопасности из Google обнаружил данную уязвимость, и тот факт, что одно из предыдущих исправлений, в качестве побочного эффекта затронула процессоры AMD.
Indirect Branch Prediction Barrier (IBPB) — защита от атак целевого буфера ветвлений для второго варианта Spectre, будет принудительно выключена в Linux. Условием являются сценарии, когда STIBP недоступен или доступны косвенные ограниченные спекуляции ветвлений (IBRS).
Чипы и чипсеты
В Linux 5.8 было много изменений для архитектуры ARM.
Начальная поддержка загрузки процессоров Power 10
Power 10 — это будущий процессор от компании IBM и фонда OpenPOWER, который, как ожидается, поступит в продажу в 2021 году и будет производиться по 7-нм техпроцессу. По предварительным данным новый чип предлагает значительные улучшения по сравнению с существующей микроархитектурой Power 9.
Помимо базовой поддержки загрузки для архитектуры Power 10, ядро Linux 5.8 также поддерживает набор инструкций с префиксом Power 10.
Поддержка новых ARM SoC
В соответствии с прогрессом подсистемы Linux ядра для Android к списку поддерживаемых устройств добавились:
- Realtek RTD1195 в качестве решения на базе Arm Cortex A7;
- Realtek RTD1395;
- Realtek RTD1619;
- Платформа Renesas RZ/G1H;
- Бюджетный 64-битный Rockchips RK 3326 SoC вместе с игровой консолью Odroid-GO Advance;
- TV-приставка Smartlabs SML-5442TW на базе AMLogic S905D;
- ODROID-C4 на базе AMLogic S905×3;
- TV-приставка Beelink GT-King Pro на базе AMLogic S922XH;
- Baseboard Management Contrioller на базе Aspeed ast 2500 в Facebook x86 Yosemite V2 и YADRO OpenPower P9 Nicole;
- Olimex A20-OLinuXino-LIME-eMMC SBC;
- Маршрутизатор Check Point L-50;
- Хромбуки Elm/Hana на базе Mediatek MT8173;
- Смартфон Samsung Galaxy S2 на базе;
- Платформа Qualcomm SDM660/SDM630 и смартфон Xiaomi Redmi Note 7;
- TV-приставка Xnano X5 на базе Realtek RTD1295;
Новый AMD Energy драйвер
Новый и долгожданный драйвер AMD Energy для мониторинга датчиков энергии на процессорах Zen/Zen 2. Это позволяет получать отчеты об энергопотреблении по каждому сокету/ядру на процессорах AMD Zen/Zen2.
Интерфейс Thunderbolt/USB4 на процессорах Intel Tiger Lake
Всего лишь 28 строк кода в этом патче обеспечили поддержку Thunderbolt/USB4 для чипов Tiger Lake, в значительной степени благодаря повторному использованию наработок для Ice Lake.
Интерфейс Thunderbolt также может работать на архитектуре ARM, используя карту расширения Thunderbolt PCIe. На данный момент ARM SoC устройства пока что отсутствуют.
Стабильный релиз Linux 5.8.1
Минорный релиз Linux 5.8.1 представляет собой небольшое обновление, которое изменяет в общей сложности 40 файлов с 548 вставками и 186 удалениями. Он в основном содержит исправления ошибок для различных драйверов:
- GPIO, max77620;
- LEDs;
- SCSI;
- MTD;
- PCI, tegra;
- USB;
- звук;
- видео;
- Обновления для архитектуры ARM64;
- Обновления для архитектуры PowerPC.
Который кернел наиболее полезен?
Всегда по выходу новой стабильной версии Linux ядра с множеством полезных обновлений, может возникнуть зуд незамедлительно скачать архив с kernel.org, подкрутить настройки из menuconfig, или xconfig, скомпилировать и загрузиться с новоиспеченного образа. Все же не стоит торопиться и вот почему.
Мейнтейнер стабильной ветки Грег Кроа-Хартман составил небольшой рейтинг стабильных веток. Вот как он выглядит.
- Стабильное и актуальное ядро вашего дистрибутива Linux.
- Последний стабильный релиз.
- Последний LTS (Long Term Support) релиз;
- Более ранний LTS релиз, который все еще поддерживается.
На первом месте по критерию целесообразности находится Linux ядро, скомпонованное специально для вашего дистрибутива. Оно содержит все необходимые патчи и специальные настройки. Кроме того разработчики дистрибутива проделывают массу работы по обратному переносу ошибок, а иногда и новых функции в код ядра, и все это в донкихотском стремлении не изменять мажорный номер версии, несмотря на наличие многих тысяч изменений.
Учитывая эти соображения, имеет смысл дождаться пока новое ядро станет доступно для вашего дистрибутива. Для Debian Linux и RHEL, а также Android устройств возможно пройдут года прежде, чем новое ядро будет в боевой эксплуатации. Однако есть масса дистрибутивов для рабочих станций и обычных пользователей, для которых новое ядро становится доступным в течение нескольких недель.
Из новых дистрибутивов Ubuntu Linux 20.10 (Groovy Gorilla) выйдет с ядром Linux 5.8 в октябре 2020 г.