Релиз ядра Linux 3.8. Обзор новшеств

Линус Торвальдс представил релиз ядра Linux 3.8. В новой версии прекращена поддержка процессоров 386-DX/SX; добавлена новая файловая система F2FS; реализован новый механизм проверки целостности метаданных для XFS; обеспечена поддержка inline-хранения данных в Ext4; подготовлен режим быстрой замены дисков для Btrfs; реализована возможность применения пространств имён для непривилегированных пользователей; значительно улучшена работа планировщика для архитектуры NUMA; cgroup для ограничения памяти, потребляемой ядром.

В новую версию принято около 11 тысяч исправлений от более чем 1200 разработчиков, размер патча - 42 Мб (изменения затронули 11701 файлов, добавлено 577870 строк кода, удалено 352678 строк). Около 44% всех представленных в 3.8 изменений связаны с драйверами устройств, примерно 25% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур (основная масса изменений касается платформ на основе ARM), 11% связано с сетевым стеком, 3% - файловыми системами и 4% c внутренними подсистемами ядра.

Из наиболее интересных новшеств можно отметить:

  • Аппаратные архитектуры
    • Прекращена поддержка процессоров 386-DX/SX. Целью подобного шага является желание упростить поддержку некоторых структур ядра, изменение которых затрудняет наличие дополнительного кода, необходимого для поддержки процессоров 386-DX/SX. Например, для работы на системах i386 в функции sync_core(), используемой для организация синхронизации в режиме SMP, необходимо обеспечить поддержку процессоров без CPUID;
    • Для архитектуры x86 добавлена поддержка горячего подключения/отключения базового CPU ("CPU0"), используемого при загрузке (ранее процессор, используемый для загрузки, не мог быть в последующем отключён);
  • Дисковая подсистема, ввод/вывод и файловые системы
    • В состав ядра принята разработанная компанией Samsung файловая система F2FS (Flash-Friendly File System), ориентированная для использования на Flash-памяти. Хранение структур данных организовано в форме лога, а при обновлении информации используется подход Copy-on-Write, при котором при изменении данные не перезаписываются, а сохраняются в новом месте. В процессе разработки F2FS учтены проблемы ранее доступных специализированных ФС на основе структур в форме лога и предприняты все усилия для устранения известных недостатков, таких как большое потребление памяти и высокие накладные расходы при выполнении операций очистки. Для снижения износа Flash данные по возможности распределяются равномерно, сводя к минимуму повторную запись в одни и те же блоки. Для обеспечения целостности используется модель с фиксацией контрольных точек и возможностью отката изменений (roll-back) в случае проблем. Для выполнения операций чистки задействован специальный сборщик мусора, выполняемый в фоне в моменты простоя системы. Поддерживается традиционная для UNIX схема разграничения доступа и такие расширенные механизмы, как xattr и POSIX ACL;
    • Для файловой системы Btrfs реализована поддержка быстрой замены диска. Интегрированы наработки по оптимизации производительности операций записи в синхронном режиме, более равномерному распределению нагрузки на процессоры при выполнении неупорядоченных операций, а также снижения задержек и уменьшения нагрузки на процессор при выполнении операций fsync и прямой записи в режиме O_DIRECT. Переработан код обработки ошибок в случае коллизий хэшей;
    • В файловой системе Ext4 добавлена поддержка inline-хранения данных, что позволяет значительно увеличить эффективность хранения очень мелких файлов за счёт размещения данных прямо внутри inode, что значительно сэкономит дисковое пространство;
    • В файловой системе XFS появился новый механизм проверки целостности метаданных на основе контрольных сумм;
  • Виртуализация и безопасность
    • Обеспечена поддержка пространств имён для непривилегированных пользователей (user namespaces). Пространства имён позволяют привязать к разным процессам разные представления ресурсов, например, процесс может быть помещён в окружение со своими точками монтирования, UTS, IPC, PID и сетевым стеком, которые не пересекаются с окружением других процессов. Если при использовании прошлых выпусков ядра использование пространств имён было доступно только для пользователя root, то начиная с выпуска 3.8 пространства имён могут применяться к непривилегированным пользователем. С практической стороны, добавленная возможность позволяет использовать отдельные привилегии для идентификаторов групп и пользователей, при их работе в изолированных контейнерах. Например, определённый пользователь может получить в контейнере особенные привилегии, которые отсутствуют у него вне контейнера, или процесс внутри контейнера может получить права root, но остаться непривилегированным вне контейнера;
    • Система для учёта и ограничения потребления ядром памяти, расходуемой в процессе обеспечения работы заданного набора процессов, привязанных к группе контроля (cgroup). Если ранее через cgroup можно было ограничить объем памяти привязанной к процессам, то теперь можно регулировать и размер стека и slab-структур. В частности, подобные ограничения позволят изолировать такие атаки, как форк-бомба. Для управления новой возможностью представлены следующие sysctl: memory.kmem.limit_in_bytes, memory.kmem.usage_in_bytes, memory.kmem.failcnt, memory.kmem.max_usage_in_bytes;
    • Проведена работа по ускорению криптографических операций (например, ускорены шифры camellia,cast5, serpent, twofish, cast6) с использованием набора команд AVX на новых процессорах Intel. Оптимизирована реализация crc32c;
    • Для гостевых систем под управлением Microsoft Hyper-V добавлен balloon-драйвер, позволяющий исключить дублирование идентичных областей памяти в разных виртуальных окружениях;
  • Сетевая подсистема
  • Память и системные сервисы
    • Приняты патчи с реализацией поддержки механизма "huge zero_page", который в некоторых ситуациях позволит существенно (до 2.5 раз) сократить потребление физической памяти при включении в ядре поддержки Transparent Huge-Pages (THP). Huge zero_page расширяет возможности THP в направлении экономии пустых страниц памяти, для которых не выделяются реальные области физической памяти;
    • В подсистему контроля простоя CPU (cpuidle) добавлена возможность привязки к каждому из процессоров разных драйверов для управления параметрами CPU в зависимости от загруженности процессора. Подобное необходимо для обеспечения поддержки асимметричных архитектур, таких как big.LITTLE;
    • При выполнении mmap() или через SYSV IPC приложение может самостоятельно определить необходимый размер страниц памяти (Huge-Pages);
  • Оборудование
    • Поддержка DMA-BUF для V4L2, что позволит организовать совместное использование буферов между V4L2-драйверами и иными драйверами. Например, графический драйвер сможет забирать данные из буфера V4L2 напрямую, не совершая операций копирования;
    • Реализация технологии A-Sync DMA Engines для драйвера Radeon, что даст возможность GPU копировать или перемещать данные даже когда шейдерная часть занята рендерингом сцен;
    • Добавление нового 2D-драйвера для платформ Tegra 2 и Tegra 3, созданного при поддержке компании NVIDIA;
    • Поддержка SoC Broadcom BCM281XX, Allwinner A1X, Samsung EXYNOS5440, а также плат USI Topkick, ZyXEL NSA-310 и MPL CEC4;
    • Поддержка контроллеров карт памяти Wondermedia SD/MMC и Realtek PCI-E SD/MMC;
    • Поддержка процессоров POWER8 с улучшенной поддержкой многопоточности (SMT, Simultaneous Multi-Threading), выпуск которых должен начаться в 2013 году;
    • Поддержка звуковых устройств: кодека VIA HD, устройств FastTrack C400 USB, PSC724 Ultiimate Edge, Stanton SCS.1d/1m FireWire, Freescale/iVeia P1022 и Maxim MAX98090;
    • В драйвер hid-multitouch добавлена поддержка мультитач протокола, используемого в Windows 8.


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

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