Релиз Linux-ядра 3.0

Линус Торвальдс анонсировал релиз Linux-ядра 3.0, в котором завершена интеграция поддержки XEN dom0, в netfilter интегрирован JIT-компилятор BPF-правил, добавлена реализация кэша Cleancache, обеспечена поддержка "Wake on WLAN", реализована автоматическая дефрагментация в Btrfs. Выпуск 3.0 ознаменовал завершение развития ветки 2.6.x, которая развивается уже около 10 лет и переход к новой схеме нумерации. Следующим после 3.0 выпуском станет версия 3.1, затем 3.2 и так далее, пока не пройдут очередные 10 лет или не возникнет потребность коренных изменений, связанных с глобальной переработкой ключевых подсистем или нарушением совместимости. В процессе накопления патчей корректирующие обновления будут представлены как 3.0.1, 3.0.2, 3.0.3 и т.п.

Отдельно подчеркивается, что версию 3.0 не стоит считать каким-то кардинальным шагом, какой можно было наблюдать при появлении GNOME 3.0 или KDE 4.0. Linux-ядро 3.0 - не более чем формальная смена нумерации, приуроченная к двадцатилетию проекта и десятилетию существования ветки 2.6.x. В новой версии нет каких-либо серьезных нарушений совместимости или специальных новшеств. Новое ядро плавно продолжает развитие текущей кодовой базы и по уровню нововведений сравнимо с выпуском версии 2.6.40. Более того, число изменений по сравнению с прошлыми выпусками выглядит достаточно скромно. Процесс разработки также остаётся прежним.

В новую версию принято 9862 исправлений от 1276 разработчиков, размер патча - 44 Мб (добавлено 8002 тыс. строк кода, удалено - 7946 тыс. строк). Около 41% всех представленных в 3.0 изменений связаны с драйверами устройств, примерно 25% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 5% - файловыми системами и 5% c внутренними подсистемами ядра.

Наиболее интересные новшества ядра 3.0:

  • Виртуализация и безопасность
    • Окончание интеграции полной поддержки Dom0 и DomU в Linux-ядро. В состав ядра 3.0 принят бэкенд xen-blkback, необходимый для обеспечения работы виртуальных блочных устройств. Таким образом в стандартном ядре теперь содержится полный набор средств, необходимых для работы Xen в качестве управляющего хоста и гостевой системы. Отныне поддержка Xen будет неотделима от ядра Linux и будет развиваться вместе с ним, без ведения отдельных веток и поддержания дополнительных патчей;
    • Поддержка раздельных номеров файловых дескрипторов внутри изолированных пространств Namespace. Namespace является своеобразной легковесной техникой виртуализации, при которой некоторые процессы могут быть отрезаны от остальной системы, работая в отдельном пространстве имен и не влияя на другие части системы;
    • Добавлена поддержка аппаратного режима Supervisor Mode Execution Protection, который не позволяет переходить из режима ядра к выполнению кода, находящегося в пользовательских областях. Запрет на выполнение ядром кода пользовательского уровня позволяет существенно усложнить эксплуатацию многих уязвимостей в ядре (shell-код не будет выполнен, так как он находится в пространстве пользователя);
  • Дисковая подсистема, ввод/вывод и файловые системы
    • Улучшение файловой системы Btrfs:
      • Поддержка автоматической дефрагментации. Btrfs больше подвержена фрагментации, так как использует при записи данных подход COW (copy-on-write), при котором при изменении содержимого файла данные не переписываются в уже распределенных блоках, а копируются и сохраняются в новом свободном блоке, что позволяет организовать работу снапшотов. Кроме ранее доступной команды "btrfs filesystem defragment" и отключающей COW опции монтирования "-o nodatacow", в новой версии ядра представлена поддержка автоматической дефрагментации, включаемая через опцию монтирования "-o autodefrag". Суть механизма автоматической дефрагментации сводится к обнаружению небольших случайных операций записи в файлы и построению специальной очереди, которую разбирает специальный внутренний дефрагментатор. Данный метод еще плохо адаптирован для работы с большими БД или виртуализацией, но уже хорошо работает при изменении небольших файлов, в процессе использования таких систем, как rpm, sqlite и bdb;
      • Реализация процесса проверки целостности данных ("Scrubbing") в файловой системе путем сверки указанных в экстентах контрольных сумм с контрольными суммами, вычисленными на основе фактических данных. В случае выявления расхождений предпринимается попытка поиска неповрежденной копии данных;
      • Увеличение скорости создания и удаления файлов. Основные проблемы с производительностью при создании и удалении файлов связаны с необходимостью выполнения большого числа сопутствующих действий с b+ деревьями. Для ускорения подобных операций реализован метод отложенного изменения b+ деревьев. В итоге производительность создания файлов возросла на 15%, а удаления на 20%;
      • Ускорение выполнения операций по сбросу буферов на диск (при выполнении fsync на диск теперь сбрасываются только изменившиеся с момента последней синхронизации данные). Скорость выполнения теста sysbench при сочетании случайно записи с вызовом fsync возросла с 112.75 запросов в сек. до 1216 запросов в сек.
      • Поддержка метода "Quasi-round-robin" при распределении блоков в конфигурациях с несколькими дисками. Новый метод позволяет полностью использовать при разнесении данных (stripe) все доступное дисковое пространство, используя для хранения в первую очередь диски, на которых больше доступного места;
    • Проведение оптимизации и чистки кода в подсистеме VFS. Например, за счет реализации кэширования сокращено число проверок xattr при выполнении операций записи;
    • В tmpfs реализована поддержка xattr;
    • В реализацию файловой системы CIFS добавлена поддержка монтирования DFS-шар Windows 2008. Добавлена новая опция "rwpidforward", включающая режим, при котором CIFS перенаправляет pid процессов, открывших файл на запись или чтение;
    • В файловую систему OCFS2 добавлена возможность перемещения экстентов и интегрирована поддержка операций TRIM, что позволит увеличить производительность при работе с SSD-накопителями и повысить их срок службы;
    • В EXT4 добавлена возможность "punch hole", позволяющая пометить область внутри файла в качестве необязательной, которую можно при необходимости очистить. Кроме того, добавлена защита, недопускающая одновременное монтирование одного раздела несколько раз ;
  • Сетевая подсистема
    • В код netfilter интегрирован JIT-компилятор для правил BPF (Berkeley Packet Filter), поддерживающий работу на системах x86-64, что позволит значительно увеличить производительность обработки пакетов пакетным фильтром при использовании инструментов, подобных libpcap/tcpdump;
    • Поддержка отправки ICMP_ECHO ICMP-пакетов и приема ICMP_ECHOREPLY ответов в непривилегированном режиме, что позволяет организовать работу ping и других отладочных утилит без предоставления дополнительных привилегий через suid-бит или capabilities;
    • В беспроводной стек добавлена поддержка функции "Wake on WLAN", позволяющей перевести систему в режим низкого потребления энергии (ACPI S3 suspend) с сохранением активности беспроводного сетевого интерфейса, т.е. в момент сна может быть сохранено соединение с точкой доступа и обеспечено просыпание при появлении адресованного текущему хосту трафика;
    • В ipset добавлена поддержка SCTP и UDPLITE;
    • Добавлен новый планировщик пакетов QFQ (quick fair queue), используемый в ipfw из состава FreeBSD;
  • Память и системные сервисы
    • Реализация нового типа кэша Cleancache, который может использоваться ядром для хранения восстановимых из других источников данных, которые не страшно потерять, но при наличии ресурсов неплохо держать в памяти. Например, в Cleancache могут храниться ассоциированные с файлами на диске страницы памяти, которые в случае очистки кэша впоследствии могут быть перечитаны с диска. Поддержка CleanCache уже добавлена в Ext3, Ext4, Btrfs, OCFS2 и Xen. Cleancache является первой практической реализацией появившейся в ядре 2.6.39 техники трансцендентного управления памятью ("Transcendent memory"), позволяющей улучшить поведение системы при работе с не представляющими важность данными (например кэш) в условиях дефицита оперативной памяти. По сути Transcendent memory напоминает RAM-диск, имеющий ряд особенностей: размер RAM-диска не известен, запись данных не всегда может быть гарантирована и уже записанные данные могут быть очищены (удалены);
    • Поддержка системного вызова sendmmsg(), который позволяет организовать передачу в рамках одного системного вызова сразу нескольких сообщений, которые ранее потребовали бы отдельных вызовов sendmsg(). Технология значительно повышает эффективность работы приложений передающих большие объемы данных или оперирующих пакетами небольшого размера. Тестирование показало, что использование sendmmsg() позволяет повысить скорость отправки данных через UDP-сокет на 20%, а через RAW-сокет на 30%. Напомним, что поддержка парного вызова recvmmsg() была добавлена в ядре 2.6.33;
    • Поддержка системного вызова setns(), который позволяет использовать для файлового дескриптора определенное изолированное пространство имен (namespace);
    • Реализация Alarm-таймеров CLOCK_REALTIME_ALARM и CLOCK_BOOTTIME_ALARM, позволяющих организовать автоматический выход системы из спящего режима в определенное время;
  • Оборудование и аппаратные архитектуры
    • Продолжение реорганизации кода, связанного с платформой ARM;
    • Добавление разработанного в рамках проекта OpenKinect драйвера для устройств Microsoft Kinect. В настоящее время драйвер способен принимать с устройства видеопоток, взаимодействуя с RGB-сенсором или монохромным сенсором, т.е. позволяет использовать Microsoft Kinect в роли web-камеры или инфракрасной камеры. Датчики глубины пока не поддерживаются;
    • Обновление кода DRM-модулей Intel, Radeon и Nouveau. Проведена оптимизация производительности для гибридных процессоров Intel Sandy Bridge, обеспечена начальная поддержка Intel Ivy Bridge и AMD Fusion Llano APU;
    • Для беспроводных карт Realtek представлен новый драйвер rtl8192se;


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

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>