Релиз ядра Linux 3.15. Обзор новшеств
В новую версию принято более 12 тысяч исправлений от 1400 разработчиков, размер патча - 57 Мб (изменения затронули 11428 файлов, добавлено 932468 строк кода, удалено 571846 строк). Около 44% всех представленных в 3.15 изменений связаны с драйверами устройств, примерно 18% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - файловыми системами и 4% c внутренними подсистемами ядра.
Из наиболее интересных новшеств можно отметить:
- Память и системные сервисы
- Включены наработки компании Intel по ускорению процесса возврата из ждущего режима на системах с дисковыми контроллерами SATA. Благодаря организации асинхронного одновременного вывода из ждущего режима дисков и прочих устройств, время пробуждения ноутбуков удалось сократить в 7-12 раз. Например, время вывода из ждущего режима компьютера на базе Intel Core i7 3960X уменьшилось с 11.6 до 1.1 секунд (в 10.5 раз), ноутбука на базе Intel Core i7 3770 с 5.4 до 0.45 секунд (в 12 раз), а ноутбука на базе Intel Core i7 4770S с 5.4 до 0.69 секунд (в 7.8 раз). Ранее узким местом возврата из ждущего режима было ожидание готовности SATA-контроллеров после поступления питания. Теперь, драйвер дискового контроллера мгновенно возвращает управление, не дожидаясь запуска контроллера (поступающие до готовности контроллера обращения к диску приостанавливаются), что позволяет ядру во время пробуждения SATA-контроллера выполнить другие операции возврата из ждущего режима, не связанные с дисковым вводом/выводом, например, инициализировать графическую подсистему;
- Добавлены новые патчи для улучшения сборки с использованием компилятора Clang, подготовленные в рамках проекта LLVMLinux. Пока ядро из коробки не может быть собрано при помощи Clang без дополнительных патчей, но цель уже очень близка. Недостающие патчи планируется интегрировать в ядро 3.16;
- Реализация смешанного режима EFI (EFI mixed mode), который позволяет загрузить 64-разрядное ядро из 32-разрядной прошивки, что может потребоваться при работе загрузчиков с поддержкой протокола EFI Handover;
- В подсистему обеспечения эффективного управления питанием (pm_qos) добавлена поддержка режима "терпимой отзывчивости" (DEV_PM_QOS_LATENCY_TOLERANCE) с реализацией механизма передачи устройству данных о требуемой отзывчивости, что может быть использовано для предотвращения ввода устройства в слишком глубокие режимы энергосбережения, если выставленное QoS-значение требует оперативного пробуждения;
- Добавлен системный вызов renameat2, предоставляющий средства для атомарной замены имён двух файлов (первый файл переименовывается во второй, а второй в первый). Также добавлен флаг RENAME_NOREPLACE, при котором операция переименования не приводит к замене уже существующего файла;
- Поддержка приватных для файлов POSIX-блокировок (file-private POSIX locks), предоставляющих более приемлемый для многопоточных программ API для организации блокировок доступа к файлам, комбинирующий возможности механизмов BSD- и POSIX- блокировок. Основное отличие от классических POSIX-блокировок заключается во владельце блокировки: классической POSIX-блокировкой владеет процесс, а приватная POSIX-блокировка принадлежит открытому файлу;
- Значительно улучшена работа системы управления памятью в плане создания эвристических методов для балансировки между active/inactive списками в ситуации кратковременного вывода страниц из памяти. Включен набор патчей для оптимизации VMA-кэширования (Virtual Memory Areas) в привязке к отдельным нитям. В итоге, удалось добиться повышения производительности подсистемы управления памятью для различных типов нагрузки;
- В блочном устройстве zRAM, применяемом для хранения раздела подкачки в ОЗУ в сжатом виде, обеспечена поддержка метода сжатия LZ4;
- Сетевая подсистема
- В интерфейс фильтрации пакетов ipset добавлен новый тип наборов "hash:ip,mark" для сопоставления с пакетами, на которые установлены определённые метки, добавленные при помощи высокоуровневых утилит;
- Переписана реализация JIT-компилятора для кода BPF с задействованием нового набора инструкций BPF. Язык BPF теперь представлен в двух вариантах - "классический BPF" и "внутренний BPF", полностью скрытый от пространства пользователя (транслируется из классического BPF перед первым запуском) и быстрее компилируемый в машинный код. Во "внутреннем BPF" с двух до десяти расширено число регистров, добавлена серия инструкций соответствующих реальным процессорным инструкциям, реализованы 64-разрядные регистры, добавлена возможность обращения к ограниченным функциям ядра. В будущем планируется предоставить возможность загрузки "внутреннего BPF" из пространства пользователя (например, для использования компиляторов в BPF из Си-подобных сценариев) и реализовать средства для применения BPF в подсистемах ядра, отличных от сетевой (например, задавать в BPF правила трассировки).
- Дисковая подсистема, ввод/вывод и файловые системы
- В подсистему FUSE (filesystems in user space) добавлена поддержка кэширования с отложенной записью (writeback), которое позволяет поднять производительность в условиях интенсивность записи;
- В Device Mapper добавлен новый модуль "dm-era", предназначенный для поддержания списка блоков, изменённых за определённый пользователем промежуток времени. С практической стороны, при помощи dm-era можно отслеживать изменённые блоки для систем резервного копирования или частично сбрасывать кэш для восстановления состояния после отката на снапшот;
- Добавлен драйвер, позволяющий представить Flash в виде блочного устройства (пока только в режиме только для чтения), что позволяет использовать любую файловую систему поверх Flash-устройств в raw-режиме;
- В реализацию системного вызова fallocate() для файловых систем ext4 и XFS добавлена поддержка операций FALLOC_FL_ZERO_RANGE и FALLOC_FL_COLLAPSE_RANGE, позволяющего очень быстро обнулить или удалить кусок из файла;
- Для файловой системы XFS реализована поддержка флага O_TMPFILE, позволяющего передать файловой системе информацию о создании временного файла, не видимого в иерархии ФС. Создание временного файла без имени позволяет разработчикам приложений не задумываться о возможных уязвимостях, таких, как атака через символические ссылки;
- Поддержка монтирования подразделов Btrfs с разными опциями ro/rw;
- Удалена реализация /proc/device-tree со сведениями Device Tree. Вместо /proc/device-tree следует использовать область /sys/firmware/devicetree/base, символической ссылкой на которую теперь является /proc/device-tree;
- Виртуализация и безопасность
- Для архитектуры x86 теперь не допускается создание 16-разрядных сегментов при работе в 64-разрядном режиме. Изменение внесено так как использование 16-разрядных сегментов может привести к потенциальным проблемам с безопасностью, связанным с утечкой информации из ядра. C небольшой вероятностью данное изменение может нарушить работоспособность некоторых приложений в пространстве пользователя, в частности, перестанут работать 16-разрядные приложения, наличие которых под большим вопросом.
- В предоставляемом ядром генераторе псевдослучайных чисел в качестве одного из дополнительных источников энтропии обеспечена поддержка данных, получаемых через инструкцию RDSEED, появившуюся в процессорах Intel Broadwell;
- Код рандомизации адресного пространства ядра расширен поддержкой рандомизации базовых адресов загружаемых модулей;
- Аппаратные архитектуры
- Поддержка MIPS-систем на базе архитектуры CPS (Coherent Processing System);
- Для архитектуры ARM добавлена поддержка системы контрольных проверок uprobes (userspace probes), используемой для анализа поведения выполняемых в пространстве пользователя приложений;
- Для архитектуры Tile добавлена поддержка подсистемы perf events;
- Прекращена поддержка устаревших субархитектур x86: Unisys ES7000, IBM Summit/EXA, SGI Visual Workstation, NUMAQ.
- Поддержка новых векторных инструкций AVX-512, которые появятся в будущих выпусках Xeon Phi и других процессоров Intel;
- Для архитектуры arm64 добавлена поддержка отладчика KGDB;
- Оборудование
- Поддержка процессоров Loongson 3, а также систем Marvell Armada 375, 380 и 385, Broadcom BCM470X и BCM5301X;
- Поддержка SATA-контроллеров Allwinner A10/A20 AHCI, APM X-Gene AHCI и DaVinci DA850 AHCI;
- В DRM-модуль драйвера Nouveau добавлена поддержка GPU NVIDIA Maxwell;
- В DRM-модуль драйвера Radeon добавлена поддержка ускорения кодирования видео H.264 с привлечением VCE-движков современных GPU;
- В DRM-модуле драйвера Intel i915 улучшена поддержка графической подсистемы процессоров Broadwell, обеспечена поддержка PPGTT (Per-Process Graphics Translation Tables), улучшена поддержка DisplayPort;
- В драйвере Qualcomm MSM обеспечены средства управления питанием и поддержка вывода звука через HDMI.
Источник: http://www.opennet.ru/opennews/art.shtml?num=39959
|
0 | Tweet | Нравится |
|