Релиз ядра Linux 3.1
После трёх месяцев разработки увидел свет релиз Linux-ядра 3.1, разработка которого длилась почти на месяц дольше обычного из-за инцидента со взломом инфраструктуры kernel.org. Вопреки сложившейся практики релиз был представлен Линусом Торвальдсом не в списке рассылки, а на саммите разработчиков ядра Linux.Из наиболее заметных изменений можно упомянуть поддержку процессорной архитектуры OpenRISC, оптимизацию производительности операций сброса страниц памяти из ОЗУ на диск, ускорение работы slab allocator, новую реализацию подсистемы iSCSI, поддержку чипов NFC (Near Field Communication), код для контроля за bad-блоками в программном RAID, утилиту "cpupowerutils" для управления питанием, активацию в Ext3 режима сброса буферов "barrier", поддержку пульта Nintendo Wii Remote, драйверы для нового оборудования.
В новую версию принято 9403 исправлений от 1318 разработчиков, размер патча - 49 Мб (добавлено 9240 тыс. строк кода, удалено - 9153 тыс. строк). Около 37% всех представленных в 3.1 изменений связаны с драйверами устройств, примерно 25% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 5% - файловыми системами и 5% c внутренними подсистемами ядра.
Наиболее интересные новшества ядра 3.1:
- Дисковая подсистема, ввод/вывод и файловые системы
- В код с реализацией программного RAID (MD) добавлена поддержка контроля дефектных блоков на диске, что позволило в некоторых уровнях RAID использовать диски с bad-блоками. Для использования данной функции необходима установка новой версии утилиты mdadm;
- Новая реализация кода поддержки iSCSI target (RFC-3720), разработанная в рамках проекта Linux-iSCSI.org. Ранее используемая iSCSI-подсистема SCST признана устаревшей;
- Для файловой системы Ext3 по умолчанию включена поддержка механизма "барьеров" (barriers), позволяющего обеспечить неизменность группы запросов в очереди ввода/вывода для корректной фиксации транзакций ФС: запросы в очереди могут подвергаться перестановке для оптимизации ввода/вывода, барьер изолирует связанные с транзакцией перестановки, чтобы гарантировать, что транзакция будет записана в журнал только после записи на диск фигурирующих в этой транзакции данных. Следует отметить, что "барьеры" уже достаточно давно используются по умолчанию в XFS, Btrfs и Ext4, в Red Hat Enterprise Linux поддержка "барьеров" давно активирована и для Ext3;
- Многочисленные изменения, направленные на улучшение масштабируемости кода виртуальной файловой системы (VFS).
- Ряд исправлений и оптимизаций для btrfs. Заметно увеличена производительность чтения списка элементов директорий. Переработан процесс использования блокировок в btree-дереве метаданных;
- Увеличен максимальный размер файлав tmpfs увеличен. На 32-разрядных системах при 4kB размере страниц памяти в разделе подкачки, лимит на размер файла в tmpfs теперь составляет 2 Тб;
- В NFS 4.1 добавлена поддержка IPv6 для pnfs-сервера;
- Продолжена оптимизация производительности XFS;
- В Fat16 обеспечена поддержка файлов и разделов, размером до 4 Гб;
- В dm-raid добавлена поддержка парсинга и использования отдельных устройств для хранения меданных;
- Интеграция беспроводного стека NFC (Near Field Communication) и нового типа сетевого сокета NFC. NFC разработан для обмена данными в пределах малого радиуса действия (около 10 см.) и все чаще используется в смартфонах, где находит применение для организации обмена данными, для контроля доступа и идентификации, а также для реализации систем мгновенной оплаты. Например, на смартфон могут быть записаны данные кредитной карты для использования которой достаточно приблизить телефон к специальному датчику в магазине. В музеях произведения могут быть снабжены NFC-метками, которые позволяют посмотреть более подробную информацию или просмотреть поясняющий суть экспоната видеоролик или аудиозапись;
- Для генерации порядковых номеров TCP-пакетов (TCP/IP sequence number) и идентификаторов фрагментов пакетов теперь используются не 24-битные значения на основе хэша MD4 в сочетании с 8-разрядным счетчиком, а 32-битные идентификаторы на основе MD5 (lib/md5.c) без дополнительного счетчика. Использование MD4 в настоящее время не оправдано с точки зрения безопасности (высокая предсказуемость), а былой выигрыш в производительности на современных компьютерах ничтожно мал. Поэтому решено использовать более безопасный метод, основанный на хэше MD5;
- Проведена оптимизация производительности работающего на уровнея ядра процесса Writeback, выполняющего операций сброса страниц памяти из ОЗУ на диск. Новый код позволяет добиться более линейного ввода/вывода, избегая случайного доступа к диску при одновременном сбросе страниц памяти, привязанных к разным процессам;
- Ускорена работа Slab allocator при выполнении интенсивной обработки slab-ов. В используемом по умолчанию slab-аллокаторе "slub" для архитектур, поддерживающих инструкции cmpxchg, в критических к производительности секциях использован более оптимальный код, требующий при работе меньшего числа блокировок;
- В состав включен новый набор пользовательских утилит cpupowerutils, предназначенный для управления питанием CPU. Утилиты предоставляют расширенные средства мониторинга энергопотребления и адаптивного управления частотой процессора. Для достижения оптимального баланса между производительностью и энергопотреблением необходимо комбинировать различные методы отслеживания текущего энергопотребления и состояний простоя, включая задействование особенностей архитектур PPC, Itanium, ARM и x86, а также единую координацию управления энергией для CPU и GPU в составе одного APU. Сpupowerutils предоставляет доступ к подобным средствам в рамках одной утилиты;
- Добавлена опция UNAME2 для смены идентификации ядра на 2.6.41 вместо 3.1 для решения проблем с совместимостью с некоторыми приложениями, доступными только в бинарном виде (например, управляющее ПО для некоторых принтеров). Например, для привязки к Linux в коде часто используется конструкция "#ifdef LINUX2", которая после введения константы LINUX3 перестаёт работать;
- Проведен тюнинг производительности планировщика ввода/вывода CFQ;
- В ptrace добавлена поддержка команд PTRACE_INTERRUPT, PTRACE_LISTEN, PTRACE_SEIZE и TRAP_NOTIFY;
- В системный вызов lseek() добавлена флагов SEEK_HOLE и SEEK_DATA для выявления пустых областей и блоков данных внутри файла;
- Поддержка открытого микропроцессора OpenRISC и связанной с ним процессорной архитектуры. В настоящее время добавлена поддержка 32-разрядного семейства OpenRISC 1000 (or1k). OpenRISC создан сообществом OpenCores, объединяющем людей, занимающихся проектированием полностью открытой микроэлектроники. Наработки проекта уже производятся многими коммерческими компаниями в виде интегральных микросхем ПЛИС и БМК. Полный исходный код процессора на языке описания аппаратуры Verilog, схемы, firmware, а также модифицированный инструментарий GNU открыты всем желающим на условиях лицензий GPL и LGPL. Текущая версия процессора, именуемая OpenRISC 1200, включает в себя процессорное ядро, реализующее набор инструкций ORBIS32, опциональный блок арифметики с плавающей точкой ORFP32X, пятиступенчатый конвейер, блок DSP, раздельные блоки управления памятью для данных и инструкций. По заявлениям создателей производительность процессора близка к ARM10;
- Добавлен HID-драйвер для пульта удалённого управления Nintendo Wii Remote;
- Добавлен новый WiFi-драйвер rtl8192de для карт на базе чипов Realtek RTL8192DE и RTL8188DE;
- В DRM-модуль драйвера Nouveau добавлена поддержка автоматической генерации микрокода для чипов Fermi (GeForce 400 и 500). Дополнительно обновлены DRM-модули для карт Intel и ATI/AMD;
© OpenNet