Релиз ядра Linux 4.8
В новую версию принято более 13 тысяч исправлений от примерно 1500 разработчиков, размер патча - 41 Мб (изменения затронули 11303 файлов, добавлено 627751 строк кода, удалено 278958 строк). Около 39% всех представленных в 4.8 изменений связаны с драйверами устройств, примерно 21% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра.
Основные новшества:
- Дисковая подсистема, ввод/вывод и файловые системы
- В файловую систему XFS добавлена поддержка механизма обратного маппинга (rmap, reverse-mapping), позволяющего файловой системе определить владельца любого блока на устройстве хранения. В настоящее время практическая польза от reverse-mapping не видна, но в будущем данный механизм послужит основой для реализации таких возможностей, как reflink(), режим copy-on-write для данных, дедупликация, расширенные средства информирования о bad-блоках и дополнительные возможности для восстановления повреждений;
- В Ext4 проведена работа по переводу средств шифрования разделов на криптографические функции штатной подсистемы ядра crypt;
- В Btrfs кроме чистки кода и устранения ошибок добавлена переработанная реализация механизма отслеживания исчерпания свободного места на диске (ENOSPC, Error NO SPace), в которой заметно повышена отзывчивость и производительность;
- В F2FS добавлены изменения, увеличивающие масштабируемость и снижающие нагрузку на CPU при выполнении операций обновления таблицы резервных inode при операциях записи. Добавлен ioctl для перемещения блоков данных между файлами;
- В dm-raid появилась поддержка добавления дополнительных накопителей в RAID-массив (reshaping) и изменения уровня RAID;
- Реализована возможность экспортирования по сети устройств хранения с интерфейсом NVM Express, используя протоколы, подобные RDMA;
- В подсистему device-mapper добавлена поддержка применения механизма DAX для прямого доступа к низкоуровневым устройствам постоянной памяти;
- В распределённую файловую систему OrangeFS (продолжение развития PVFS) добавлена возможность задействования кэша на базе dcache и кэша атрибутов на стороне ядра, что заметно ускоряет выполнение операций с мелкими файлами. Например, сборка coreutils без кэширования занимает 17 минут, а с кэшем - 6 минут 20 секунд;
- В ФС Ceph добавлена полная поддержка пространств имён RADOS (Reliable Autonomic Distributed Object Store).
- Поддержка технологии "transparent huge pages" в tmpfs, позволяющая оперировать страницами памяти большого размера;
- В многослойной ФС Overlayfs проведена работа по обеспечению поддержки SELinux;
- В ядро добавлена реализация простейшего сервера pNFS (Parallel NFS). Внесены оптимизации производительности в код NFS-клиента;
- Сетевая подсистема
- В TCP-стек добавлена поддержка алгоритма контроля перегрузки "New Vegas", который является модернизированным вариантом алгоритма Vegas и также оперирует задержками в доставке пакетов вместо информации о потере пакетов. Новый алгоритм оптимизирован для использования в крупных высокоскоростных сетях и ЦОД с каналами связи в 10 гигабит и выше;
- В подсистеме mac80211 ("WiFi") вместо предоставляемых сетевым стеком дисциплин обработки очередей ожидающих отправки пакетов задействован алгоритм CoDel (Сontrolled Delay - управляемая задержка), который позволил существенно поднять производительность работы в беспроводных сетях;
- Протокол RDS (Reliable Datagram Sockets), позволяющий создавать сокеты для надёжной передачи датаграмм поверх TCP-линков, расширен возможностью передачи сразу через несколько соединений TCP, что позволило добиться существенного увеличения максимальной производительности;
- Сетевым драйверам предоставлена возможность загрузки BPF-программ для предварительной обработки входящих пакетов, до их помещения во внутренние структуры данных. Указанную возможность можно применять, например, для отбрасывания, изменения или перенаправления пакетов на ранней стадии их обработки, что позволяет увеличить производительность данных операций за счёт обхода вызова обработчиков ядра;
- Добавлен драйвер с программной реализаций RDMA поверх Ethernet, позволяющий использовать протоколы InfiniBand Remote DMA с обычным сетевым стеком ядра;
- Память и системные сервисы
- Представлен новый механизм обновления таблиц ACPI из прошивок или через configfs;
- Для подсистемы GPIO представлен новый ABI пространства пользователя для управления линиями ввода/вывода общего назначения. ABI основан на применении символьного устройства и заменяет собой давно устаревший интерфейс на базе sysfs;
- Для архитектуры ARM64 добавлена возможность использования механизма kexec, позволяющего загрузить новый экземпляр ядра из уже работающего ядра Linux;
- Представлен новый параметр командной строки printk.devkmsg, который может быть использован для управления отправкой данных в лог ядра из пространства пользователя через /dev/kmsg. Значение off отключает отправку из пространства пользователя, а числовое значение устанавливает лимит на интенсивность отправки данных;
- Новая внутренняя подсистема обработки таймаутов, появление которой направлено на решение проблем с отзывчивостью (latency);
- Добавлен фреймворк HDMI CEC (Consumer Electronics Control) позволяющий унифицировать управление устройствами, подключенными через HDMI, и управлять ими с одного пульта;
- В систему сборки добавлена возможность использования плагинов GCC, которые могут применяться для дополнительного анализа или изменения кода во время компиляции. Например, уже реализована поддержка плагинов для тестирования покрытия кода (coverage testing) и вычисления цикломатической сложности;
- Представлена новая система для форматирования документации к ядру, основанная на использовании в текстовых файлах разметки reStructuredText (RST) и пакета Sphinx. Новая система позволяет генерировать корректно оформленную документацию к ядру в форматах HTML, LaTeX, ePub и PDF. Документация к мультимедийным подсистемам и DRM уже переведена с DocBook на RST;
- Виртуализация и безопасность
- Усиление защиты операций копирования данных между ядром и пространством пользователя. В ядро включён вариант технологии PAX_USERCOPY, разработанной проектом grsecurity, добавляющий дополнительные проверки используемых при копировании диапазонов адресов для предотвращения обращения к областям памяти ядра вне границ буфера, выделенного для копирования;
- Поддержка контейнеров с эмуляцией архитектуры, позволяющих запускать в изолированном контейнере код, собранный для аппаратных архитектур, отличных от архитектуры хост-системы. Например, на системах с архитектурой x86_64 теперь можно запустить контейнер с окружением для ARM64.
- Генератор псевдослучайных чисел (/dev/random, /dev/urandom) заменён на новую, более высокопроизводительную, реализацию, основанную на использовании потокового шифра ChaCha20 и включающую наработку по решению проблем с масштабируемостью в условиях когда программам в пространстве пользователя требуются большие объёмы случайных чисел;
- Для архитектуры x86_64 включена поддержка рандомизации адресного пространства ядра (KASLR, Kernel Address Space Layout Randomization). Расширено число типов регионов памяти ядра для которых применяется рандомизация. В SLUB memory allocator добавлена рандомизация списков свободных областей;
- В подсистему crypto добавлен новый механизм согласования ключей (Key-agreement Protocol Primitives API - KPP), который может быть использован для реализации протоколов обмена ключами, таких как DH и ECDH;
- Для IPv6 добавлена поддержка стандарта CALIPSO (Common Architecture Label IPv6 Security Option), который может быть использован для прикрепления связанных с безопасностью меток к пакетам, которые затем могут быть связаны с политиками SELinux и Smack;
- В загружаемых модулях ядра обеспечена возможность использования портированного из grsecurity механизма защиты __ro_after_init (post-init read-only memory), позволяющего создавать доступные на чтение и запись области памяти, используемые только во время инициализации и переводимые в режим только для чтения после инициализации;
- В состав включена инфраструктура Virtio vsock, позволяющая упростить обмен данными между хост-системой и работающими виртуальными машинами, благодаря применению обычных сокетов POSIX;
- Оборудование
- В драйвер AMDGPU добавлена поддержка технологии OverDrive для повышения производительности через разгон частоты GPU и памяти (допускается разгон до 20%). Также улучшена энергоэффективность для чипов Polaris и внесены улучшения, связанные с поддержкой технологий PowerPlay для снижения энергопотребления;
- В DRM-драйвер (Direct Rendering Manager) Nouveau добавлена начальная поддержка видеокарт NVIDIA на базе GPU Pascal. Аппаратное ускорение пока поддерживаются только для чипов GP100 (GeForce GTX Titan). Для более новых карт (GP104/GeForce GTX 1000 и новее) предоставляются только базовые средства управления видеорежимами, так как для включения ускорения требуется верификация прошивки по цифровой подписи. Улучшено управление питанием для чипов GK20A и GM20B;
- В DRM-драйвере Intel добавлена поддержка виртуального GPU GVT-g на системах с процессорами Broadwell и новее. По умолчанию включена поддержка компонентов BXT (Balanced Technology Extended).
- В состав включен новый драйвер для GPU ARM Mali, в котором пока поддерживаются только GPU DP500, DP550 и DP650 и отсутствуют средства для задействования аппаратного ускорения 3D-операций;
- Обеспечена поддержка 64-разрядного SoC BCM2837, используемого в Raspberry Pi 3. Также добавлена поддержка SoC Freescale i.MX7Solo, Qualcomm MDM9615, Renesas r8a7792 и Renesas r8a7796;
- Добавлена поддержка свободного процессора "J-Core J2", VHDL (VHSIC Hardware Description Language) спецификации которого доступны под лицензией BSD.
- По сравнению с прошлым выпуском обеспечена поддержка около 500 новых аппаратных компонентов, из которых 175 имеют интерфейсы PCIe/PCI или USB. В том числе:
- В драйвере Ath10k появилась поддержка чипов Atheros QCA9888.
- Добавлен драйвер intel-vbtn (Intel Virtual Button), который, например, необходим для работы кнопки включения питания на ноутбуке Dell XPS 13.
- Появилась поддержка тачпадов Alps.
- Добавлена поддержка DVB-тюнеров Sony HELENE и Hauppauge WinTV.
- Добавлен драйвер для задействования EDAC (Error Detection and Correction) в процессорах Intel Core i 6000 (Skylake).
Латиноамериканский Фонд свободного ПО оперативно сформировал вариант полностью свободного ядра 4.8 - Linux-libre 4.8-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске обеспечена возможность работы без блобов видеокарт Radeon Evergreen. Проведены операции по чистке блобов в драйверах mtk_vpu, ks7010_sdio, raydium_i2c_ts, silead, qcom_q6v5_pil, qcom_mdt_loader и rt5514. Обновлён код для вырезания блобов в драйверах mn88472, iwlwifi, skl, brcmfmac, radeon, i915_csr и usb.
Источник: http://www.opennet.ru/opennews/art.shtml?num=45264
|
0 | Tweet | Нравится |
|