- +

Автор: denkin Тема: Релиз ядра Linux 4.14  (Прочитано 31 раз)

Оффлайн denkin

  • Global Moderator
  • Старожил
  • *****
  • Сообщений: 1069
  • Репутация: +67/-2
    • Просмотр профиля
Релиз ядра Linux 4.14
« : Ноябрь 13, 2017, 21:01:28 »
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.14. Среди наиболее заметных изменений: поддержка технологии AMD Secure Memory Encryption, возможность адресации до 128 Пб виртуальной памяти, поддержка алгоритма сжатия zstd, режим zero-copy для прямой передачи данных в сокеты из памяти процессов, включение в состав подсистемы HMM (Heterogeneous memory management).

В новую версию принято 13500 исправлений от 1300 разработчиков, размер патча - 51 Мб (изменения затронули 23024 файлов, добавлено 618312 строк кода, удалено 343899 строк). Около 32% всех представленных в 4.14 изменений связаны с драйверами устройств, примерно 32% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 8% связано с сетевым стеком, 3% - файловыми системами и 5% c внутренними подсистемами ядра.
Spoiler: Подробности • показать

"Основные новшества:

Дисковая подсистема, ввод/вывод и файловые системы
Проведена большая работа по увеличению производительности подсистемы дисковых квот. Производительность создания файлов при включенных квотах в ext4 возросла примерно в два раза;
В ext4 увеличена масштабируемость при выделении места под inode. Обеспечена обратная совместимость с реализацией ea_inode из ФС Lustre;
В сетевой файловой системе CIFS добавлена поддержка чтения и записи расширенных атрибутов (xattr) с использованием протокола SMB2 и новее. В SMB3 добавлена возможность согласования диалектов для использования наиболее защищённой версии, поддерживаемой сервером (SMB2.1, SMB3.0, SMB3.02);
В Btrfs и SquashFS добавлена поддержка алгоритма сжатия zstd, который может рассматриваться как оптимальный компромисс, между быстрым но неэффективным lz4 и медленным но хорошо сжимающим xz. По сравнению с zlib/Deflate, zstd демонстрирует в 3-5 раз более высокую скорость сжатия и в два раза более быструю распаковку, при уровне сжатия выше на 10-15%.
В Btrfs добавлена возможность доступа на запись в деградировавшие RAID-массивы, если целостность всех блоков не нарушена. Улучшены алгоритмы распределения данных при использовании Btrfs на SSD-накопителях. Обеспечена возможность применения rbtree для отслеживания ссылок;
В F2FS добавлена поддержка обычных и журналируемых квот, добавлены ioctl F2FS_IOC_FS{GET,SET}XATTR, обеспечена возможность хранения контрольных сумм для inode;
Добавлен новый флаг IOCB_NOWAIT, при установке которого асинхронные операции буферизированного блочного ввода/вывода выполняются по возможности как в неблокирующем режиме (например, без флага IOCB_NOWAIT могут блокироваться операции управления памятью);
Виртуализация и безопасность
Добавлена поддержка шифрования отдельных страниц памяти при помощи представленной в процессорах AMD технологии SME (Secure Memory Encryption). SME позволяет пометить страницы памяти как подлежащие шифрованию, после чего данные страницы будут автоматически зашифрованы при записи в DRAM и расшифрованы при чтении из DRAM;
Из-за невостребованности и отсутствия сопровождающего удалён код системы виртуализации lguest, позволяющей загружать ядра Linux как пользовательский процесс;
Добавлена возможность использования file capabilities в пространстве имён идентификаторов пользователя (user namespaces), что позволяет обойтись одним расширенным атрибутом security.capability для любого файла;
Расширен перенесённый из патчей grsecurity плагин к GCC для рандомизации раскладки структур данных, который на этапе сборки делает непредсказуемым следование полей в структурах и затрудняет проведение атак, базирующихся на знании раскладки структур в ядре. Плагин теперь дополнительно автоматически выполняет перегруппировку элементов структур, состоящих целиком из указателей на функции;
Добавлена поддержка GCC-плагина structleak, обеспечивающего инициализацию всех переменных, которые используются в коде через обращение по ссылке (позволяет блокировать потенциальные утечки содержимого памяти);
В Xen добавлен фронтэнд для PV Calls ABI, позволяющий перенаправлять POSIX-вызовы между гостевыми системами. При помощи PV Calls вызов POSIX-функции, инициированный из приложения в DomU, может быть перенаправлен и обработан на стороне Dom0. Например, обращение к сетевому сокету может быть выполнено на стороне Dom0, позволяя реализовать новую сетевую модель, естественно вписывающуюся в концепцию cloud-native приложений;
Сетевая подсистема
Реализована возможность отправки данных в сетевой сокет в режиме zero-copy (вызов send с флагом MSG_ZEROCOPY), позволяющем организовать передачу данных по сети без промежуточной буферизации;
В подсистему GRE (Generic Routing Encapsulation) добавлена поддержка второго типа туннелей ERSPAN, которые могут использоваться для приёма или перенаправления трафика с данными мониторинга от коммутаторов Cisco;
Добавлена поддержка расширенных механизмов обработки локальных сегментов, определённых в новых вариантах спецификации IPv6 Segment Routing, а также возможность инкапсуляции пакетов IPv4;
В net/ncsi добавлена поддержка фильтрации VLAN;
Добавлена поддержка протокола NSH (Network Service Header), который может применяться как протокол третьего уровня модели OSI (как IPv4 и IPv6);
В netfilter реализована возможность рекурсивного удаления цепочек nf_tables. В xt_hashlimit представлен режим сопоставления по интенсивности поступления числа пакетов или байтов без применения rate limit (в отличие от rate limit, не ограничивает, а классифицирует поток, оценивая находится ли он выше или ниже заданной интенсивности);
Память и системные сервисы
Добавлена поддержка подсистемы Heterogeneous memory management (HMM), позволяющей использовать устройства с собственными блоками управления памятью (MMU, memory management unit), которые могут получать доступ к основной памяти. Например, при помощи HMM можно организовать совместное адресное пространство между GPU и CPU, в котором GPU может получить доступ к основной памяти процесса;
Добавлена система раскрутки стека ORC unwinder, позволяющая повысить надёжность трассировки стека в процессе отладки крахов ядра и увеличить качество анализа стека в момент применения live-патчей на предмет влияния подмены функции на выполняемые в текущий момент процессы. Выполнение раскрутки стека, т.е. определения цепочки вызовов, которые привели к текущему состоянию, является нетривиальной задачей в ядре, так как кроме вызова Си-функций приходится учитывать такие нюансы как вызовы из кода на ассемблере, прерывания и trap-исключения процессора;
В cgroup добавлен режим гибкого управления потоками процесса (cgroup.type threaded), в дополнение к ранее применяемой группировки всех потоков одного процесса и управления этой группой как единым целым. В режиме cgroup.type потоки одного процесса не обязаны входить в одну группу и могут быть разнесены по разным группам, но все из этих групп должны быть с типом threaded и размещаться в одной иерархии cgroup;
В подсистему RDMA, предоставляющую похожие на DMA возможности для организации прямого доступа к памяти другого компьютера, добавлен новый API для использования из пространства пользователя через ioctl();
В системный вызов membarrier(), обеспечивающий установку барьеров на память для всех работающих в системе потоков, добавлен режим MEMBARRIER_CMD_SHARED_EXPEDITED, позволяющий значительно ускорить выполнение вызова, ценой применения IPI (inter-processor interrupt);
В системный вызов madvise(), предоставляющий средства для оптимизации управления памятью процесса, добавлена опция MADV_WIPEONFORK, при которой после выполнении fork() указанный регион памяти будет получен дочерним процессом в обнулённом виде;
Для архитектуры x86 реализована поддержка пятиуровневых таблиц страниц памяти c 56-битной адресацией, позволяющих управлять до 128 Пб виртуального адресного пространства на системах с 4 Пб физической памяти (ранее поддерживалось 256 Тб и 64 Тб соответственно);
В системе динамического управления частотой процессора (cpufreq) появилась возможность раздельного управления каждым CPU, что позволяет улучшить управление питанием и повысить отзывчивость при изменениях нагрузки;
Продолжена оптимизация процесса вытеснения в раздел подкачки больших страниц памяти (Transparent Huge-Pages). Обеспечено откладывание разбиения больших страниц на маленькие до момента фактической записи в раздел подкачки или чтения из него, что позволило поднять пропускную способность вывода в раздел подкачки на 42% за счёт уменьшения конфликтов блокировок;
Реализован JIT-компилятор eBPF для архитектуры ARM;
Оборудование
В DRM-драйвере (Direct Rendering Manager) Nouveau добавлены средства для управления видеорежимами для GPU GP108 (GeForce GT 1030)
В DRM-драйвере AMDGPU добавлена начальная поддержка больших страниц памяти (hugepage) и продолжена реализация поддержки GPU Radeon RX Vega;
В DRM-драйвер для GPU Intel продолжена реализация поддержки грядущих процессоров на базе микроархитектуры Intel Cannonlake, улучшен код для выполнения сброса GPU, добавлена поддержка CCS (color compression) для буфера отрисовки следующего кадра;
Поддержка звуковых кодеков Realtek RT274, Wolfson Microelectronics WM8524 и Cirrus Logic CS43130;
Поддержка USB-контроллеров Atheros ath10k и Ralink USB PHY;
Добавлен драйвер "rtlwifi" для беспроводных карт на базе чипов Realtek RTL8822BE (802.11ac);
Для Raspberry Pi реализована поддержка шины обмена данными HDMI CEC (Consumer Electronics Control), позволяющая при помощи одного универсального пульта управлять устройствами, подключенными через HDMI;
Поддержка встроенных в CPU Allwinner и Freescale i.MX генераторов псевдослучайных чисел, а также средств ускорения криптографии по эллиптическим кривым в чипах Microchip и Atmel;
Поддержка Ethernet-контроллеров Hisilicon HNS3, Rockchip, Marvell CP110 и Adaptrum Anarion GMAC, а также беспроводных адаптеров Realtek RTL8822BE;
Подсистема драйверов IRDA (поддержка инфракрасного порта) перемещена в ветку staging с целью дальнейшего удаления из ядра (драйвер имеет проблемы с качеством кода и при этом не востребован);
Из основного ядра в репозиторий linux-firmware вынесен набор прошивок, ранее поставляемых в каталоге "firmware/". По сути, решено объединить в одном месте разрозненные прошивки, часть которых поставлялась в архиве с ядром, а часть в пакете linux-firmware. Набор прошивок в ядре продолжал поставляться по историческим причинам, но не обновлялся с 2013 года - вся связанная с прошивками активность была перемещена в репозиторий linux-firmware, который ныне рассматривается как актуальный источник прошивок."

(с)

ссылка на новость на opennet

И в то же время:
Доступен полностью свободный вариант ядра Linux-libre 4.14
Spoiler: Подробности • показать

"Латиноамериканский Фонд свободного ПО опубликовал полностью свободный вариант ядра 4.14 - Linux-libre 4.14-gnu, очищенный от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. Кроме того, Linux-libre отключает функции ядра по загрузке несвободных компонентов, не входящих в поставку ядра, и удаляет упоминание об использовании несвободных компонентов из документации.

Для очистки ядра от несвободных частей, в рамках проекта Linux-libre создан универсальный shell-скрипт, который содержит тысячи шаблонов для определения наличия бинарных вставок и исключения ложных срабатываний. Также доступны для загрузки готовые патчи, созданные на основе использования вышеупомянутого скрипта. Ядро Linux-libre рекомендовано для использования в дистрибутивах, соответствующих критериям Фонда СПО по построению полностью свободных дистрибутивов GNU/Linux. Например, ядро Linux-libre используется в таких дистрибутивах, как Dragora Linux, Trisquel, Dyne:Bolic, gNewSense, Parabola, Musix и Kongoni.

В новом выпуске прекращена очистка набора прошивок, поставляемых в каталоге "firmware" (в связи с удалением из ядра данных прошивок). При этом привязки к прошивкам по-прежнему раскиданы по драйверам и компонентам ядра, которые не могут функционировать без их использования. Для предоставления прошивок для ядра проектом Linux-libre запущен собственный репозиторий linux-libre-firmware (Git), в котором собраны только свободные прошивки. Код адаптирован для задействования нового интерфейса загрузки прошивок request_firmware_into_buf. В новой версии также обновлён код для вырезания блобов из микрокода, а также драйверов xrx200, amdgpu, irda-usb, netronome nfp, brcmfmac, iwlwifi, rt5514 и звукового драйвера для чипов Skylake. "

(с)

ссылка на новость на opennet