Многие версии ядра Linux не имели таких новых функций, которые могли бы привлечь внимание рядового конечного пользователя. Этого не скажешь о Linux 2.6.38 благодаря исправлению sched: autogroup, анонсированному создателем Linux Линусом Торвальдсом еще в ноябре.
Это усовершенствование, именуемое теперь “автоматическая группировка процессов”, вносит существенные изменения в “порядок выделения планировщиком процессорного времени каждому процессу”, как говорится в статье на сайте KernelNewbies.org, которую мы используем в качестве основного источника.
“Заплатка” автоматически создает группы задач для каждой команды TTY с целью повышения интерактивности рабочего стола при дефиците системных ресурсов. Кроме того, она якобы позволяет автоматически группировать задачи для команды TTY, что динамически осуществляется в ядре в реальном времени.
В ноябре сайт Phoronix провел тестирование этой разработанной Майком Гэлбрейтом “заплатки”, которое показало, что исправление может уменьшить задержку в 10 раз, заметно улучшая проигрывания видео в формате 1080p. Торвальдс писал тогда, что “это важнейшее усовершенствование”, делающее планирование работы групп “убойной функцией”.
Ускорение поиска в VFS
Другой функцией, вызвавшей восторг Торвальдса, стала переработка файловой системы Virtual File System (VFS), которая является посредником между файловой системой и пространством пользователя.
“Что касается “общей картины”, т. е. всех изменений по сравнению с версией since 2.6.37, то лично моим фаворитом остаются изменения в системе поиска имен VFS, — пишет Торвальдс. — Они позволили избавиться от постоянных пауз. Эл дал понять, что хочет продолжить чистку кода. Но в целом, я думаю, все стало работать на удивление гладко”.
В сущности, такие механизмы VFS как кэширование dcache (directory cache) и поиск маршрута переработаны для обеспечения лучшей масштабируемости, поясняет KernelNewbies.org. Усовершенствования в VFS улучшают не только масштабируемость многопоточных задач, но, что несколько удивительно, значительно ускоряют выполнение некоторых однопоточных задач. Утверждается, будто это связано с удалением атомарных операций процессора из прописанных в коде маршрутов.
По результатам тестов Торвальдса, после внесения усовершенствований в VFS операция find . -size в домашнем каталоге при “горячем” кэше выполняется примерно на 35% быстрее. А однопоточная операция git diff над кэшированным “деревом” ядра стала на 20% быстрее. Значительно ускорились и любые операции, связанные с вызовом stat().
Вот некоторые из важнейших нововведений в ядре Linux 2.6.38:
- Компрессия Btrfs LZO, мгновенные снимки только для чтения. Файловая система Btrfs поддерживает теперь прозрачную компрессию с использованием алгоритма LZO, что является более быстрой альтернативой Zlib. Среди других усовершенствований можно назвать изготовление мгновенных снимков только для чтения и функцию force mounting, которая будто бы делает код более устойчивым к сбоям.
- Прозрачные огромные страницы (Transparent huge pages). Это альтернатива API-интерфейсу Hugetblfs на базе файловой системы, использующая преимущества больших страничных кэшей виртуальных адресов, которые имеются в современных процессорах и обеспечивают высокую производительность. Теперь код этих страниц, где возможно, используется по умолчанию. Но можно задать использование его всегда или только по запросу. Данное усовершенствование особенно заметно отразится на повышении производительности операций с большими объемами данных, таких как работа СУБД или сессии KVM, с частым обращением к виртуальным адресам, говорится на сайте KernelNewbies.org.
- Протокол B.A.T.M.A.N. Mesh. B.A.T.M.A.N. (Better Approach To Mobile Adhoc Networking) представляет собой протокол маршрутизации, оптимизированный для децентрализованных сетей ad hoc и не зависящий от имеющейся инфраструктуры. В таких сетях каждый узел участвует в маршрутизации, динамически пересылая данные другим узлам подобно композитным приложениям. Считается, что B.A.T.M.A.N. полезен в чрезвычайных ситуациях, например, в случае природной катастрофы.
- Поддержка процессоров AMD Fusion. В данном релизе появилась поддержка новых процессоров AMD Fusion, которые включают одно или несколько ядер Bobcat архитектуры x86 с переупорядочением последовательности команд. Управление тактовой частотой и энергопотреблением увеличивает срок работы от батарей. Большинство процессоров Fusion включают размещенные с ними на одной подложке графические процессоры. AMD предлагает также разнообразные процессоры Fusion (например, серии G), предназначенные для встроенных устройств.
- Ограничение числа “грязных” страниц памяти. Данная функция контролирует количество “грязных” страниц каждого контроллера памяти cgroup.
В новом релизе, как обычно, содержится множество корректировок, дополнений и исправлений ошибок, включая усовершенствования, внесенные в ядро, планировщик процессора, управление памятью, обработку блоков, файловую систему, работу в сетях, шифрование, виртуализацию, защиту и трассировщик.
Среди других изменений сайт The H выделяет улучшенные графические драйверы DRM/KMS, которые теперь поддерживают новые графические платы AMD (ATI) и Nvidia, а также усовершенствованные драйверы для плат Wi-Fi производства Atheros, Broadcom, Intel, Ralink и Realtek. В статье упоминается также о планах использования ядра Linux 2.6.38 в Fedora 15 и Ubuntu 11.04.
Версия ядра Linux 2.6.38 последовала после выхода в начале января версии 2.6.37 с улучшенной масштабируемостью симметричной многопроцессорной обработки и добавлением множества новых драйверов устройств. Кроме того, она включала усовершенствования в области защиты, управления питанием и памятью, повышение скорости дросселирования ввода/вывода и возможность отключения функции Big Kernel Lock.