Спустя 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;
- В файловой системе Ext3 теперь по умолчанию
используется режим упорядоченного журналирования (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";
- В реализации технологии "bonding" (превращение нескольких физических сетевых интерфейсов в один виртуальный) добавлена возможность управления со стороны пользователя выбором исходящего slave-интерфейса в режимах round-robin и active-backup;
- В беспроводной стек mac80211 добавлена поддержка аппаратных ARP-фильтров и опция для настройки мощности передатчика.
Источник
|