Статья только в электронной версии журнала
Выход ядра Linux 2.4 в свое время ознаменовал готовность этой ОС к использованию в корпоративной среде. Для следующего крупного обновления потребовалось еще три года. Новое ядро 2.6 развивает и расширяет лучшие качества своего предшественника, причем глубокая переработка его подсистем обеспечивает более высокий уровень масштабируемости, производительности и реактивности самых разнообразных решений и систем, в которых находит применение Linux.
Новинка появилась в декабре прошлого года и бесплатно предоставляется сайтом kernel.org. Однако в основной своей массе пользователи наверняка предпочтут дождаться, пока уже избранный ими поставщик Linux выпустит собственный дистрибутив, включающий новое ядро.
Среди первых продуктов с ядром 2.6 из числа поддерживаемых сообществом Linux-разработчиков главных дистрибутивов ОС можно будет увидеть Fedora Core фирмы Red Hat. Официальный срок выпуска Fedora Core 2 - 19 апреля, а его первая тестовая версия уже в настоящее время доступна для загрузки с сайта fedora.redhat.com. Аналогичная версия Mandrake Linux 10.0 фирмы MandrakeSoft SA на базе ядра 2.6 появилась в марте, а окончательный вариант этого дистрибутива следует ожидать в апреле или мае.
Что касается корпоративных решений, то вначале ядро 2.6 войдет в SuSE Linux фирмы Novell, чей продукт SuSE Linux Enterprise Server 9 намечен к выпуску на конец весны или начало лета. Осенью же, по информации Red Hat, с этим ядром выйдет Red Hat Enterprise Linux 4.
Что внутри?
Linux-ядро 2.6 имеет упреждающий планировщик операций ввода-вывода. Он улучшает реактивность систем при потоковом выполнении операций записи, так как предусматривает краткую паузу перед переходом от чтения к процессу записи в ожидании возможных повторных запросов на чтение. При его проверке в Тестовом центре eWeek Labs мы, например, убедились, что включение нового терминального окна на фоне интенсивной записи происходит гораздо быстрее, чем в системах с прежним планировщиком ввода-вывода ядра 2.4.
Новый планировщик даст немало плюсов пользователям ПК, поскольку он повышает реактивность систем и улучшает взаимодействие с серверами, в том числе с Web-серверами, выполняющими множество операций чтения.
Правда, в некоторых ситуациях - скажем, при определенных режимах работы баз данных - упреждающее поведение планировщика может несколько снизить производительность. Для этих случаев ядро 2.6 позволяет администраторам использовать отдельный планировщик ввода-вывода под названием Deadline Scheduler, для чего следует добавить в процесс загрузки команду "elevator=deadline".
Ресурсы Web |
- The Wonderful World of Linux 2.6; www.kniggit.net/wwol26.html - The Post-Halloween Document (название документа связано с 31 октября 2003 г., датой "замораживания" кода 2.6); www.codemonkey.org.uk/docs/post-halloween-2.6.txt - Towards Linux 2.6; www-106.ibm.com/developerworks/linux/library/l-inside.html - Kernel comparison of Web serving on 2.4 and 2.6; www-106.ibm.com/developerworks/linux/library/l-web26 - Все разработки ядра Linux освещаются публично в электронных рассылках; их архивы доступны для чтения и поиска на сайте lkml.org - Более простым вариантом, чем самостоятельный просмотр всех рабочих сообщений и дебатов по разработке ядра, будет знакомство с выборками наиболее интересных материалов на дискуссионном сайте kerneltrap.org |
В ядре 2.6 появилась улучшенная модель поточной обработки, включающая поддержку NPTL (Native POSIX Thread Library). NPTL повышает производительность приложений с очень большим числом потоков, в часности виртуальных машин Java. Но вместе с тем NPTL, как известно, может нарушать совместимость ОС с некоторыми приложениями. Однако в последнее время, после того как прошлой весной Red Hat включила NPTL в Red Hat Linux 9, эта проблема стала менее актуальной.
Linux 2.6 содержит новый планировщик процессов, который называется О(1) Scheduler и представляет собой часть ядра, ответственную за разделение времени процессора между выполняемыми программами. Он увеличивает масштабируемость многопроцессорных систем, чему способствует улучшенный алгоритм планирования процессов ядром, но при этом ни в коей мере не снижается производительность однопроцессорных систем.
В некоторых дистрибутивах Linux сервер графики XFree86 запускается с повышенным уровнем приоритета, и его использование вместе с новым планировщиком процессов может приводить к подергиваниям изображений и другим дефектам функционирования пользовательского интерфейса. Данная проблема устраняется путем переустановки приоритета X-сервера на нуль, и в новых версиях Linux-дистрибутивов по умолчанию скорее всего будет задаваться именно эта конфигурация.
В Linux 2.6 появилась поддержка архитектуры NUMA (NonUniform Memory Access), на которой строятся массивные многопроцессорные системы, такие, например, как Altix 3000 фирмы Silicon Graphics. NUMA-системы улучшают пропускную способность оперативной памяти за счет того, что процессоры могут обращаться ко всей совокупности локальных ОЗУ. Правда, при этом получается, что время доступа конкретного процессора к ОЗУ зависит от физической близости необходимых ячеек памяти. Версия 2.6 учитывает эту зависимость, и Linux-ядро может оптимизировать использование ресурсов таких систем.
Поддержка NUMA в Linux позволит компаниям, имеющим эту ОС, переходить на более мощное оборудование, не усложняя инфраструктуру и обязанности своих администраторов добавлением новых платформ.
Для улучшения масштабируемости в Linux 2.6 переработана и подсистема виртуальной памяти. Отметим, что некоторые из изменений, потребовавшихся для поддержки NUMA, коренятся как раз в новой организации виртуальной памяти.
Еще одно новшество 2.6 - поддержка симметричной многопоточности. Эта технология, как известно, действует в процессорах Intel, где носит название Hyper-Threading, и благодаря ей один Pentium 4 или Xeon воспринимается ОС как два отдельных процессора. Усовершенствования 2.6 в плане масштабируемости и многопоточности улучшат производительность не только SMP-систем, но и систем с чипами, выполняющими симметричные многопоточные вычисления.
Сегодня ядро 2.6 еще не способно различать виртуальные и физические процессоры, что могло бы улучшить балансировку нагрузки в системах с симметрично-многопоточными чипами. Было бы, например, лучше, если бы ядро распределяло нагрузку между парой физически независимых процессоров, а не между двумя виртуальными процессорами на одном чипе. Работы в этом направлении ведутся, но их результаты пока еще не вошли в официально выпущенное ядро.
Но в любом случае, поскольку Intel встраивает Hyper-Threading во все большее число своих процессоров, лучшая поддержка этой функции в Linux поможет компаниям извлекать максимум возможностей из своей аппаратуры. Схожие технологии, где один чип действует как группа виртуальных процессоров, появляются и в решениях других производителей, скажем в многоядерных чипах Sun Microsystems, а значит, поддержка симметричной многопоточности будет приложима далеко не только к продуктам Intel.
Приоритетные прерывания
Еще одним крупным изменением ядра Linux 2.6 является его способность к выгрузке, благодаря чему выполнение ядром одних задач может прерываться другими задачами. Эта возможность полезна для встроенных реализаций Linux, так как позволяет ядру действовать наподобие ОС реального времени. Такая модификация будет выгодна и пользователям настольной Linux, поскольку с ней система становится более отзывчивой на щелчки мыши и другие пользовательские действия.
Ядро 2.6 в вашем дистрибутиве |
Хотя новая версия ядра позволяет модернизировать любую Linux-систему, большинство корпоративных пользователей захочет дождаться выхода обновлений уже используемых ими Linux-дистрибутивов. Ниже приводится график выпуска основных дистрибутивов с ядром 2.6: - Knoppix 3.4 - конец марта - Red Hat Fedora Core - апрель - Mandrake Linux 10.0 - апрель или май - SuSE Linux Enterprise Server 9 - конец весны или начало лета - Red Hat Enterprise Linux 4 - осень - Debian Linux - пока ничего не известно ни о сроках выхода очередной стабильной версии Linux-продукта Sarge, ни о наличии в ней ядра 2.6 |
Расширение атрибутов файловой системы помогает Linux 2.6 поддерживать списки контроля доступа, что прежде требовало установки дополнений к ядру. В перспективе расширенные атрибуты могут найти в Linux множество интересных применений, однако пока они не начнут использоваться в конкретных приложениях, эта функция будет полезна преимущественно компаниям, у которых Linux-системы взаимодействуют через Samba с системами Microsoft Windows на базе NTFS.
Linux теперь поддерживает файловые системы JFS (журнальная файловая система) и XFS (расширенная файловая система), а поставляемая с ядром 2.6 файловая система ext3 обладает поддержкой индексированных каталогов, что может обеспечить значительный выигрыш в скорости для каталогов с большим числом файлов. Ядро 2.6 также содержит улучшенный драйвер NTFS, хотя поддержка записи для NTFS еще рассматривается как экспериментальная.
Новое ядро впитало в себя многие элементы проекта uClinux. Код uClinux рассчитан на применение во встроенных устройствах, лишенных блока управления памятью, что дает возможность дополнительно реализовать поддержку таких процессоров, как H8/300 фирмы Hitachi, v850 корпорации NEC и m68k фирмы Motorola.
Помимо архитектур, поддерживаемых использование разработок uClinux, в ядре 2.6 появилась поддержка архитектур x86-64 (фирмы Advanced Micro Devices) и ppc64 (IBM), а также User-Mode Linux. Последняя позволяет запускать Linux в виртуальной машине, организованной внутри Linux-системы, что может быть полезно при тестировании ядра и для разнесения серверных задач по собственным виртуальным машинам из соображений безопасности.
Linux 2.6 может работать с разнообразной новой аппаратурой, включая диски Serial ATA и устройства с интерфейсом USB 2.0. Новое ядро также поддерживает Bluetooth и стало лучше поддерживать IrDA.
Linux 2.6 содержит новую звуковую систему ALSA (Advanced Linux Sound Architecture), расширяющую спектр поддерживаемых звуковых устройств и к тому же более производительную, чем прежняя аудиосистема Linux. Некоторое время ALSA существовала в виде популярной добавки к Linux, правда, требовавшей корректировки ядра.
В параллель к звуковым функциям ядро 2.6 включило Video for Linux 2, второе поколение Linux API захвата и совмещения видеоизображений, необходимое для таких устройств, как платы оцифровки видеоизображений.
Заметно расширившаяся в Linux 2.6 поддержка периферийной аппаратуры и мультимедийных устройств будет особенно полезна для пользователей настольной Linux.
И наконец, еще одним новшеством Linux 2.6 стал более упорядоченный процесс конфигурирования и компиляции ядра, включающий GTK (GIMP Toolkit) и Qt-версию утилиты графического конфигурирования ядра. И то и другое очень облегчает выбор компонентов для компиляции в ядро.
Со старшим аналитиком Джейсоном Бруксом можно связаться по адресу: jason_brooks @ziffdavis.com.