Релиз Linux-ядра 2.6.37

05.01.2011 07:53

Линус Торвальдс анонсировал релиз Linux-ядра 2.6.37, в котором представлена поддержка механизма синхронизации TINY_PREEMPT_RCU, продолжена работа по избавлению ядра от глобальных блокировок, в состав включены дополнительные элементы для обеспечения поддержки Xen Dom0, активирован механизм нотификации об изменениях в файловой системе fanotify, проведена дополнительная оптимизация Ext4 и XFS для SMP-систем, обеспечена поддержка ограничения ввода/вывода для групп процессов, реализовано сетевое распределенное блочное устройство на базе Ceph, для сжатия памяти при переходе в спящий режим задействован метод LZO.

В новую версию принято 12237 (в 2.6.36 было 10195) исправлений от 1456 (1326) разработчиков, размер патча - 67 Мб (добавлено 11139 тыс. строк кода, удалено - 11131 тыс. строк). Около 39% всех представленных в 2.6.37 изменений связаны с драйверами устройств, примерно 24% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 6% - файловыми системами и 5% c внутренними подсистемами ядра;

Наиболее интересные новшества ядра 2.6.37:

  • Виртуализация и безопасность
    • Начальная поддержка хост-режима системы виртуализации Xen (Dom0). Для полноценной поддержки Dom0 в Linux-ядре теперь недостает только бэкенд-драйверов, которые планируется интегрировать в версию 2.6.38;
    • В состав ядра включены Xen-драйверы privcmd и xen-pcifront. Добавлена поддержка Xen PCI, реализована возможность горячей замены паравиртуализированных PCI-устройств (Xen paravirtualised PCI hotplug);
    • В KVM обеспечена возможность создания паравиртуализированных гостевых окружений на платформе PowerPC;
    • В криптоподсистему добавлена поддержка интерфейса AEAD (Authenticated Encryption with Associated Data);
    • Поддержка лимитирвоания ввода/вывода в cgroups, что позволяет установить верхнюю границу интенсивности записи или чтения данных для заданной группы процессов. Лимит может задаваться в байтах в секунду или в операциях ввода/вывода в секунду;
  • Память и системные сервисы
    • Поддержка сжатия методом LZO сбрасываемого на диск содержимого памяти при переходе в спящий режим;
    • Окончательный уход от использования устаревшей глобальной BKL-блокировки (Big Kernel Lock), которая оставалась многие годы узким местом в некоторых подсистемах. Отмечается, что отключение BKL заметно не скажется на производительности, так как все критические к скорости подсистемы были избавлены от BKL уже достаточно давно, оставались лишь системы, производительность которых не имеет большого значения, например, ioctl, драйверы и редкие/малоиспользуемые ФС;
    • TINY_PREEMPT_RCU - легковесный вариант механизма синхронизации RCU (Read-copy-update), позволяющего организовать одновременный доступ к данным без использования блокировок. TINY_PREEMPT_RCU отличается значительным уменьшением потребления памяти, но поддерживает только однопроцессорные системы;
    • Объявлена устаревшей и отключена по умолчанию вторая версия иерархии объектов в служебной файловой системе sysfs;
    • При выполнении "make xconfig" конфигуратор теперь по умолчанию использует библиотеку Qt4;
    • Проведена большая работа по оптимизации работы на SMP-системах кода, связанного с маршрутизацией, работой драйверов и файловыми системами Ext4 и XFS;
  • Дисковая подсистема, ввод/вывод и файловые системы
    • В libata добавлена поддержка секторов, размером более 512 байт (например, 4 Кб). Реализован класс ATA-транспорта. Добавлена поддержка LPM для разветвителей портов;
    • Для файловой системы Ext4 добавлена функция "Lazy Inode Table Initialisation", созданная с целью значительного сокращения времени создания Ext4-разделов. Добавлена поддержка контроля за Ext4 через sysfs. Ext4 теперь напрямую работает с уровнем "bio" (Block I/O), вместо задействования промежуточного уровня "buffer", который хуже поддерживает SMP-системы. Проведенный на 48-ядерном AMD-сервере с 24 SAS RAID-массивом тест FFSB по запуску 192 одновременных потоков показал прирост производительности в 3 раза, а при выключенном журнале - в 4 раза, при уменьшении нагрузки на CPU в 3-4 раза;
    • В файловой системе XFS поддержка опции "-o delaylog" переведена в разряд стабильных. Опция предназначена для организации отложенной записи в лог в режиме журналирования, позволяя организовать накопление нескольких асинхронных транзакций в памяти, вместо их многократного сброса в лог. Использование отложенной записи позволяет заметно сократить число операций ввода/вывода, связанных с журналированием, и повысить производительность при интенсивных операциях с мета-данными. Дополнительно проведена работа по увеличению масштабируемости интенсивной обработки мета-данных. Например, на 8-ядерном сервере запуск теста fs_mark в режиме создания 50 миллионов файлов привел к ускорению на 15%, а в режиме удаления - в два раза;
    • Обновлен код файловой системы Btrfs: поддержка создания снапшотов в асинхронном режиме (снапшот создается мгновенно, без ожидания завершения его формирования на диске); поддержка опции "-o user_subvol_rm_allowed" позволяющей организовать удаление субразделов непривилегированными пользователями; вместо rbtree теперь используются radix-деревья, а вместо spin-локов - RCU-локи, что привело к снижению нагрузки на CPU и увеличению производительности некоторых операций; поддержка смешанных групп блоков (данные + метаданные); Btrfs теперь сохраняет на диск содержимое кэша свободных блоков (включается при монтировании через опцию "-o space_cache"), что позволило избавиться от операции перебора дерева экстентов при выделении новой группы блоков;
    • Реализация сетевого блочного устройства RBD (Rados block device) на базе технологий ФС Ceph, которая была интегрирована в ядро 2.6.34. Встроенные в Ceph механизмы репликации данных (данные разбиваются на блоки и несколько раз дублируются на разных машинах) обеспечивают чрезвычайно высокую живучесть системы, и могут быть использованы для обеспечения работе не только отдельной ФС, но и блочного устройства. Данные, хранимные на устройстве RBD разбиваются на части и сохраняются в распределенном хранилище объектов в кластере Ceph. В отличие от iSCSI и AoE, образ блочного устройства RBD разбит на множество сегментов, хранится на разных узлах и, благодаря избыточной репликации данных на несколько узлов, сохраняет целостность даже при выходе одного узла из строя. RBD также поддерживает создание снапшотов в режиме только на чтение. Для Qemu/KVM подготовлены патчи, дающие возможность размещения виртуальных машин поверх блочного устройства RBD;
    • Fanotify, новый механизм уведомления приложений (например, антивирусных сканеров) об изменениях в файловой системе, идущего на смену системам inotify и dnotify (для данных систем обеспечен режим эмуляции, который работает поверх fanotify). Fanotify поддерживает отслеживание как активных событий (открытие, закрытие, чтение, запись и т.п.), так и выполнение пассивных операций, таких как открытие специального файлового дескриптора к отслеживаемому объекту, доступного только на чтение. В отличие от inotify и dnotify в новой системе устранены проблемы с масштабированием при контроле за большим числом объектов и обеспечена поддержка нотификации на основе блокировки и контроля доступа.
    • Появилась поддержка опции "root=PARTUUID=hex-uuid", нацеленной на корректное определение блочных устройств с которых должно производиться монтирование корневого раздела, через указание UUID дискового раздела;
    • В файловой системе OCFS2 (Oracle Cluster File System) добавлена поддержка монтирования дисковых разделов, размером более 16 Тб. Добавлена новая опция монтирования "coherency=*" для реализации обеспечения согласованности данных в кластере при режиме записи O_DIRECT. Добавлен ioctl OCFS2_IOC_INFO, позволяющий получить непривилегированному пользователю статистику о работе ФС;
    • В реализацию файловой системы CIFS добавлена поддержка опций монтирования "mfsymlinks" и multiuser", а также возможность привязки к определенному локальному IP;
    • В файловой системе NFS добавлена опция '-olocal_lock' для локального хранения локов;
  • Сетевая подсистема
    • Добавлена возможность конфигурирования подсетей как локальных адресов, например, для привязки всех адресов подсети 10.1.0.0/16 к интерфейсу eth0 (ответ будет получен при запросе любого адреса из данной подсети), необходимо выполнить "ip rule add from all iif eth0 lookup 200; ip route add local 10.1/16 dev lo proto kernel scope host src 127.0.0.1 table 200";
    • Поддержка программной эмуляции аппаратных механизмов акселерации VLAN. Поддержка 802.1q VLAN для Infiniband over Ethernet;
    • Приведены в соответствие с RFC 3390 и RFC 5681 параметры формирования начального размера скользящего окна TCP;
    • В ядро интегрирован код проекта accel-pptp, который представляет собой высокопроизводительную реализацию сервера PPTP/PPPoE/L2TP и клиента PPTP, основанную на коде проектов poptop и pptpclient, но благодаря работе на уровне ядра, отличающуюся от poptop/pptpclient существенным ускорением работы и понижением нагрузки на CPU. В состав ядра включено два модуля: "pptp" (PPP over IPv4, Point-to-Point Tunneling Protocol) и "gre" (демультиплексор GRE-пакетов);
  • Оборудование и аппаратные архитектуры
    • В DRM-модуле i915 для видеокарт Intel реализована поддержка вывода звука через DisplayPort и HDMI порты, обеспечена поддержка GPU, встроенного в процессоры SandyBridge. Добавлен драйвер-заглушка для Intel GMA500 (Poulsbo). В Nouveau добавлена поддержка сенсоров, например, для слежения за температурой. В Radeon добавлена поддержка карт семейства Evergreen. В VIAFB добавлена начальная поддержка VX900;
    • Драйвер uas с поддержкой протокола USB Attached SCSI Protocol (UASP) для устройств хранения с интерфейсом USB 3.0;
    • В подсистеме ata добавлена поддержка Intel IDE-R, в ata_piix реализован режим LPM;
    • Интегрирован драйвер для поддержки аппаратного акселератора AES-шифрования на платформах OMAP2/3;
    • Новые драйверы для беспроводных устройств: Atheros AR9170 802.11n, ath6kl (Atheros AR6003), brcm80211 (Broadcom 802.11n), r8712u (RealTek RTL8712U/RTL8192SU), Beeceem USB Wimax, SBE 2T3E3. В драйвере ath5k добавлена поддержка виртуальных STA и AP;
    • Драйверы для USB-устройств: Flarion OFDM, кард-ридеры ENE, Intel Langwell USB OTG Transceiver, UAS, Meywa-Denki & Kayac YUREX, Atmel SAM Boot Assistant (SAM-BA);
    • Поддержка устройств ввода Apple Magic Trackpad;
    • Драйверы для звуковых плат: Intel SST, Edirol DA-2496, Aztech Sound Galaxy, Traktor Kontrol S4, BOSS ME-25, USB3 SuperSpeed, поддержка звука в большом количестве новых ASoC.