Новости — Релиз Linux-ядра 2.6.35
В анонсе Линус рассказывает, что в целом попытка установки жестких правил заморозки кода удалась и эксперимент планируется продолжить в рамках подготовки следующего релиза. Число коммитов с изменениями не связанными с исправлением ошибок после выпуска первого кандидата в релизы ядра 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";
В файловой системе OCFS2 добавлена поддержка заблаговременного резервирования (allocation reservation) блоков, что позволяет значительно сократить фрагментацию. Проведена оптимизация производительности. По умолчанию при монтировании отныне используется опция nointr, запрещающая прерывать выполняющиеся файловые операции;
Память и системные сервисы
Интегрирован механизм уплотнения памяти (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).
Разное
Добавлен новый интерфейс для конфигурирования параметров сборки ядра "make nconfig". Интерфейс основан на menuconfig, но имеет более современный внешний вид, прстроен на базе ncurses и сопутствующих библиотек для создания меню, форм ввода и панелей;
Образ initramfs (RAM-диск с файловой системой, загружаемой на этапе начальной инициализации, до монтирования корневого раздела) теперь может быть сжат методом LZO;
Размер неименованных каналов (pipe) теперь можно менять при помощи fcntl-операций F_GETPIPE_SZ и F_SETPIPE_SZ;