Релиз ядра Linux 4.12

3 июля 2017 года

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.12. Среди наиболее заметных изменений: в состав включены планировщики ввода/вывода BFQ и Kyber, для live-патчей реализована гибридная модель обеспечения непротиворечивости, добавлен модуль dm-integrity, интегрирован фреймворк TEE (Trusted Execution Environment), в MD RAID5 добавлена поддержка частичного лога чётности, в blk-throttle обеспечена поддержка "мягких" лимитов, в поставку добавлена утилита "AnalyzeBoot", включён по умолчанию механизм защиты KASLR.

В новую версию принято более 13 тысяч исправлений от 1500 разработчиков, размер патча - 89 Мб, что примерно в два раза больше, чем патч для ядра 4.11 (изменения затронули 12364 файлов, добавлено 1300537 строк кода, удалено 266937 строк). Около 45% всех представленных в 4.12 изменений связаны с драйверами устройств, примерно 16% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 3% - файловыми системами и 3% c внутренними подсистемами ядра.

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

  • Дисковая подсистема, ввод/вывод и файловые системы
  • Для многоуровневой системы очередей (multiqueue) реализованы планировщики ввода/вывода BFQ (Budget Fair Queueing) и Kyber, специально рассчитанные на организацию многопоточного доступа к данным на многоядерных системах. Ранее реализация multiqueue считалась незавершённой из-за отсутствия планировщиков, специально созданных для работы с многоуровневыми очередями. BFQ манипулирует распределением бюджетов на ввода/вывод между процессами и позволяет добиться хороших показателей отзывчивости для интерактивных приложений при использовании дисковых носителей или медленных моделей SSD-накопителей.

Kyber минималистичен (около 1000 строк кода), оптимизирован для работы с быстрыми SSD-накопителями и манипулирует двумя основными очередями - очередь для синхронных запросов (операции чтения) и очередь для асинхронных запросов (операции записи). Операции чтения рассматриваются как синхронные, так как они, как правило, блокируют работу процесса пока данные не будут получены. А запись отнесена к асинхронным, так как процесс может сразу продолжить работу после операции записи, которая может быть фактически завершена позднее. Kyber считает операции чтения более приоритетными, но не настолько, чтобы сильно задерживать запись;

  • В модуль управления пропускной способностью ввода/вывода blk-throttle добавлен новый лимит "low", который можно использовать для задания мягких ограничений ресурсов ввода/вывода. Группа (cgroup) может превысить low-ограничение, но только при условии, что все активные группы уже достигли данного лимита. Через настройки можно корректировать период выборки, используемый контроллером cgroup, для тонкого контроля над нагрузкой на CPU. Кроме того в blk-throttle реализован масштабируемый фреймворк для управления приоритезацией ввода/вывода;
  • В подсистему LightNVM добавлен обработчик "pblk", который позволяет работать с экзотическими SSD-накопителями типа open-channel (не имеют прошивки с FTL/Flash Translation Layer) как с обычными блочными устройствами;
  • В MD RAID5 добавлена поддержка возможности Partial Parity Log(недоступная ссылка) (PPL), присутствующей в RAID-массивах Intel IMSM, которая позволяет снизить вероятность повреждения данных ( Write Hole) в случае работы с рассинхронизированным массивом, один из накопителей в котором не соответствует данным на других дисках, а массив находится в состоянии "degraded", т.е. отсутствует возможность пересчитать блоки чётности. Так как PPL требует сохранения дополнительных избыточных данных, включение данного режима приводит к снижению производительности записи на 30-40%. В dm raid для борьбы с Write Hole добавлена поддержка журнала обратной записи для RAID 4/5/6;
  • В MD RAID проведена работа по увеличению эффективности кэширования и увеличению производительности ввода/вывода для массивов RAID 5 и 6 при использовании жестких дисков;
  • Для Device Mapper реализован новый модуль dm-integrity (Архивная копия от 14 января 2019 на Wayback Machine), который обеспечивает эмуляцию блочного устройства с дополнительными метками в секторах, в которых может сохраняться информация для контроля целостности данных на уровне отдельных секторов. Поддержка предоставляемых dm-integrity метаданных добавлена в dm-crypt и может применяться обеспечения для неизменности зашифрованных данных (Authenticated Encryption, гарантирует, что блок данных не был модифицирован обходным путём) и хранения векторов инициализации;
  • Удалён устаревший драйвер hd для жестких дисков с интерфейсом MFM/RLL, используемым на заре рождения ПК до появления интерфейса IDE. Драйвер был написан Линусом и поставлялся начиная с версии ядра 0.01;
  • Реализована новая ioctl-команда GETFSMAP, которую можно использовать для анализа физического размещения экстентов в файловой системе. Например, при помощи GETFSMAP можно определить данные какого файла связаны с указанным физическим блоком. Поддержка GETFSMAP добавлена для XFS и ext4;
  • В Btrfs устранена серия проблем, проявляющихся в RAID 5 и 6 при проверке целостности данных ("Scrubbing") или перемещении дисков;
  • Виртуализация и безопасность
  • В состав включен фреймворк TEE (Trusted Execution Environment), предоставляющий средства для задействования возможностей процессоров, таких как

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз ядра Linux 4.12», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.