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

Спустя всего два месяца с момента выпуска версии 2.6.34, Линус Торвальдс представил релиз Linux-ядра 2.6.35. В новую версию принято 10514 исправлений от 1355 разработчиков, размер патча - 45 Мб. Около 41% всех представленных в 2.6.35 изменений связаны с драйверами устройств, примерно 23% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 7% - файловыми системами и 5% c внутренними подсистемами ядра.

В анонсе Линус рассказывает, что в целом попытка установки жестких правил заморозки кода удалась и эксперимент планируется продолжить в рамках подготовки следующего релиза. Число коммитов с изменениями, не связанными с исправлением ошибок, после выпуска первого кандидата в релизы ядра 2.6.35 составило 2000 (идея введения жестких правил была изложена перед выходом rc3), что почти в два раза ниже, чем было внесено в процессе подготовки 2.6.34 (после rc1 было принято 3800 коммитов).

Основные новшества:

  • Сетевая подсистема
    • Поддержка технологий Receive Packet Steering (RPS) и Receive Flow Steering (RFS) для прозрачного распределения нагрузки по обработке входящего сетевого трафика на имеющиеся в системе CPU. Функция RPS позволяет организовать на разных CPU параллельную обработку операций над IP и TCP пакетами, для чего для каждого сетевого устройства или для каждой очереди пакетов добавлен дополнительный индекс, использующий хэширование по заголовку пакетов для выборка CPU-обработчика. RFS дополняет RPS эвристическими методами выбора CPU, не просто выбирая обработчик случайным образом, а учитывая на каком CPU выполняется вызвавшее системный вызов recvmsg() приложение для наиболее оптимальной утилизации кэша. Изменения разработаны и переданы в состав Linux-ядра компанией Google. Измерение производительности показало, что новая функция позволила увеличить пропускную способность на восьмиядерном сервере для драйвера tg3 с 90 тыс. транзакций в сек. до 285 тыс., а для драйвера e1000 с 90 тыс. до 292 тыс. транзакций в сек. (утилизация CPU при этом возросла с 30 до 60%);
    • Поддержка нескольких независимых таблиц multicast-маршрутизации. Обычно multicast маршрутизация выполняется на уровне пользователя, процессом принимающим решение о судьбе multicast-пакета на основе адреса IP приемника и назначения. Представленная возможность позволяет в рамках одной системы организовать одновременную работу нескольких независимых процессов multicast-маршрутизации, изоляцию сетевых интерфейсов и пакетов для которых обеспечивает ядро;
    • Поддержка протокола L2TP третьей версии (Layer 2 Tunneling Protocol, RFC 3931), предоставляющего средства для динамического формирования L2-туннелей поверх IP-сетей. Кроме туннелинга протокола PPP, новая версия L2TP предоставляет средства для проброса других L2-протоколов, таких как ATM, Frame Relay, HDLC и даже Ethernet.
    • Поддержка протокола CAIF, используемого компанией ST-Ericsson в своих GPRS-модемах для организации связи между хостом и модемом. Хост управляет обработкой виртуальных управляющих AT-каналов, инициализацией GPRS-соединений, работой каналов с передачей видео и сервисных каналов. Модемы ST-Ericsson поддерживают несколько видов транспорта, но в Linux пока поддерживаются только UART и Loopback;
  • Дисковая подсистема, ввод/вывод и файловые системы
    • В реализации файловой системы Btrfs добавлена поддержка режима прямого ввода/вывода, позволяющего организовать доступ к данным минуя кэш файловой системы. Функция прямого ввода/вывода активно используется в СУБД, поддерживающих собственные механизмы кэширования. Кроме того в Btrfs завершена работа над кодом "-ENOSPC", обеспечивающим работу в ситуации острой нехватки свободного дискового пространства.
    • В файловой системе XFS добавлена поддержка отложенной записи в лог в режиме журналирования, позволяющей организовать накопление нескольких асинхронных транзакций в памяти, вместо их многократного сброса в лог. Использование отложенной записи позволяет заметно сократить число операций ввода/вывода, связанных с журналированием, и повысить производительность при интенсивных операциях с мета-данными. Возможность имеет статус экспериментальной и включается через опцию монтирования "-o delaylog";
  • Память и системные сервисы
    • Интегрирован механизм уплотнения памяти (memory compaction), позволяющий снизить фрагментацию внешней памяти за счет перемещения нескольких использованных страниц памяти в один блок большего размера, состоящий из непрерывно следующих друг за другом занятых страниц. В итоге, после выполнения операции упаковки, вместо перемешанного набора свободных и занятых непрерывных страниц памяти, получается один большой блок с используемыми страницами и один большой блок со свободными страницами, что в дальнейшем упрощает проведения операций выделения больших областей памяти. Инициировать уплотнение всей памяти можно записав любое значение в файл /proc/sys/vm/compact_memory.
    • В ядро интегрирован код, позволяющий обеспечить работу отладчика KDB поверх другого отладчика Kgdb, что дает возможность их одновременного использования. Отладчик KDB разработан в недрах компании SGI и, в отличие от Kgdb, не требует для отладки второго компьютера, на котором запущен фронтэнд gdb. С помощью KDB можно инспектировать работу ядра на локальной системе, но его слабым звеном является отсутствие поддержки отладки на уровне исходных текстов;
    • Продолжено расширение возможностей отладочной подсистемы Performance Events: В команде "perf inject" добавлена поддержка live-режима, для одновременного обеспечения записи статистики и ее вывода. Данный режим активируется автоматически, если утилита perf вызывается без явного указания команд record/report (например, "perf trace rwtop 5"). Добавлена утилита perf kvm для мониторинга гостевых окружений из хост-системы. В perf probe добавлена возможность доступа к заданным полям определенных структур данных (например, "perf probe --add 'vfs_read file->f_op->read file->f_path.dentry'");
  • Оборудование и аппаратные архитектуры
    • Расширены возможности DRM-модуля (Direct Rendering Manager) i915 для видеокарт Intel: добавлена поддержка аппаратной акселерации декодирования видеопотоков H.264 и VC1 для графических карт на базе GPU G45+; добавлена поддержка графических чипсетов Intel Cougarpoint; реализована поддержка средств для мониторинга потребления энергии; поддержка чересстрочных дисплеев (interlaced); поддержка самообновления памяти для чипов Ironlake;
    • Расширены возможности DRM-модуля Radeon для видеокарт ATI/AMD: добавлена начальная поддержка функций управления питанием; упрощен и улучшен код обработки сброса GPU (GPU reset); добавлен код, необходимый для поддержки видеокарт семейства Evergreen;
    • Добавлена поддержка интерфейса APEI (ACPI Platform Error Interface), определенного в спецификации ACPI 4 и позволяющего улучшить обработку NMI, организовать сохранение MCE (Machine Check Exception) ошибок на Flash, реализовать поддержку APEI Error Record Serialization Table (ERST), APEI Generic Hardware Error Source и APEI Error INJection (EINJ).

© OpenNet