Ядро Linux 3.12
Линус собрался в поездку и решил не откладывать релиз ядра 3.12 — «I was vacillating whether to do an rc8 or just cut the final 3.12, but since the biggest reason to *not* do a final release was not so much the state of the code, as simply the fact that I’ll be traveling with very bad internet connection next week, I didn’t really want to delay the release». Он объясняет это отсутствием высокоскоростного интернета в ближайшее время. Ядро 3.12 уже доступно для скачивания на сайте http://www.kernel.org
Одновременно объявлено о начале работы над ядром 3.13 и раскрыты некоторые подробности относительно ядра 4.0, планируемого к выпуску сразу за 3.19. По мнению Линуса большая нумерация неудобна и вслед за 3.19 лучше перейти к версии 4.0 — «I would actually prefer to not go into the twenties, so I can see it happening in a year or so, and we’ll have 4.0 follow 3.19 or something like that». При этом ядро 4.0 должно выйти примерно через год и содержать только исправления ошибок и никаких новшеств или функциональных изменений. Таким образом ядро 4.0 станет дополнительным стабилизирующим этапом, подводящим итог развития ветки 3.x.
В ядро 3.12 принято 10.4 тысяч исправлений от 1259 разработчиков. Примерно 46% всех изменений связаны с драйверами устройств, 20% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% — файловыми системами и 4% c внутренними подсистемами ядра. По количеству внесённых изменений на первом месте Intel — 9.8%, затем Linaro — 7%, RH — 6.7%, Samsung — 4.7% и IBM — 3.7%, доля Canonical как всегда невелика. Вкратце об основных новшествах:
Произведена стабилизация поддержки клиента кластерной файловой системы Lustre; В файловую систему Btrfs добавлена начальная поддержка offline-режима дедупликации блоков данных; В ext3 добавлена поддержка опции монтирования «journal_path=», позволяющей указать местоположение внешнего журнала; Для ext4 реализован метод агрессивного кэширования экстентов с использованием дерева состояния экстентов; В XFS обеспечена поддержка пространств имён (namespaces); Поддержка многопоточности в реализации программного RAID5; Для DM (device mapper) подготовлен модуль для отслеживания статистики по активности ввода/вывода для диапазона блоков на DM-устройстве; В подсистему ATA добавлена поддержка новых SSD-накопителей, поддерживающих обработку очереди TRIM-операций; В разрабатываемую Samsung F2FS (высокопроизводительную файловую систему для Flash-накопителей) добавлена поддержка sysfs, возможность inline-хранения атрибутов xattrs, проведена оптимизация производительности; Для файловой системы HFS+ появилась поддержка POSIX ACL; В подсистему evdev, работающей с устройствами ввода, добавлен новый ioctl-вызов EVIOCREVOKE, позволяющий отозвать доступ к указанному файловому дескриптору; Добавлен механизм паравиртуализированных блокировок (ticket spinlocks), увеличивающих эффективность блокировок в виртуальных окружениях; В подсистему netfilter добавлена новая цель «SYNPROXY», симулирующая установку соединения на одной стороне межсетевого экрана до непосредственного фактического соединения на другой стороне; В TCP-стек добавлена поддержка регулирования размера TSO (TCP segmentation offloading), что помогает исключить пульсацию TCP-трафика TCP при использовании разгрузки операций с сегментацией TCP; В сетевой стек добавлен планировщик FQ (Fair Queuing), обеспечивающий дисциплину справедливого управления очередью для проходящего через систему транзитного трафика; В подсистеме прямого рендеринге реализована технология Render Nodes, подразумевающая разделение монолитных устройств /dev/dri/card{num} на две категории: Rendering Nodes (/dev/dri/renderD{num}), отвечающие за аппаратное ускорение рендеринга и обсчет вычислительных заданий GPGPU, и ModeSetting Nodes (/dev/dri/modeset{num}), обеспечивающие переключение видеорежимов и управление экраном; Удалена поддержка интерфейса /proc/acpi/event, который уже длительное время отмечен как устаревший и не рекомендован для использования; В состав принят патч, определяющий факт полного бездействия системы (процессоры при этом могут не находится в состоянии «idle» и выполнять код приложения) и отключающий в этом случае прерывания от таймера; Менеджеры управления видеопамятью GEM и TTM переведены на использование унифицированный системы для управления виртуальными областями памяти, что позволило исключить дублирование кода; В подсистеме управления памятью появилась возможность миграции больших страниц памяти (huge pages) между узлами NUMA; Интегрирован улучшенный алгоритм OOM (out-of-memory), более корректно обрабатывающий состояния нехватки памяти в системе, но способный привести к появлению ранее не фиксированных ошибок категории «out of memory» в пользовательских приложениях; Добавлен DRM-драйвер (Direct Rendering Manager) msm для графической подсистемы чипов Qualcomm Snapdragon с GPU Adreno A2xx/A3xx, разработанный в рамках проекта Freedreno; В DRM-драйвере Nouveau обеспечена корректная поддержка управления питанием, в том числе добавлена возможности динамического включения и отключения питания для вторичных GPU на ноутбуках, поддерживающих технологию NVIDIA Optimus; В DRM-драйвере Radeon появилась поддержка динамического управления питанием (DPM, Dynamic Power Management) и ASPM (Active State Power Management) для GPU HD 8000 (Sea Islands). Добавлена поддержка APU AMD Berlin, первого процессора на базе архитектуры HSA (Heterogeneous System Architecture) с графическим ядром GCN (Graphics Core Next); В DRM-драйвере для GPU Intel улучшена поддержка процессоров семейства Haswell с графическим ядром Iris Pro 5200; Поддержка беспроводных карт на базе чипа Realtek RTL8188EU и Ethernet-адаптеров Intel i40e, MOXA ART (RTL8201CP), Solarflare SFC9100 и CoreChip-sz SR9700; Поддержка USB-контроллеров Faraday FOTG210 OTG и USB-модемов GCT GDM724x LTE; В Video4Linux добавлена поддержка чипов обработки видео Renesas VSP1, устройств видеоввода Renesas R-Car, Mirics MSi3101, универсальных программируемых приёмопередатчиков Mirics MSi3101, USB-камер Syntek STK1135 USB, декодировщиков видео Analog Devices ADV7842 и кодировщиков видео Analog Devices ADV7511. kernel, linux kernel