Релиз ядра Linux 3.18

После двух месяцев разработки Линус Торвальдс анонсировал релиз ядра Linux 3.18. Среди наиболее заметных улучшений: интегрирована файловая система OverlayFS, добавлен системный вызов bpf (), реализована подсистема для создания туннелей поверх UDP, обеспечена поддержка протокола Geneve, добавлена подсистема pvSCSI для Xen, улучшена производительность при обработке интенсивного потока мелких сетевых пакетов. В новую версию принято около 11200 исправлений от 1300 разработчиков, размер патча — 38 Мб (изменения затронули 9307 файлов, добавлено 485719 строк кода, удалено 355945 строк). Около 47% всех представленных в 3.18 изменений связаны с драйверами устройств, примерно 18% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% — файловыми системами и 4% c внутренними подсистемами ядра.

Из наиболее интересных новшеств можно отметить:

Дисковая подсистема, ввод/вывод и файловые системы Интеграция файловой системы OverlayFS, разработанной компанией SUSE в качестве более прогрессивной, компактной и высокопроизводительной замены UnionFS и AUFS, востребованной в Live-дистрибутивах и системах контейнерной виртуализации. OverlayFS позволяет создать виртуальную многослойную файловую систему, поверх доступной только на чтение основы. ФС создаётся из нижнего и верхнего слоёв, каждый из которых прикрепляется к отдельным директориям. В качестве нижнего слоя, используемого только для чтения, могут применяться директории любых поддерживаемых в Linux систем, включая NFS и другие экземпляры OverlayFS. Верхний слой, который может быть доступен на запись, будет перекрывать состав нижнего слоя, т.е. если файлы дублируются, в итоговой ФС будет виден только перекрывающийся контент верхнего слоя. При этом все записываемые и изменяемые данные будут сохраняться только в верхнем слое, даже если изначально они размещались в нижнем слое ФС, что позволяет использовать одну основу для создания серии одинаковых окружений (контейнеры приложений), гарантировать неизменность базовых данных (гостевые сеансы) или организовать полноценную работу поверх накопителя, не поддерживающего запись (CD/DVD).

В сервер NFS добавлена поддержка операции SEEK, определённой в спецификации NFS 4.2 и позволяющей реализовать в системном вызове lseek () для NFS такие опции, как SEEK_HOLE и SEEK_DATA, для выявления пустых областей и блоков данных внутри файла; В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителей, добавлена поддержка атомарных операций записи, позволяющих рассматривать успешное или сбойное завершение серии операций как единое целое. В F2FS также добавлена поддержка операции FITRIM (discard), для информирования накопителя о неиспользуемых в ФС блоках. В Btrfs внесены улучшения в код восстановления повреждённых RAID-массивов, добавлено множество мелких исправлений, проведена чистка кода; Сетевая подсистема Добавлена подсистема FOU (Foo-over-UDP) для организации тунеллирования различных IP-протоколов поверх UDP. Так же как туннели SSH работают поверх TCP, а GRE и IPIP поверх IP, FOU позволяет создавать туннели, инкапсулируя трафик в пакеты UDP. Необходимость в создании таких туннелей обусловлена предоставлением специфичных механизмов ускорения обработки пакетов, которые некоторые коммутаторы и сетевые карты предоставляют только для протокола UDP. Настройка туннеля осуществляется с использованием netlink и модуля fou. В утилиту «ip» добавлена новая команда «fou», например, для настройки FOU для IPIP на порту 5555 можно указать: «ip fou add port 5555 ipproto 4», а для создания туннеля: «ip link add name tun1 type ipip remote 192.168.1.1 local 192.168.1.2 ttl 225 encap fou encap-sport auto encap-dport 5555»; Обеспечена поддержка алгоритма контроля перегрузки TCP DCTCP (Data Center TCP), использующего расширение ECN для адаптации алгоритма к специфике применения в сетях крупных датацентров, в которых может наблюдаться как передача крупных непрерывных порций данных, требующих максимальной пропускной способности, так и небольших управляющих потоков, требующих минимальных задержек. DCTCP позволяет не только оценить наличие заторов трафика, но и оценить степень загруженности сети; В сетевую подсистему внесены оптимизации, направленные на увеличение производительности пакетной передачи данных. Изменения особенно заметны при обработке большого объёма мелких пакетов. Производительность повышена за счёт организации групповых операций блокировки очереди, а также заполнения/очистки очереди и взаимодействия с драйвером сетевой карты не на уровне отдельных пакетов, а манипулируя порциями пакетов. Внесённые изменения позволяют добиться обработки полной пропускной способности высокоскоростных сетевых интерфейсов даже на относительно слабом оборудовании (например, на обычном компьютере продемонстрирована обработка потока в 40 гбит/сек), даже если в трафике преобладают пакеты небольшого размера; Добавлена поддержка протокола Geneve (Generic Network Virtualization Encapsulation), универсальный протокол инкапсуляции для виртуализированных сетей, отличается большей гибкостью, чем VXLAN, NVGRE и STT, и не зависит от типа инкапсулируемых данных (VLAN, туннели, MPLS и т.п.); Память и системные сервисы Добавлен новый системный вызов bpf (), предоставляющий доступ к возможностям универсальной виртуальной BPF-машины внутри ядра. Представленный системный вызов представляет собой единую точку входа, мультиплексирующую доступные операции с eBPF. Для организации получения данных из пространства пользователя представлена новая структура для совместного доступа к данным — 'maps'. В код eBPF добавлены функции загрузки и выгрузки программ BPF, работа с которыми производится по аналогии с модулями ядра. BPF-программа представляет собой готовый для выполнения набор инструкций, для проверки безопасности которых используется специальный блок верификации; Сокращено время перехода в спящий режим для систем с большим числом CPU за счёт избавления от задержки в 100ms для каждого CPU перед его остановкой; Виртуализация и безопасность В криптографическом слое появилась поддержка многобуферных операций, позволяющий привлечь средства аппаратного распараллеливания операций для выполнение идентичных преобразований одновременно над несколькими буферами. В настоящее время, многобуферная обработки пока доступна только для операций SHA1; Добавлен драйвер «pvSCSI» (Paravirtualized SCSI), позволяющая организовать работу гостевых систем, работающих под управлением гипервизора Xen, с привязанными к ним SCSI-устройствами. pvSCSI пробросить SCSI-устройство внутрь паравиртуализированного домена Xen, что даёт возможность выполнять из гостевой системы специфические операции, которые нельзя выполнить на уровне интерфейса блочного устройства (например, перемотка ленты или управление ленточными библиотеками); Аппаратные архитектуры Для архитектуры ARM64 адаптирован новый JIT-компилятор BPF (eBPF) Архитектура SPARC64 переведена на четырёхуровневые таблицы страниц памяти, что значительно увеличило размер адресуемой памяти; Оборудование В DRM-драйвере Nouveau добавлена поддержка вывода звука через порт DisplayPort; В DRM-драйвер Radeon для старых карт R600 добавлена поддержка UVD (Unified Video Decoder) для ускорения декодирования видео; В DRM-драйвере Intel реализована поддержка кэширования значений EDID и внесена порция накопившихся улучшений;

© OpenNet