Релиз ядра Linux 3.9. Обзор новшеств
Линус Торвальдс после 69 дней разработки анонсировал релиз ядра Linux 3.9. В новой версии: гипервизор KVM адаптирован для работы на системах с архитектурой ARM, система кэширования обращений к медленным жестким дискам на быстрых SSD-накопителях, драйвер PowerClamp для управлением временем простоя CPU, поддержка RAID5/6 в ФС Btrfs, возможность привязки нескольких слушающих сокетов к одному порту, поддержка процессорных ядер Meta ATP, возможность использования пространств имён для CIFS и NFS, поддержка ограничения ресурсов ввода-вывода через cgroups, реализация легковесного спящего режима. В новую версию принято 11.7 тысяч исправлений от 1364 разработчиков, размер патча — 42 Мб (изменения затронули 11120 файлов, добавлено 609300 строк кода, удалено — 339233 строк). Около 39% всех представленных в 3.9 изменений связаны с драйверами устройств, примерно 29% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% — файловыми системами и 5% c внутренними подсистемами ядра. В разработке выпуска 3.9 приняли участие 219 компаний, наибольший вклад представили сотрудники Intel (10.2% изменений), Red Hat (9%), SUSE (5.3%), Google (3.5%), Linaro (3.4%), Texas Instruments (3.1%), IBM (2.9%), Samsung (2.9%), NVidia (1.8%), Oracle (1.5%). Несвязанными с компаниями энтузиастами представлено 10.1% изменений (дополнительно, для 7.3% разработчиков не удалось определить степень связанности с компаниями).
Из наиболее интересных новшеств можно отметить:
Дисковая подсистема, ввод/вывод и файловые системы В файловую систему Btrfs добавлена встроенная поддержка RAID5 и RAID6. Интеграция поддержки RAID непосредственно в код файловой системы позволяет применять разные уровни RAID для метаданных и хранимых данных. кроме того, можно инициировать частичное перестроение RAID в случае выявления несоответствия контрольных сумм в процессе работы ФС, появляется возможность выполнения таких операций как перестановка данных между дисками (restriping) или добавление/удаление дисков в привязке к транзакциям в ФС. В будущем планируется обеспечить привязку логики работы RAID к состоянию метаданных ФС, например, при работе RAID можно безболезненно пропускать операции чтения для блоков, не задействованных в ФС. По производительности реализация RAID5/6 в Btrfs заметно опережает систему MD raid, в основном благодаря устранению некоторых узких мест и задействованию таких особенностей как переработанный кэш распределения данных по дискам (Stripe cache), поддержка слияния частичных stripe-операций и вычисления контрольных сумм без задержки, в синхронном режиме. При оценке работы системы с 4 дисками и 2 накопителями fusionio, RAID5/6 в Btrfs при линейном копировании большого файла продемонстрировал пропускную способность 604MB/s, в то время как пропускная способность MD raid составила 162MB/s. Скорость чтения в Btrfs составила 380MB/s, а MD — 174MB/s (примечательно, что для MD скорость записи и чтения одинаковая, а для Btrfs отличается примерно в два раза). Тест на создание 12 млн файлов был выполнен для Btrfs raid5 за 226 секунд, а реализации на базе MD затратила 485 секунд.
Из других изменений, связанных с Btrfs, отмечается добавление учета снапшотов в код дефрагментации, улучшение работы со снапшотами и ускорение работы системного вызова fsync ();
В файловой системе Ext4 задействована реализация возможности «punch hole» для inode и файлов, в которых использован маппинг блоков, что позволяет использовать «punch hole» не только для файлов с картой экстентов. «Punch hole» позволяет пометить область внутри файла в качестве необязательной, которую можно при необходимости очистить. Кроме того, в Ext4 включены наработки по увеличению эффективности кэширования экстентов, решены ранее наблюдаемые проблемы с производительностью в подсистеме журналирования (JBD2) и ускорено выполнение системного вызова fsync (); В Device Mapper добавлена поддержка модуля dm-cache с реализацией слоя Bcache для кэширования блочных устройств на SSD-накопителях. BCache позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, при этом кэширование ведётся на уровне блочного устройства, что позволяет ускорить доступ к накопителю независимо от используемых на нём файловых систем. Один SSD-накопитель может использоваться для кэширования нескольких различных блочных устройств. Блочное устройство может быть на лету прикреплено к кэшу и отключено от него, без размонтирования и временной остановки работы. Поддерживается как сквозное кэширование (writethrough), так и режим отложенной записи (writeback) при котором данные записываются на исходный носитель не сразу, что позволяет обеспечить ускорение операций записи. Дополнительно поддерживается режим readahead, при котором кэш наполняется не только при записи, но и при операциях чтения; Добавлена серия исправлений, оптимизаций и улучшений в F2FS, развиваемой компанией Samsung высокопроизводительной файловой системе для Flash-накопителей; Виртуализация и безопасность Обеспечена поддержка работы гипервизора KVM на процессорах Cortex-A15 с архитектурой ARMv7. В реализации обеспечена поддержка интерфейса ARM для координации состояния потребления энергии, что позволяет включать и выключать питание виртуальных CPU; В подсистему виртуализации Xen добавлена поддержка использования средств ACPI для горячего подключения памяти и CPU. Внесены дополнительные улучшения для работы Xen на ARM-системах; В механизм фильтрации сокетов добавлена опция SO_LOCK_FILTER, позволяющая заблокировать внесение изменений в фильтр. Например, привилегированная программа может настроить фильтр и заблокировать его перед переходом к выполнению не заслуживающего доверия кода. Если злоумышленник сумеет эксплуатировать уязвимость в приложении, он не сможет изменить установленный фильтр; В block I/O controller, добавлена поддержка контроля ресурсов ввода-вывода с блочных устройств при помощи иерархических управляющих групп (cgroups); В подсистему NFS и CIFS добавлена поддержка пространств имён для непривилегированных пользователей (user namespaces), что позволяет использовать в изолированных контейнерах отдельные CIFS- и NFS-серверы. При этом определённый пользователь может получить в данном контейнере особенные привилегии по работе с CIFS и NFS, которые отсутствуют у него вне контейнера; Сетевая подсистема Для сокетов TCP и UDP добавлена новая опция SO_REUSEPORT, позволяющая сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений. Для предотвращения организации атак по прослушиванию сокетов сторонними процессами, выполнение вызова SO_REUSEPORT возможно только сокетами процессов с одним UID. Поступающие соединения и пакеты распределяются одновременно по всем подключенным через SO_REUSEPORT сокетам. Указанная технология позволяет упростить распределение обработчиков соединения по разным процессам, избавившись от отдельного звена, распределяющего запросы по рабочим процессам; В код отслеживания соединений подсистемы netfilter добавлена поддержка установки меток соединений, позволяющих прикреплять метку к отслеживаемым соединениям и учитывать помеченные соединения в правилах netfilter; В беспроводной стек интегрирована поддержка функций «радара» (radar) для выявления работы передатчиков, работающих в заданном диапазоне частот. Добавленная подсистема является необходимым звеном для реализации поддержки динамического выбора частоты в диапазоне 5GHz, что необходимо при использовании Linux для организации работы таких систем как базовые станции; Интегрирована подсистема VM Sockets, разработанная компанией VMware для организации коммуникаций между гипервизором и виртуальными машинами, а также интерфейс «Virtual Machine Communication Interface» для организации взаимодействия между хост-системой и гостевыми окружениями; Добавлена поддержка протокола MVRP (Multiple VLAN Registration Protocol), позволяющего управлять регистрацией и отзывом VLAN на коммутаторах; Память и системные сервисы Интегрирован созданный инженерами Intel драйвер PowerClamp, реализующий средства для задания общего лимита энергопотребления процессором, что дополняет ранее доступные механизмы регулирования параметров, влияющих на потребление энергии в разных ситуациях. Принцип работы PowerClamp основан на изменении предписываемого времени нахождения CPU в состоянии простоя, путем принудительного перевода CPU в idle-режим (Idle Injection). PowerClamp может оказаться полезным не только для продления работы устройств в автономном режиме, но и в таких ситуациях, как необходимость снижения мощности когда не справляется система охлаждения или желание уменьшить уровень шума от куллера в ночные часы. Управление работой производится через установку процента нахождения CPU в idle-режиме через переменную в sysfs; В планировщик задач внесены небольшие исправления, позволившие существенно повысить эффективность работы в ситуациях когда число процессоров превышает число выполняемых активных процессов. За счёт сокращения миграций процессов, мешающей оптимальному использованию процессорного кэша, после внесения изменений производительность в некоторых тестах возросла до 15 раз; В системе трассировки ftrace добавлена поддержка создания снапшотов буфера трассировки с управлением через debugfs. Снапшоты позволяют зафиксировать состояние буфера для его изучения без прекращения трассировки, которая будет продолжена с использованием отдельного рабочего буфера; Множество улучшений, касающихся энергосбережения. Внесены улучшения и изменения, касающиеся подсистем cpuidle и cpufreq и управления питанием через ACPI и ASPM. Реализована поддержка оптических накопителей с нулевым потреблением энергии (zero power optical disc drive) — специального режима, в котором оптический привод может потреблять энергию близкую к нулю в периоды, когда он не используется; Реализация легковесного спящего режима (lightweight suspend mode), при активации которого всё имеющееся аппаратное обеспечение переводится в режимы минимального потребления энергии. Ключевое отличие от спящего и ждущего режима заключается в том, что питание полностью не отключается, но используются самые глубокие режимы экономии энергии, что позволяет почти мгновенно перейти к работе в любой момент, без ожидания восстановления системы после сна; В состав ядра включена доработанная версия алгоритма сжатия LZO, представленная Маркусом Оберхаммером (Markus Oberhumer), автором LZO (Lempel-Ziv-Oberhumer). Новая версия позволяет в несколько раз ускорить операции сжатия и распаковки при использовании современных процессоров i386/x86_64/ARM; В конфигуратор menuconfig добавлены кнопки сохранения и загрухки отдельных файлов с настройками; Аппаратные архитектуры Поддержка процессорных ядер Meta ATP (Meta 1) и HTP (Meta 2), выпускаемых компанией Imagination Technologies и примечательных поддержкой дополнительного набора DSP-инструкций и обеспечением аппаратной многопоточности (виртуальных процессоров). Поддержка нового семейства встраиваемых 32-разрядных RISC-процессоров — Synopsys DesignWare ARC700, используемых в контроллерах Flash-памяти, цифровых фотоаппаратах и различных потребительских устройствах. Отличительной чертой процессоров ARC является предоставление производителям SoC возможности подготовить собственную конфигурацию процессора перед производством, оптимизированную для определённой области применения или конкретного приложения. Например, включить опциональные блоки DSP, MMU и FPU, интегрировать различные аппаратные декодеры, добавить инструкции и регистры; Поддержка технологии Google Goldfish. Goldfish — виртуальный процессор, нацеленный на обеспечение эмуляции платформы Android, используемый при разработке под данную платформу; Улучшения в поддержке архитектуры ARM: Увеличено число SoC, поддерживающих многоплатформенные ARM-сборки (возможность собрать одно ядро, которое будет содержать поддержку различных ARM-платформ). Начальная поддержка Soc Tegra 4, которая будет выпущена через несколько месяцев. Поддержка NVIDIA Tegra114, нескольких новых плат для разработчиков Tegra 3 и Tegra 4, поддержка NVIDIA Tegra114, Marvell Armada XP, ARM «dummy virtual machine». Для платформы Marwell Kirkwood реализована поддержка горячего подключения для шины PCI-E. Добавлена поддержка процессоров Ralink на базе архитектуры MIPS; Оборудование Удалена большая порция устаревших драйверов, включая драйверы 3c501, 3c505, 3c507, Intel i825xx и драйверы для поддержки параллельного порта. Также из состава ядра удалена подсистема «WAN router». В качестве причины удаления отмечается наличие проблем с их работоспособностью; Улучшения в подсистеме DRM (Direct Rendering Manager): Интеграция подготовленных разработчиками компании NVIDIA функций-хелперов gem_prime_* и gem_drm_*, предоставляющих абстрактный набор простых вызовов, независимых от низкоуровневой реализации поддержки PRIME, что позволяет организовать взаимодействие свободных драйверов с проприетарным драйвером NVIDIA без прямого обращения к API DMA-BUF и избежать связанного с таким взаимодействием нарушения лицензии GPL. Указанные хелперы позволяют задействовать технологию Optimus в последних тестовых выпусках проприетарных драйверов NVIDIA; Начальная поддержка видеокарт AMD серии HD8000; В драйвере Nouveau для GPU NV40 и NV50 (GeForce 6xxx-9xxx) добавлена экспериментальные средства для автоматического и ручного управления вращением куллера. Проедена работа по увеличению производительности драйвера Nouveau; Ряд улучшений в DRM-драйвере Radeon: переработана логика сброса, использование колец DMA для обновления VM PT и т.д. Кроме того, поддержка переключения видеорежимов на уровне пользователя (UMS) окончательно объявлена устаревшей и более поддерживаться не будет; Улучшение поддержки чипов Intel Haswell, в основном касающиеся управления энергопотреблением; Поддержка page flipping в DRM-драйвере Tegra; Улучшение драйвера Ti OMAP, в том числе поддержка платформы OMAP5 и средства для управления энергосбережением; Переделан механизм блокировок подсистемы KMS; Оптимизации (no reloc) для DRM-драйвера Intel, что может дать несколько процентов прироста скорости; Добавлен драйвер для беспроводных чипов Intel серии 7000; Множество улучшений в звуковой подсистеме ALSA: Переработанная поддержка Intel HDA audio (добавлен новый универсальный парсер, который задействован во многих драйверах). Поддержка интерфейсов NVIDIA Tegra20 AC97. Многие драйверы были унифицированы и объединены, что значительно снизит затраты на их дальнейшую поддержку. Ряд улучшений и поддержка новых чипов в Alsa SoC (ASoC); Новый драйвер для гигабитного сетевого контроллера с интерфейсом USB — ASIX AX88179_178A; Поддержка одноплатных компьютеров Technologic Systems TS-5500 и систем SGI Ultraviolet System 3; Поддержка тачпадов Cypress PS/2, трекпадов Cypress APA I2C и устройств ввода Steelseries SRW-S1; Поддержка SATA-контроллеров Renesas R-Car, SD/MMС-контроллеров Broadcom BCM2835 и USB-контроллеров SMSC USB3503; В Video4Linux добавлена поддержка видеопроцессоров SuperH VEU mem2mem, медиаконтроллеров TI DM365 VPFE, тюнеров Montage Technology TS2020-based, FM-приёмников Masterkit MA901 USB FM, сенсоров OmniVision OV9650/OV9652 и Samsung S5C73M3. Поддержка компонентов ноутбука Google Chromebook Pixel;
© OpenNet