|
Скрыть
После двух с половиной месяцев разработки Линус Торвальдс выпустил ядро Linux 3.13. Среди наиболее заметных улучшений ядра 3.13: интеграция пакетного фильтра Nftables, включение по умолчанию режима TCP Fast Open, увеличение производительности Squashfs, поддержка протокола HSR для создания отказоустойчивых сетевых конфигураций, добавление нового высокопроизводительного слоя блочных устройств, поддержка автоматического переключения между GPU в драйвере Radeon, фреймворк для ограничения энергопотребления устройств, классификатор трафика на основе BPF, реализация средств для проведения защищённых финансовых транзакций по NFC, поддержка архитектуры Intel MIC.
В новую версию принято 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)
- Интегрирован легковесный классификатор трафика, выступающий в качестве гибко настраиваемой альтернативы ematch-классификатору. Особенностью нового классификатора является использование виртуальной машины BPF (Berkley Packet Filter) для выполнения программы классификации трафика, загружаемой в ядро в форме байткода, который в том числе может компилироваться в машинные инструкции при помощи BPF JIT-компилятора.
- Включена по умолчанию поддержка режима быстрого открытия TCP-соединений (TFO - TCP Fast Open), который позволяет сократить число шагов установки соединения за счёт комбинирования в один запрос первого и второго шагов классического 3-этапного процесса согласования соединения, и давая возможность отправки данных на начальном этапе установки соединения.
- В ipset добавлена поддержка сетевых пространств имён (network namespaces), возможность использования комментариев в записях, реализация модулей "hash:net,net" и "hash:net,port,net" для указания двух подсетей в одной записи.
- Поддержка протокола HSR (High-availability Seamless Redundancy) для создания высокодоступных резервных Ethernet-каналов, обеспечивающих сохранение работоспособности сети при выходе из строя одного из каналов без задержки на восстановление.
- Для сетевых сокетов представлена поддержка опции 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. Из данных очередей запросы направляются в очереди второго уровня, которые в свою очередь координируют обращение к оборудованию.
Тестирование показало высокую эффективность нового блочного слоя, который смог обеспечить производительность в многие миллионы операций ввода/вывода в секунду, т.е. показал способность справиться с пропускной способностью современных устройств NVM-Express и PCI-E на многоядерных системах, сохранив при этом типовой интерфейс и привычные возможности слоя для работы с блочными устройствами. Старый блочный слой обеспечивал производительность порядка 800 тысяч операций в секунду, не масштабируясь от числа CPU, чего было достаточно для накопителей на гибких магнитных дисках, но уже не хватает для SSD-накопителей, производительность которых перешагнула рубеж к 1 млн операций в секунду. - Существенно ускорена работа специализированной файловой системы SquashFS, обычно используемой в качестве ФС для установочных образов, Live-систем и прошивок. В частности, реализована возможность непосредственной распаковки в кэш страниц (page cache), что позволяет избежать лишних операций копирования и уйти от эксклюзивной блокировки буфера, Также добавлена поддержка многопоточной распаковки сжатых данных и параллельного ввода/вывода
- В системе Bcache, которая позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, добавлена поддержка инкрементального сборщика мусора, позволяющего свести к минимуму задержки при выполнении операций чистки кэша от устаревших элементов и повысить эффективность расходования места в кэше.
- В модуле dm-cache, предназначенном для ускорения доступа к жестким дискам через применение кэширования на SSD-накопителях, добавлен режим сквозного проброса (passthrough), применяемого кода неизвестно насколько содержимое кэша согласовано с содержимым базового устройства. В данном режиме все операции чтения выполняются с базового накопителя, минуя кэш, а операции записи перенаправляются на базовое устройство с использованием кэширования.
- В няшной файловой системе 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.
- Внесена серия улучшений в генератор псевдослучайных чисел: увеличена производительность, повышено качество энтропии, улучшена работа на платформах, отличных от х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, предоставляющий унифицированный интерфейс для управления настройками ограничения энергопотребления устройств из пространства пользователя.
- Для систем на базе архитектуры NUMA задействован набор политик, позволяющих планировщику задач более эффективно организовывать выполнение процессов на подобных системах. Реализованные политики нацелены на размещение процессов и связанной с ними памяти в рамках одного NUMA-узла, а также на обработку таких ситуаций, как совместное использование страниц памяти несколькими процессами.
- Проведена работа по увеличению масштабируемости при организации доступа к таблицам страниц памяти в условиях, когда выполняются операции со страницами памяти большого размера (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 устройств.
- Добавлена утилита, которую можно использовать для мониторинга за работой подсистемы температурного контроля.
>>> Подробнее
|
Nosferatu (*) (2014-01-20 07:42:10) [0 сообщений] [Добавить комментарий]
|