[ Сегодня идет свободное скачивание без начисления Download ]


 
 
Релиз ядра Linux 4.7После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.7. Среди наиболее заметных изменений: распараллеливание проверок содержимого директорий, более быстрый и точный механизм управления частотой CPU, поддержка технологии UEFI Capsule для организации обновления прошивок, серия значительных улучшений в средствах трассировки и отладки, поддержка виртуальных контроллеров USB-устройств в стеке USB/IP, возможность привязки загрузки модулей ядра только из одной ФС, поддержка разработанного для Android механизма sync_file.
В новую версию принято около 12 тысяч исправлений от примерно 1500 разработчиков, размер патча - 34 Мб (изменения затронули 9744 файлов, добавлено 493490 строк кода, удалено 194974 строк). Около 47% всех представленных в 4.7 изменений связаны с драйверами устройств, примерно 19% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 5% - файловыми системами и 4% c внутренними подсистемами ядра.
Из наиболее интересных новшеств ядра Linux 4.7 можно отметить:
Дисковая подсистема, ввод/вывод и файловые системы
В системе кэширования информации о путях в директориях, предназначенной для ускорения выполнения различных типовых проверок (например, можно проверить наличие файлов в директории без обращения к диску), реализована возможность выполнения нескольких параллельных проверок в одной директории. Так как кэш сам по себе работает достаточно быстро, поддержка распараллеливания не оказывает большого влияния на производительность для типовых нагрузок, но может привести к ускорению для сценариев работы, в которых имеет место большое число операций с одной директорией;
Разработанный для платформы Android механизм sync_file перемещён из экспериментальной секции staging в основное ядро. В отличие от традиционных барьеров на память (fences), напрямую привязываемых ядром к буферам и неподконтрольных из пространства пользователя, sync_file предоставляет API для обработки барьеров в пространстве пользователя, что значительно упрощает создание графических драйверов с компонентами в пространстве пользователя;
В XFS добавлена возможность настраиваемой обработки ошибок для проблем, связанных с метаданными. Режим обработки ошибок по умолчанию изменён с "повторять попытки вечно" на "повторять попытки до отмонтирования при сбое";
В BTRFS для функуции renameat2 представлены операции RENAME_EXCHANGE для атомарного обмена путей и RENAME_WHITEOUT для использования в overlayfs. Добавлен новый ioctl для удаления устройства по его идентификатору (devid);
В CEPH добавлена поддержка использования нескольких файловых систем (нескольких пространств имён в одном кластере);
В EXT4 добавлена возможность прерывания операции readdir() для больших пустых директорий (директорий с большим числом очищенных блоков, в которых раньше было много файлов);
В NFS добавлена поддержка операции COPY, определённой в спецификации NFS v4.2, которая реализована через появившийся в ядре 4.5 системный вызов copy_file_range и позволят выполнить копирование без перемещения данных по сети от сервера к клиенту и возвращения от клиента на сервер;
Сетевая подсистема
В стек USB/IP, позволяющий организовать доступ к удалённым USB-устройствам поверх сети TCP/IP, добавлена поддержка создания виртуальных контроллеров USB-устройств. Новая возможность позволяет не только работать с реальными физическими USB-устройствами, но и пробрасывать виртуальные устройства. Например, можно реализовать эмулятор смартфона, который будет выглядеть для рабочего окружения разработчика как обычный смартфон, подключенный по USB;
В состав принят предложенный компанией Airbus патч, добавляющий в сетевой стек поддержку первой версии протокола HSR (High-availability Seamless Redundancy), предназначенного для создания отказоустойчивых сетей Ethernet;
Проведена работа по оптимизации TCP-стека для сокращения задержек в процессе обработки очень большого числа пакетов;
Повышена стойкость TCP-стека к syn-флуду. При тестировании изменения позволили увеличить производительность в условиях syn-флуда с 3.2 до 6 миллионов пакетов в секунду. Добавлена возможность ограничения интенсивности отправки ACK-пакетов в условия syn-флуда c указанием в пакетах случайных номеров последовательности;
Добавлена поддержка протокола GTP-U для туннелирования GPRS;
Память и системные сервисы
В систему динамического управления частотой процессора (cpufreq) добавлен новый механизм регулирования частоты - schedutil, в котором удалось добиться слаженной работы планировщика задач и средств управления питанием CPU. Schedutil отличается от ранее доступных регуляторов тем, что для принятия решения об изменении частоты он напрямую использует информацию от планировщика задач и может сразу обращаться к драйверам cpufreq для оперативного изменения частоты, мгновенно подгоняя параметры работы CPU к текущей нагрузке. Подобный подход позволяет избавиться от задержек при изменении частоты и сразу реагировать на изменение нагрузки. В ядро пока принята простейшая реализация schedutil, которую планируется расширить в следующих выпусках;
Поддержка механизма UEFI Capsule, предоставляющего средства для передачи бинарных наборов данных в прошивки EFI. После получения этих данных прошивка разбирает их и принимает решение по их дальнейшему использованию в зависимости от контекста. Наиболее частым применением UEFI Capsule является передача нового образа прошивки для обновления до новой версии при следующей загрузке. Запись данных осуществляется через устройство /dev/efi_capsule_loader;
В ftrace, фреймворк для отслеживания вызова функций, добавлена команда "hist", предоставляющая средства для построения гистограмм событий путём агрегирования информации о наступающих событиях в форме ключ-значение. При помощи новой возможности можно формировать произвольные сводные отчёты, например, узнать раскладку частоты выполнения системных вызовов или интенсивности чтения из файлов в разрезе выполняемых процессов;
В команду "perf trace" добавлена возможность вывода цепочек исполнения системных вызовов из пространства пользователя. Например, командой "trace --call-graph dwarf --filter-pids {pid}" можно отследить обращения к системному вызову recvmsg(), произведённые из процесса gnome-shell;
Добавлен новый тип программ BPF - BPF_PROG_TYPE_TRACEPOINT, которые можно прикреплять к точкам трассировки (tracepoint - вариант динамических printf(), выставляемых разработчиками программ для анализа поведения системы, к которым затем можно обращаться из LTTng, perf, SystemTap, ftrace). Таким образом, теперь можно собирать данные из точек трассировки и обрабатывать их в программе BPF, что является более быстрой альтернативой доступа к точкам трассировки через kprobes;
В программы BPF, использующие модули cls_bpf и act_bpf для управления трафиком, теперь могут напрямую получить доступ к содержимому сетевых пакетов, без применения специальных функций-загрузчиков. Подобный подход позволяет добиться существенного повышения производительности, но ценой возможной утечки данных ядра в пространство пользователя, что не воспринимается как проблема в силу того, что такие BPF-программы могут загружаться только привилегированным пользователем;
В /proc/PID/status добавлено новое поле, позволяющее узнать текущий umask процесса;
В состав ядра добавлена улучшенная реализация системы для определения состояния нехватки памяти в системе (OOM);
В системные вызовы preadv2() и pwritev2() добавлена поддержка флагов RWF_SYNC (сброс данных и метаданных из кэша на носитель после выполнения операции) и RWF_DSYNC (принудительный сброс на носитель только данных);
Добавлен механизм "device DAX", позволяющий организовать доступ к постоянной памяти через символьное устройство /dev/dax.X.Y, вместо привязки к системной памяти, что даёт возможность напрямую обращаться к постоянной памяти без необходимости размещения на ней файловой системы;
Добавлена новая библиотека хэширования (linux/stringhash.h), в которой устранены проблемы, наблюдаемые в ранее доступном коде хэширования строк;
Виртуализация и безопасность
Добавлен новый LSM-модуль LoadPin, который позволяет гарантировать, что все загруженные ядром файлы (модули ядра, прошивки, образы kexec и т.п.) получены из одной файловой системы. Модуль изначально был создан для Chrome OS и предназначен для обеспечения загрузки компонентов ядра только с криптографически верифицированного носителя (dm-verity), при этом верификация осуществляется сразу для всего раздела (доступен только на чтение), без необходимости проверки цифровых подписей для отдельных файлов;
Для архитектуры MIPS добавлена поддержка рандомизации адресного пространства (ASLR);
Добавлена новая опция для рандомизации списков освобождения памяти в slab memory allocator, что делает работу данной системы менее предсказуемой для атакующих;
В JIT-компиляторе BPF реализована техника "constant blinding", добавляющая дополнительный эшелон защиты от загрузки произвольных инструкций в адресной пространство ядра. Суть метода в применении к константам дополнительной операции XOR с непостоянным ключом, что не позволяет атакующему предсказать какие именно фактические значения окажутся в памяти;
В SELinux добавлена возможность ограничения загрузки модулей ядра;
Оборудование
В драйвер AMDGPU добавлена поддержка GPU Radeon RX480, основанного на новой архитектуре Polaris;
Проведён рефакторинг DRM-драйвера (Direct Rendering Manager) для видеокарт Intel, добавлена поддержка управления цветом, решены проблемы с зависанием на Skylake GT3 и GT4;
Добавлены DRM-драйверы для графических подсистем SoC Allwinner A13, ediatek MT8173 и Hisilicon Kirin;
В DRM-драйвер для видеокарт NVIDIA (Nouveau) добавлена поддержка GPU GM108 Maxwell и улучшена работа с датчиками температуры;
Для систем ARM64 добавлена поддержка архитектуры NUMA и возможности перехода в спящий режим (suspend-to-disk).
Добавлена поддержка расширения PCI Express DPC (Downstream Port Containment), предназначенного для локализации невосстановимых ошибок в оборудовании, прикреплённом через определённый порт;
По сравнению с прошлым выпуском обеспечена поддержка около 500 новых аппаратных компонентов, из которых 180 имеют интерфейсы PCIe/PCI или USB. Добавлены драйверы для игрового пульта Microsoft Xbox One Elite Controller, беспроводных чипов Intel 9260, Chelsio iSCSI Target Offload Controller. Представлены аудиокодеки Realteks ALC234, ALC274, ALC294, ALC700, ALC701 и ALC703, используемые в новых материнских платах для ноутбуков. Общее число поддерживаемых ядром драйверов составило 26300.
Латиноамериканский Фонд свободного ПО оперативно сформировал вариант полностью свободного ядра 4.7 - Linux-libre 4.7-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске проведены операции по чистке блобов в драйверах radeon, i915 csr, mwifiex, brcmfmac, iwlwifi, ath10k testmode, rtl8xxxu wifi, hfi1 Infiniband и skylake audio. Из новых драйверов, содержащих блобы, отмечается только xhci-tegra.

[Цитировать]



Показать сообщения:    

Текущее время: 04-Дек 11:18

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

!ВНИМАНИЕ!
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете, чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами, и мы незамедлительно удалим ее. Файлы для обмена на трекере предоставлены пользователями сайта, и администрация не несет ответственности за их содержание. Просьба не заливать файлы, защищенные авторскими правами, а также файлы нелегального содержания!