Релиз Linux-ядра 2.6.36. Обзор новшеств

Спустя 80 дней с момента прошлого выпуска, увидел свет релиз Linux-ядра 2.6.36 в котором появилась поддержка новой процессорной архитектуры Tile, интегрирована технология мандатного контроля доступа AppArmor, добавлена поддержка локального кэширования CIFS-разделов, обеспечена возможность управления питанием для CPU Intel Core i3/i5 и включена подсистема LIRC для управления устройствами через инфракрасный канал связи.

В новую версию принято 10195 исправлений от 1326 разработчиков, размер патча - 48 Мб (добавлено 9256 тыс. строк кода, удалено - 9204 тыс. строк). Около 39% всех представленных в 2.6.36 изменений связаны с драйверами устройств, примерно 27% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 6% - файловыми системами и 5% c внутренними подсистемами ядра.

В тексте анонса Линус Торвальдс отметил, что подготовка версии 2.6.36 немного затянулась, поэтому следующий релиз 2.6.37 будет разрабатываться более оперативно. Чтобы успеть выпустить первый кандидат в релизы до проведения саммита разработчиков Linux ядра, на прием новшеств для следующей версии вместо двух недель отводится ровно десять дней, после чего окно приема изменений будет закрыто.

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

  • Безопасность
    • В ядро интегрирована поддержка технологии мандатного контроля доступа AppArmor, которая позволяет контролировать полномочия процессов, определяя списки файлов с соответствующими правами (на чтение, запись, отображение в память и запуск, установку блокировки на файл и т.п.) для каждого приложения. Также AppArmor позволяет на самом общем уровне контролировать доступ к сети (например, запретить использование ICMP) и управлять POSIX capabilities. Основное отличие AppArmor от SELinux состоит в том, что SELinux оперирует ассоциированными с объектом метками, а AppArmor определяет полномочия на основании файлового пути, что заметно упрощает процесс настройки;
  • Оборудование и аппаратные архитектуры
    • Поддержка процессорной архитектуры Tile, отличающейся возможностью интеграции на одном чипе до нескольких сотен процессорных ядер. Процессорные ядра оформлены в чипе в виде связанной mesh-сети (каждый узел связан через соседние узлы сети), состоящей из независимых ячеек, каждая из которых состоит из вычислительного блока (процессор, поддерживающий основанный на MIPS набор инструкций), кэша и модуля маршрутизации, который обеспечивает связь текущей ячейки с соседями в неблокирющем режиме.
    • Поддержка новой технологии распределения питания, используемой в платформе Intel Core i3/5, отличающейся интеграцией графического процессора. В таких комбинированных чипах технология Intel Intelligent Power Sharing позволяет распределять питание между CPU и GPU, в зависимости от задач максимизируя производительность графических или вычислительных задач. Новый драйвер работает совместно с драйвером для контроля частоты CPU и DRM-драйвером i915, координирует параметры мощности и температуры с основным термальным драйвером, осуществляя мониторинг мощности и температуры GPU;
    • В состав ядра интегрирован набор драйверов, разработанных в рамках проекта LIRC и предназначенных для организации управления устройствами и обмена данными через инфракрасный порт;
  • Дисковая подсистема, ввод/вывод и файловые системы
    • Для сетевой файловой системы CIFS реализована поддержка локального кэширования данных. Поддержка кэширования реализована через подсистему FS-Cache, которая появилась в ядре 2.6.30 и поддерживала кэширование для файловых систем NFS и AFS;
    • В файловой системе теперь по умолчанию используется режим упорядоченного журналирования (mount -o data=ordered), при котором вначале на диск сбрасываются обновления данных, а потом в журнал помещаются изменения метаданных, что гарантирует отсутствие в файлах устаревших блоков данных в случае краха;
    • В файловой системе Squashfs, используемой для формирования LiveCD, появилась поддержка алгоритма сжатия LZO;
    • За неделю до релиза, из-за проблем с обеспечением целостности ABI, из ветки 2.6.35 был исключен ранее добавленный код Fnotify, нового механизма уведомления приложений (напирмер, антивирусных сканеров) об изменениях в файловой системе, идущего на смену системам inotify и dnotify (для данных систем обеспечен режим эмуляции, который работает поверх fanotify). Fanotify поддерживает отслеживание как активных событий (открытие, закрытие, чтение, запись и т.п.), так и выполнение пассивных операций, таких как открытие к отслеживаемому объекту доступного только на чтение специального файлового дескриптора. В отличие от inotify и dnotify в новой системе устранены проблемы с масштабированием при контроле за большим числом объектов и обеспечена поддержка нотификации на основе блокировки и контроля доступа.
  • Память и системные сервисы
    • Интегрирован ряд патчей для подсистемы виртуальной памяти, направленных на увеличение отзывчивости десктоп-систем. Например, патчи минимизируют негативный эффект, проявляющийся в виде подвисаний приложений при копировании большого объема данных с медленных USB-носителей;
    • Значительно переработан алгоритм OOM Killer (Out of Memory Killer), принимающий решение об принудительном завершении процессов в ситуации катастрофической нехватки памяти (ОЗУ и swap). Выбор процессов для принудительного завершения связан со множеством нюансов, требующих учитывать большое число системных параметров. Новый OOM Killer более не приводит к завершению оболочки KDE при нехватке памяти, учитывает связь потомок-родитель (родитель теперь не завершается пока у него есть потомки), поддерживает эврестический метод блокирования разрастания большого числа процессов за короткий промежуток времени (fork-бомба);
    • Переработан механизм функционирования рабочих очередей (пулл нитей, позволяющий осуществить отложенное выполнение функций ядра), которые теперь поддерживает динамическое управление числом внутриядерных потоков, в зависимости от нагрузки на систему, и поддержание уровня очередей в допустимых пределах (если очередей больше, чем число CPU, наблюдается падение производительности из-за начала паразитного переключения контекста). Новая система также способна заменить код "slow-work", альтернативный пул потоков для выполнения некоторых операций, для которых традиционные рабочие очереди не подходят;
    • Активирована возможность использования интегрированного в прошлой версии ядра отладчика KDB при работе в графическом режиме. Нажатие Sysrq-g теперь при работе X-сервера отображает отладочную консоль и выходит из нее (команда "go"). Поддержка связки KMS + KDB пока доступна только для чипов Intel. Отладчик KDB разработан в недрах компании SGI и, в отличие от Kgdb, не требует для отладки второго компьютера, на котором запущен фронтэнд gdb. С помощью KDB можно инспектировать работу ядра на локальной системе, но его слабым звеном является отсутствие поддержки отладки на уровне исходных текстов;
  • Сетевая подсистема
    • Проведена оптимизация кода BPF-интерфейса (Berkeley Packet Filter), используемого для организации перехвата пакетов;
    • В NetFilter добавлена поддержка цели CHECKSUM для вычисления и заполнения поля с контрольной суммой для пакетов в котором данное поле не заполнено (пример: "iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill");
    • В NetFilter добавлена возможность привязки правила к CPU (xt_cpu) и IPVS (xt_ipvs). Например, для максимизации использования кэша и осуществления всего цикла обработки в рамках одного CPU, можно привязать несколько серверных обработчиков к определенным CPU и затем организовать перенаправление в зависимости от того на каком CPU был обработан пакет: "iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080";
    • В беспроводной стек mac80211 добавлена поддержка аппаратных ARP-фильтров и опция для настройки мощности передатчика;
    • В реализации технологии "bonding" (превращение нескольких физических сетевых интерфейсов в один виртуальный) добавлена возможность управления со стороны пользователя выбора исходящего slave-интерфейса в режимах round-robin и active-backup;

© OpenNet