Релиз ядра Linux 3.10. Обзор новшеств
Линус Торвальдс после двух месяцев разработки анонсировал релиз ядра Linux 3.10. Среди наиболее заметных улучшений: BCache для кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, динамическая система управления генерацией прерываний таймером, оптимизация ситуации пропадания пакета в конце TCP-соединения, возможность проверки целостности метаданных в XFS, поддержка режима Skinny Extents в Btrfs, начало реализации поддержки гибридных систем ARM big.LITTLE, поддержка гипервизора KVM для платформы MIPS. В новую версию принято 11.9 тысяч исправлений от примерно 1400 разработчиков, размер патча — 47 Мб (изменения затронули 10475 файлов, добавлено 663992 строк кода, удалено 395368 строк). Около 45% всех представленных в 3.10 изменений связаны с драйверами устройств, примерно 23% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 4% — файловыми системами и 5% c внутренними подсистемами ядра.
Из наиболее интересных новшеств можно отметить:
Дисковая подсистема, ввод/вывод и файловые системы Интеграция разработанной и применяемой в Google системы Bcache, которая позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, при этом кэширование ведётся на уровне блочного устройства, что позволяет ускорить доступ к накопителю независимо от используемых на нём файловых систем. Один SSD-накопитель может использоваться для кэширования нескольких различных блочных устройств. Блочное устройство может быть на лету прикреплено к кэшу и отключено от него, без размонтирования и временной остановки работы (создание кэша требует форматирования с использованием утилиты make-bcache). Поддерживается как сквозное кэширование (writethrough), так и режим отложенной записи (writeback) при котором данные записываются на исходный носитель не сразу, что позволяет обеспечить ускорение операций записи. Дополнительно поддерживается режим readahead, при котором кэш наполняется не только при записи, но и при операциях чтения; В Btrfs добавлена поддержка режима Skinny Extents, позволяющего уменьшить размер дерева распределения блоков на 30–35%. Добавлена поддержка автоматического перестроения индекса квот; В файловой системе XFS появилась экспериментальная поддержка ведения контрольных сумм для контроля целостности метаданных. В подсистему iSCSI добавлена поддержка протокола RDMA (iSER), предоставляющие похожие на DMA возможности для организации прямого доступа к памяти другого компьютера; В распределённую файловую систему Ceph добавлена поддержка многослойной работы для RBD. В частности, тепрь доступен механизм для быстрого создания copy-on-write клонов сетевых блочных устройств, каждый из которых продолжает работать как отдельное RBD-устройство. Например, для организации быстрого развёртывания новых виртуальных окружений можно организовать создание образов таких окружений как клонов эталонного образа виртуальной машины; Виртуализация и безопасность Реализация порта KVM для процессоров MIPS. Порт KVM для MIPS базируется на использовании расширения MIPS-VZ, доступного в процессорах OCTEON III (MIPS32R2 и новее); Функциональность запуска скриптов, содержащих путь к интерпретатору в заголовке »#!», теперь может быть собрана в виде модуля ядра, что позволяет легко запретить выполнение скриптов как программ; Внесены многочисленные улучшения, связанные поддержкой cgroups. В cgroups добавлена поддержка генерации события с уведомлением приложения о приближении к исчерпанию доступной процессу или системе памяти. Реализована полная поддержка иерархических cgroups для групп «device» и «perf_event». Добавлена новая опция монтирования »__DEVEL__sane_behavior» при указании которой используется более жёсткий метод обеспечения непротиворечивости иерархии для всех групп; Выполнение криптографических функций, в том числе sha256, sha512, blowfish, twofish, serpent и camellia, оптимизировано с использованием инструкций AVX/AVX2 и SSE. Отдельно можно отметить задействование поддерживаемых в современных CPU AMD и Intel средств ускорения шифрования AES, что позволяет существенно повысить производительность eCryptfs AES-NI; Добавлен драйвер для виртуальных видеоадаптеров Microsoft Hyper-V; Интегрирован драйвер виртуальной графической карты QXL, применяемой в системах виртуализации для обеспечения акселерированного вывода графики с использованием протокола SPICE; Сетевая подсистема В TCP-стек добавлена поддержка алгоритма проверки потери хвоста (Tail loss probe, TLP), уменьшающего время восстановления скорости потока в случае отбрасывания пакета в конце соединения. Новый алгоритм эффективен для небольших и чувствительных к задержке соединений, для которых потеря последнего пакета может создавать существенные задержки. Интегрированный в ядро патч опробован на web-серверах Google и показал высокую эффективность при обработке небольших web-транзакций, позволил сократить время таймаута для повтора (RTO) на 15% и уменьшить время поступления HTTP-ответа на 6%; Для mesh-протокола B.A. T.M.A. N. («Better Approach To Mobile Adhoc Networking), позволяющего создавать децентрализованные сети, каждый узел в которых связан через соседние узлы, обеспечена поддержка механизма «сетевого кодирования», позволяющего в некоторых ситуациях одновременно передавать два пакета для разных получателей, путем их объединения с использованием операции исключающее «ИЛИ» (XOR); Удалена поддержка механизма TCP Cookie Transactions (TCPCT), который никогда не был полностью реализован на практике и создаёт негативное влияние на производительность; В реализацию протокола IPv6 добавлена поддержка работы поверх IEEE 1394 («Firewire»); В интерфейс netlink добавлена поддержка выполнения операций ввода/вывода с маппингом в память (memory-mapped I/O), что позволяет избавиться от лишней операции копирования содержимого пакета из ядра в пространство пользователя; Внесены оптимизации в код чтения и записи семафоров, что позволило заметно повысить производительности для некоторых типов нагрузки. Например, прирост производительности в тесте Pgbench составил 100%; Память и системные сервисы Добавлена динамическая система управления генерацией прерываний таймером, позволяющая в зависимости от текущего состояния изменять прерывания в диапазоне от тысяч тиков в секунду до одного прерывания в секунду, сводя к минимуму нагрузку на CPU при обработке прерываний при неактивности системы. В настоящее время добавленная функциональность нацелена на применение в системах реального времени и для высокопроизводительных вычислений (HPC), в будущих выпусках планируется задействовать указанную возможность и для десктоп-систем; В реализацию POSIX-таймеров и таймеров высокого разрешения добавлен новый тип часов CLOCK_TAI, оперирующих международным атомарным временем; Большая порция функций для доступа к физическому уровню USB помечена как экспортируемая только для компонентов пол лицензией GPL, что не позволяет обращаться к ним и из проприетарных модулей ядра; Добавлена возможность сосуществования нескольких регуляторов частоты CPU (CPU frequency governor), запущенных с разными тонкими настройками. Одновременный запуск нескольких регуляторов может применяться в гетерогенный многопроцессорных системах (например ARM big.LITTLE), позволяющих разным CPU работать с разными параметрами; Внесены патчи, подготовленные в рамках проекта LLVMLinux и позволяющие собирать ядро компилятором Clang. Аналогичные патчи внесены в ветку Clang 3.3, что приблизило проект к состоянию, когда немодифицированное ядро можно пересобрать штатным компилятором Clang; Добавлен новый экспериментальный драйвер «sync», разработанный в рамках платформы Android и используемый для синхронизации между другими драйверами; В систему uprobes (userspace probes), нацеленную на анализ поведения выполняемых в пространстве пользователя приложений, добавлен контрольный вызов для перехвата выхода из функции (выполнение Return); В команду perf добавлена поддержка профилирования доступа к памяти; Аппаратные архитектуры Увеличено число SoC, поддерживающих многоплатформенные ARM-сборки (возможность собрать одно ядро, которое будет содержать поддержку различных ARM-платформ). Из распространённых ARM-систем без поддержки данной технологии пока остаётся Samsung Exynos, патчи для которого были отложены до следующего выпуска ядра; Интегрирован патч мультикластерного управления питанием для ARM, который приблизил ядро к полноценной поддержки технологии big.LITTLE, комбинирующей в одном процессорном модуле несколько CPU — энергоэффективный и высокопроизводительный, с распределением работ между ними в зависимости от текущих задач; Поддержка новых средств управления питанием, появившихся в процессорах AMD семейства 16h («Jaguar»); Оборудование В DRM-модуль Radeon добавлена поддержка ускорения декодирования видео с использованием аппаратного декодера UVD, встроенного в современные GPU AMD. Поддержка UVD обеспечена для GPU HD4xxx-HD5xxx (R700, Evergreen), поддерживающих UVD2, и HD6xxx-HD7xxx (Northern Islands, Southern Islands) с поддержкой UVD3. Кроме того, в модуле Radeon обеспечена поддержка тайлинга для карт Radeon HD 7000; В DRM-модуле Nouveau для карт NVIDIA Fermi добавлена поддержка технологии сжатия видеопамяти и обеспечена поддержка переключения видеорежимов для серии NVF0; В драйвере для чипов NVIDIA Tegra добавлена поддержка 2D-акселерации; В DRM-драйвере для карт Intel улучшена поддержка чипов Valley View и обеспечена поддержка Haswell Turbo. Реализована возможность бесшовного перехода в спящий режим, не требующего переключения в виртуальную консоль; Добавлены контроллеры частоты CPU для Samsung EXYNOS5440 и ARM big.LITTLE; Поддержка сетевых интерфейсов Netlogic XLR/XLS; Поддержка USB-контроллеров DesignWare USB2; В Video4Linux добавлена поддержка тюнеров Rafael Micro R820T и ITE Tech IT913x, FM-радио Silicon Laboratories 4761/64/68 AM/FM и Si476x I2C FM, звуковых кодеков Philips UDA1342, декодировщиков видео Techwell TW9903, TW9906 и TW2804. В подсистему ALSA ASoC добавлен новый обобщённый драйвер dmaengine_pcm, который заменил собой множество специфичных для платформ реализаций драйверов PCM; Добавлена поддержка новых процессоров Atmel SAMA5D3, Freescale T4240 QDS и B4 QDS, Renesas R8A73A4, R8A7778, R8A7790, Freescale i.MX6 DualLite/Solo; Поддержка беспроводных сетевых адаптеров на базе Ralink RT5572 и Realtek RTL8188EE, а также Ethernet адаптеров на базе Realtek RTL8152;
© OpenNet