Релиз ядра Linux 3.13. Обзор новшеств

2 ответ(ов) в теме
не в сети 3 месяца
На сайте с
Участник
0
09:16

В новую версию принято 12 тысяч исправлений от 1339 разработчиков, размер патча - 32 Мб (изменения затронули 9849 файлов, добавлено 441972 строк кода, удалено 237897 строк). Около 44% всех представленных в 3.13 изменений связаны с драйверами устройств, примерно 21% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% - файловыми системами и 5% c внутренними подсистемами ядра. 11.9% изменений внесено сотрудниками компании Intel, 9.7% - Linaro, 9% - Red Hat, 5% - Samsung, 3.5% - IBM, 2.7% - SUSE, 1.7% - Google, 1.5% - NVIDIA, 1.1% - Oracle, 1.0% - Huawei, 0.9% - ARM.

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

Сетевая подсистема

Интеграция пакетного фильтра Nftables, развиваемого для замены iptables, ip6table, arptables и ebtables. Добавленный в ядро 3.13 код предусматривает сосуществование старой и новой подсистем, так как Nftables ещё требует доработки и тестирования. Nftables основывается на идеях, близких к реализации BPF (Berkeley Packet Filters) - правила фильтрации компилируются в пространстве пользователя в байткод и передаются в ядро через API Netlink, после чего для принятия решения по дальнейшим действиям с пакетом выполняются с использованием конечного автомата (pseudo-state machine). Выполнение правил с использованием конечного автомата вместо применения логики сопоставления позволяет сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.

В Nftables работа с различными видами протоколов унифицирована в едином наборе псевдокода, что позволяет избавиться от необходимости поддержания в ядре отдельных расширений фильтрации для IPv4, IPv6, ARP и сетевых мостов. Все операции по определению условий и связанных с ними действий выполняются в пространстве пользователя, в ядре производится только базовый набор операций, таких как чтение данных из пакета, сравнение данных и т.п. Для реализации поддержки фильтрации нового протокола, все изменения могут быть внесены в пользовательском пространстве без обновления кода ядра. В качестве базовых блоков по-прежнему используются компоненты инфраструктуры Netfilter, в том числе существующие хуки, система отслеживания состояния соединений, компоненты организации очередей и подсистема ведения лога.

Для формирования правил фильтрации в nftables подготовлена утилита nft, которая проверяет корректность правил и транслирует их в байткод. Правила могут добавляться не только инкрементально, но и загружаться целиком из файла на диске. Синтаксис правил не похож на iptables и отличается использованием иерархических блочных структур вместо линейной схемы. Язык классификации правил основан на реальной грамматике, при обработке которой используется сгенерированный в bison парсер. Для обеспечения обратной совместимости с линейными правилами предоставляется специальная прослойка, позволяющая использовать iptables/ip6tables поверх инфраструктуры Nftables.

Интегрирован легковесный классификатор трафика, выступающий в качестве гибко настраиваемой альтернативы ematch-классификатору. Особенностью нового классификатора является использование виртуальной машины BPF (Berkley Packet Filter) для выполнения программы классификации трафика, загружаемой в ядро в форме байткода, который в том числе может компилироваться в машинные инструкции при помощи BPF JIT-компилятора. Для загрузки bpf-правил используется штатная утилита tc, например "tc filter add dev em1 parent 1: bpf run bytecode-file /etc/tc/ssh.bpf flowid 1:1". Для создания bpf-правил может использоваться компилятор bpfc или tcpdump: "tcpdump -iem1 -ddd port 22 | tr 'n' ',' > /etc/tc/ssh.bpf".

Включена по умолчанию поддержка режима быстрого открытия TCP-соединений (TFO - TCP Fast Open), который позволяет сократить число шагов установки соединения за счёт комбинирования в один запрос первого и второго шагов классического 3-этапного процесса согласования соединения, и давая возможность отправки данных на начальном этапе установки соединения.

В ipset добавлена поддержка сетевых пространств имён (network namespaces), возможность использования комментариев в записях, реализация модулей "hash:net,net" и "hash:net,port,net" для указания двух подсетей в одной записи.

Поддержка протокола HSR (High-availability Seamless Redundancy) для создания высокодоступных резервных Ethernet-каналов, обеспечивающих сохранение работоспособности сети при выходе из строя одного из каналов без задержки на восстановление. Для обеспечения отказоустойчивости в HSR используется кольцевая топология, в которой все узлы соединены с использованием двух дублирующих друг-друга каналов, каждый из которых используется в параллельном режиме. Для контроля целостности в обоих направлениях кольца отправляются специальные HSR-фреймы. HSR-драйвер создаёт специальный виртуальный сетевой интерфейс, с которым можно работать как с обычным сетевым интерфейсом.

Для сетевых сокетов представлена поддержка опции SO_MAX_PACING_RATE, позволяющей приложению выставить значение максимальной интенсивности обработки пакетов на транспортном уровне. Лимит задаётся в байтах в секунду. Опция эффективно работает только с планировщиком пакетов Fair Queue.
В стек IPv4 для сокетов добавлена поддержка режима IP_PMTUDISC_INTERFACE, позволяющего игнорировать механизм Path MTU discovery, не принимать и устанавливать новую информацию Path MTU, а всегда использовать параметры MTU сетевого интерфейса для отправляемых пакетов. Данная опция может оказаться полезной для блокирования атак на DNS-серверы, манипулирующих PMTU.

В интерфейсы виртуальных туннелей IPsec (vti) добавлена поддержка IPv6.

Добавлена возможность использования непривилегированными пользователями некоторых вызовов sysctl (например, /proc/sys/net/ipv4/ip_local_ports_range или /proc/sys/net/ipv4/icmp_echo_ignore_all) для изолированных сетевых пространств имён (network namespaces).

Дисковая подсистема, ввод/вывод и файловые системы

Для эффективного использования возможностей современных SSD-накопителей в ядро включен новый блочный слой (Linux block layer), рассчитанный на организацию многопоточного доступа к данным на многоядерных системах. Архитектура нового блочного слоя основана на двухуровневой модели очередей: На первом уровне функционируют очереди для передачи запросов ввода/вывода, привязанные к каждому CPU. Из данных очередей запросы направляются в очереди второго уровня, которые в свою очередь координируют обращение к оборудованию. В зависимости от конфигурации системы, числа CPU и накопителей, соотношение между очередями первого и второго уровня может составлять от 1 к 1 до N к M.

Тестирование показало высокую эффективность нового блочного слоя, который смог обеспечить производительность в многие миллионы операций ввода/вывода в секунду, т.е. показал способность справиться с пропускной способностью современных устройств NVM-Express и PCI-E на многоядерных системах, сохранив при этом типовой интерфейс и привычные возможности слоя для работы с блочными устройствами. Старый блочный слой обеспечивал производительность порядка 800 тысяч операций в секунду, не масштабируясь от числа CPU, чего было достаточно для накопителей на гибких магнитных дисках, но уже не хватает для SSD-накопителей, производительность которых перешагнула рубеж к 1 млн операций в секунду.

Существенно ускорена работа специализированной файловой системы SquashFS, обычно используемой в качестве ФС для установочных образов, Live-систем и прошивок. SquashFS поддерживает доступ только для чтения, но обеспечивает при этом компактное представление метаданных и позволяет хранить данные в сжатом виде. В частности, реализована возможность непосредственной распаковки в кэш страниц (page cache), что позволяет избежать лишних операций копирования и уйти от эксклюзивной блокировки буфера, Также добавлена поддержка многопоточной распаковки сжатых данных и параллельного ввода/вывода.В зависимости от характера нагрузки и конфигурации системы, внесённые оптимизации позволяют ускорить работу SquashFS в разы, например, в одном из тестов скорость возросла с 13 MB/s до 67 MB/s. Изменения особенно заметны на многоядерных системах и при выполнении параллельного чтения данных.

В системе Bcache, которая позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, добавлена поддержка инкрементального сборщика мусора, позволяющего свести к минимуму задержки при выполнении операций чистки кэша от устаревших элементов и повысить эффективность расходования места в кэше.

В модуле dm-cache, предназначенном для ускорения доступа к жестким дискам через применение кэширования на SSD-накопителях, добавлен режим сквозного проброса (passthrough), применяемого кода неизвестно насколько содержимое кэша согласовано с содержимым базового устройства. В данном режиме все операции чтения выполняются с базового накопителя, минуя кэш, а операции записи перенаправляются на базовое устройство с использованием кэширования. Например, режим passthrough может быть установлен загрузочным скриптом после экстренной перезагрузки, что позволит сохранить возможность кэширвоания записи до момента выполнения утилиты для восстановления целостности кэша. Кроме того в dm-cache добавлена поддержка операции урезания кэша и очистки блоков из кэша.
В файловой системе Btrfs добавлена поддержка опций монтирования commit (задаёт интервал периодических коммитов, по умолчанию 30) и rescan_uuid_tree (инициирует процесс проверки и перестроения дерева UUID). Добавлен флаг FIEMAP_EXTENT_SHARED, позволяющий организовать совместное использование экстентов разными inode.

Для файловых систем SMB2/SMB3 добавлена поддержка клонирования файлов при копировании на стороне сервера (по аналогии с "cp --reflink"), возможность определения настроек сжатия для отдельных файлов (через "chattr +c filename"). Добавлена опция CONFIG_CIFS_STATS2 для сбора информации о сетевых адаптерах, что удобно использовать для отладочных целей.

Для F2FS представлена настройка CONFIG_F2FS_CHECK_FS, позволяющая отключить механизм проверки согласованности ФС на лету, сказывающийся на производительности.

Виртуализация и безопасность

Поддержка API Secure Element для организации выполнения защищённых операций с использованием протокола NFC. С практической стороны, при реализации надлежащей поддержки на пользовательском уровне, теперь предоставлены все необходимые средства для совершения платежей и финансовых транзакций с использованием NFC. Новый API пока поддерживается только драйвером pn544;
Внесена серия улучшений в генератор псевдослучайных чисел: увеличена производительность, повышено качество энтропии, улучшена работа на платформах, отличных от х86. Генератор 32-разрядых случайных чисел prandom32*() переведён с алгоритма taus88 на taus113, обеспечивающий периодичность 2^113.
Добавлено устройство KVM-VFIO, позволяющее огранизовать взаимодействие гипервизора KVM c построенными с использованием механизма VFIO драйверами устройств, работающих в пространстве пользователя. В KVM обеспечена поддержка работы на системах с процессором ARM Cortex-A7;
Улучшения в SELinux: Обеспечена возможность установки контекста безопасности для rootfs (ramfs) в привязке к inode, что например может быть использовано для привязки метки к файлу, когда ФС не предоставляет обработчик xattr.Добавлен признак always_check_network, при включении которого поведение проверки пакетов и пиров производится всегда, как при активном SECMARK и включенных метках для пиров, даже если SECMARK-правила не определены для netfilter и отсутствует конфигурация на основе Netlabel или меток в IPSEC. Проведены оптимизации, позволившие снизить накладные расходы при использовании SELinux (по тесту AIM7 выигрыш для систем с 1100-2000 пользователями составляет 2.6%).

Память и системные сервисы

Добавлен Power Capping Framework, предоставляющий унифицированный интерфейс для управления настройками ограничения энергопотребления устройств из пространства пользователя. В частности, фреймворк позволяет через sysfs-интерфейс /sys/devices/virtual/powercap задать ограничения энергопотребления для устройств, поддерживающих механизм Intel RAPL (Running Average Power Limit), реализованный в процессорах Intel начиная с Sandy Bridge и ожидаемый в будущих моделях различных типов устройств;
Для систем на базе архитектуры NUMA задействован набор политик, позволяющих планировщику задач более эффективно организовывать выполнение процессов на подобных системах. Реализованные политики нацелены на размещение процессов и связанной с ними памяти в рамках одного NUMA-узла, а также на обработку таких ситуаций, как совместное использование страниц памяти несколькими процессами. Подобная локализация процессов и связанной с ними памяти важна, так как на NUMA-системах каждый CPU снабжён отдельным контроллером памяти и, несмотря на то, что каждый CPU может обращаться к любым областям памяти, обращения к областям, адресуемым локальным контроллером памяти данного CPU, осуществляется заметно быстрее, чем к областям привязанным к контроллерам памяти других CPU. Для управления включением тех или иных потилик работы планировщика представлены соответствующие sysctl-переменные.

Проведена работа по увеличению масштабируемости при организации доступа к таблицам страниц памяти в условиях, когда выполняются операции со страницами памяти большого размера (hugepage). В частности, при использовании hugepages вместо монолитного блокирования частей таблиц страниц памяти теперь используются более гранулированные блокировки, позволяющие увеличить масштабируемость при применении многопоточности.

Увеличена производительность и эффективность распределения памяти в механизме slab. Изменения коснулись методов управления свободными объектами в кэшах kmem_caches, в которых хранятся объекты, размером 128 байт и меньше. В итоге, число попаданий в кэш увеличилось на 5%, что привело к увеличению производительности slab на 3.1%.

Увеличена масштабируемость epoll на системах с большим числом CPU за счёт переработки организации блокировок. Тестирование на системе с 16 CPU показало увеличение производительности с 35k jOPS до 125k jOPS в тесте SPECjbb.

Реализация NFC digital layer. Большинство NFC-чипсетов реализуют данный слой на уровне прошивки, но встречаются и такие в которых поддерживается только аналоговый слой NFC. Добавлена поддержка технологий NFC-A (106 kbits/s), NFC-F (212 kbits/s и 424 kbits/s), NFC-DEP initiator/target и цифрового стека протоколов (Digital Protocol stack).

Bluetooth-стеке реализована возможность создания виртуальных AMP-контроллеров, поддержка установки режима DUT (Device Under Test), добавлена команда mgmt_set_bredr для включения и отключения функций BR/EDR, добавлена команда для установки статического адреса для контроллеров, поддерживающих режимы BR/EDR и LE, добавлена поддержка нового HCI-сокета для управления определённым HCI-устройством из пользовательского приложения.

Добавлен новый фреймворк Generic PHY Framework для разработки драйверов для подключаемых устройств, в том числе внешних сетевых адаптеров, SATA и USB устройств.
Добавлена утилита, которую можно использовать для мониторинга за работой подсистемы температурного контроля.

Аппаратные архитектуры

Поддержка архитектуры http://www.intel.com/content/www/us/en/architecture-and-technology/many-integrated-core/intel-many-integrated-core-architecture.html Intel MIC]] (Many Integrated Core), используемой в сопроцессорах, имеющих форм-фактор карт PCIe и способных выполнять 64-разрядные экземпляры Linux. Интегрированный в ядро драйвер нацелен на управление состоянием экземпляров ОС и обеспечение взаимодействия между хост-системой и системой на карте сопроцессора. В настоящее время обеспечена поддержка сопроцессоров Intel MIC X100, которые, в частности, используются в самом высокопроизводительном кластере Tianhe-2, использующем архитектуру MIC для достижения производительности в 33.86 PetaFLOPS.
Максимальное число CPU для архитектуры x86 увеличено с 4096 до 8192;
Поддержка архитектуры ARM big.LITTLE и гетерогенных многопроцессорных ARM-систем. Поддержка субархитектуры big-endian ARM "BE8".
Для архитектуры ARM64 добавлена поддержка систем big-endian, горячего подключения CPU и 42-разрядного виртуального адресного пространства при использовании страниц памяти размером 64 Кб;
Для архитектуры PowerPC добавлена поддержка систем little-endian;
Для архитектуры SPARC64 реализована полная поддержка tickless-режима, не зависящего от сигналов таймера. Размер больших страниц (huge pages) памяти для архитектуры SPARC64 увеличен с 4MB до 8MB.

Оборудование

Серия значительных улучшений в DRM-модуле Radeon:

Поддержка GPU семейства "Hawaii" (R9 290X). Обеспечена поддержка UVD-декодера, управление питанием (DPM) и сменой видеорежимов;
Стабилизирована и по умолчанию активирована поддержка динамического управления питанием и частотами (DPM) для большинства современных встроенных и внешних видеокарт Radeon. С практической стороны DPM позволит обеспечить оптимальное энергопотребление в условиях автономной работы и добиться максимальной производительности для конфигураций, работающих на заниженной частоте;
По умолчанию включена поддержка вывода звука через HDMI, в том числе с использованием кодеков DTS-HD и Dolby TrueHD, и с поддержкой конфигурации объёмного звука 7.1;
Поддержка динамического включения и выключения дискретного GPU на базирующихся на технологии AMD PowerXpress ноутбуках с двумя GPU;
Внесены изменения, позволившие существенно увеличить производительность HD7000 и более новых GPU, поддерживаемых в Mesa Gallium3D-драйвером RadeonSI;
В DRM-драйвере Intel i915 появилась поддержка графической подсистемы процессоров на базе микроархитектуры Broadwell, которая придёт на смену Haswell;
Добавлен DRM-модуль для видеоподсистемы Marvell Armada 510 SoC;
В DRM-модуль Tegra добавлена поддержка 3D для Tegra20, Tegra30 и Tegra114. Для Tegra114 добавлена поддержка HDMI.
Поддержка систем NVIDIA Tegra T124, Renesas r7272100, r8a7791
Поддержка звуковых интерфейсов на базе чипа TC Applied Technologies DICE;
Поддержка беспроводных адаптеров на базе чипов Qualcomm Atheros WCN3660/3680
Поддержка сетевых интерфейсов Sony Port-100 Series USB NFC, MOXA ART MDIO.

источник

Редакции сообщения
0
Stanislavovich
не в сети давно
На сайте с 19.12.2013
Участник
0
20:15

Круто теперь думаю линукс станет круче

Редакции сообщения
0

Ваше имя *

Ваш E-mail *

не публикуется

Текст сообщения *