После трёх месяцев разработки увидел свет релиз 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 добавлена поддержка RAID1, а также парсинга и использования отдельных устройств для хранения меданных;
  • Сетевая подсистема
    • Интеграция беспроводного стека 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 для решения проблем с совместимостью с некоторыми приложениями, доступными только в бинарном виде (например, управляющее ПО для некоторых принтеров);
    • Проведен тюнинг производительности планировщика ввода/вывода 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. В драйвере b43 расширена поддержка 802.11n-совместимых чипов Broadcom, таких как BCM43224 и BCM43225;
    • В звуковой драйвер snd-ctxfi добавлена поддержка карт Creative Titanium HD. Добавлена поддержка DVB-демодулятора Micronas DRX-K DVB-C/T и тюнера TDA18271C2. В состав ядра включен драйвер Ddbridge, поддерживающий видеооборудование от компании Digital Devices, например, ресиверы Octopus, Octopus mini и Octopus LE, а также тюнеры DuoFlex S2 и DuoFlex CT;
    • В DRM-модуль драйвера Nouveau добавлена поддержка автоматической генерации микрокода для чипов Fermi (GeForce 400 и 500). Дополнительно обновлены DRM-модули для карт Intel и ATI/AMD. В DRM-модуле Intel по умолчанию включена поддержка режима энергосбережения "RC6";
  • Виртуализация и безопасность
    • В KVM обеспечена возможность запуска вложенных виртуальных окружений, т.е. выполнения гостевой системы из другой гостевой системы;
    • В коде XEN Dom0 обеспечена возможность вывода текста через VGA-консоль, поддержка проброса PCI-устройств в гостевые окружения и возможность использования Memory hotplug в драйвере balloon;
    • Обеспечено повышение производительности сетевой подсистемы в виртуализированных окружениях, за счет поддержки Zero-copy в драйверах macvtap и vhost-net;
    • Memory hotplug API расширен для обеспечения горячего подключения памяти в виртуальных машинах;
    • Для архитектуры PPC64 добавлен JIT-компилятор для правил BPF (Berkeley Packet Filter), ранее поддерживающий работу только на системах x86-64. JIT-компиляция правил BPF позволяет значительно увеличить производительность обработки пакетов при использовании инструментов, подобных libpcap/tcpdump;
    • Для действия AUDIT в Netfilter добавлена поддержка контекста SELinux;
    • В ipset добавлена поддержка указания диапазонов IPv4-адресов при добавлении и удалении элементов хэшей "net", например, "ipset new test hash:net; ipset add test 10.2.0.0-10.2.1.12";
    • Во фреймворк TOMOYO, позволяющий привязать политику безопасности процесса к файловому пути, способом похожим с AppArmor, добавлена поддержка групп ACL, интерфейса для аудита, встроенных правил, раздельных пространств имён (policy namespace);


Источник: http://www.opennet.ru/opennews/art.shtml?num=32120