The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз ядра Linux 4.5"
Отправлено opennews, 14-Мрт-16 08:24 
После двух месяцев разработки Линус Торвальдс  представил (https://lkml.org/lkml/2016/3/14/50) релиз ядра Linux 4.5 (https://kernel.org/). Среди наиболее заметных изменений: системный вызов copy_file_range для прямого копирования данных между файлами, поддержка технологии управления питанием Powerplay для GPU Radeon, улучшение распределения свободного пространства в  Btrfs, поддержка сборки с включением детектора неопределённого поведения, поддержка прямой коррекции ошибок в dm-verity, стабилизация новой унифицированной иерархии cgroup, подключение BPF-балансировщиков для UDP-сокетов в режиме SO_REUSEPORT, увеличение масштабируемости epoll для многопоточных приложений.


В новую версию принято около 11 тысяч исправлений от примерно 1500 разработчиков, размер патча - 70 Мб (изменения затронули 11589 файлов, добавлено 1146727 строк кода,
удалено 854589 строк). Около 45% всех представленных в 4.5
изменений связаны с драйверами устройств, примерно 17% изменений имеют
отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% - файловыми системами и 3% c внутренними подсистемами ядра.


Из наиболее интересных новшеств (http://kernelnewbies.org/Linux_4.5) ядра Linux 4.5 можно отметить:


-  
Дисковая подсистема, ввод/вывод и файловые системы


-  Новый системный вызов copy_file_range (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... позволяющий ускорить выполнение операций копирования части данных одного файла в другой файл за счёт выполнение копирования только на стороне ядра, без предварительного чтения данных в память процесса в пространстве пользователя, что избавляет от частого переключений контекста между ядром и пространством пользователя. Тем не менее, в обычных условиях использование copy_file_range лишь немного быстрее обычной команды "cp", так как основное время уходит на ввод/вывод с накопителя.

Совсем иная ситуация с применением copy_file_range для файлов на разделах NFS. Так как копирование в NFS приводит к необходимости перемещения данных по сети с сервера к клиенту и возвращения от клиента на сервер, исключение из этой цепочки клиента позволяет существенно  ускорить процесс. Поддержка copy_file_range  уже доступна для NFSv4.2. В будущих выпусках поддержка ускорения копирования будет реализована для Btrfs и специализированных устройств хранения, также будут преодолены текущие ограничение, такие как действия только в рамках одной точки монтирования  и одного суперблока, а также невозможность ускорения копирования данных внутри одного файла.

-  В Btrfs решены проблемы с масштабируемостью обработки свободного дискового пространства. Вместо использования кэша свободных блоков, становящегося узким местом на больших и нагруженных файловых системах (более 30 Тб), реализован новый экспериментальный метод представления кэша свободного дискового пространства, который лишен ограничений с масштабируемостью и не требует обновления после каждого изменения в ФС. Для включения новой реализации при монтировании следует указать опцию "-o space_cache=v2", после первого монтирования с которой файловая система будет переведена на новую реализацию кэша (старые ядра смогут только читать данные, для возвращения для них возможности записи следует вернуть старый вариант кэша через монтирование с опцией "-o clear_cache,space_cache=v1");


-  В модуль dm-verity (https://www.kernel.org/doc/Documentation/device-mapper/verit... (device-mapper verity), предназначенный для проверки целостности хранимых блоков данных по криптографическим хэшам (например, используется (https://source.android.com/security/verifiedboot/) для верификации загрузки в платформе Android),
добавлена (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... поддержка кодов прямой коррекции ошибок (https://ru.wikipedia.org/wiki/%D0%9F%D1%... (FEC, Forwarded Error Correction), которые позволяют не только выявить повреждения, но и восстановить исходное состояние блоков данных;


-  
Сетевая подсистема

-  Произведена оптимизация производительности работы режима SO_REUSEPORT для UDP-сокетов. Опция SO_REUSEPORT позволяет сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений с распределением поступающих запросов одновременно по всем подключенным через SO_REUSEPORT сокетам, что упрощает создание многопоточных серверных приложений. В новой версии ядра для UDP добавлены (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... две дополнительные опции: SO_ATTACH_REUSEPORT_CBPF и SO_ATTACH_REUSEPORT_EBPF (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... позволяющие определить BPF-программу (классическую или расширенную), выполняющую функции диспетчера, принимающего решения какому сокету из группы REUSEPORT передать обработку пакета. Кроме того, увеличена (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.... скорость выбора сокета SO_REUSEPORT для входящих пакетов. При выполнении теста на сервере с 48 ядрами CPU с 10 гигабитным линком, скорость распределения между 10 сокетами возросла на 18%, 20 - на 14% и 40 - на 13%;


-  Добавлена поддержка опции SOCK_DESTROY, позволяющей системному администратору принудительно закрыть TCP-соединение через интерфейс "netlink socket diag", инициируя операцию TCP ABORT с отправкой другой стороне RST-уведомления о завершении соединения;


-  Добавлен (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.g... модуль "clsact" с реализацией обобщённого метода построения очереди сетевых пакетов;

-  
Память и системные сервисы


-  Обеспечена возможность сборки ядра в GCC 4.9+ с включённой опцией "-fsanitize=undefined (https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.h... активирующей отладочный режим UBSAN (http://developerblog.redhat.com/2014/10/16/gcc-undefined-beh... (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, добавляющего в скомпилированный код дополнительные проверки для выявления во время выполнения программы ситуаций, когда поведение программы становится неопределенным (зависит от реализации компилятора) из-за ошибки программиста. Например, к неопределённому поведению относится использование нестатических переменных до их инициализации, деление целых чисел на ноль, переполнения целочисленных знаковых типов, разыменование указателей NULL, проблемы с выравниванием указателей и т.п.

-  В системный вызов madvise (http://man7.org/linux/man-pages/man2/madvise.2.html), предоставляющий средства для оптимизации управления памятью процесса, добавлена поддержка флага MADV_FREE, который дополняет уже имеющийся флаг MADV_DONTNEED, через который ядру можно загодя сообщить о готовящемся освобождении блока памяти, т.е. о том, что этот блок уже не нужен и может использоваться ядром. В случае использования MADV_DONTNEED при последующем обращении  к блоку приведёт к генерации "page fault", выделению и обнулению страниц памяти или к повторному маппингу файла в память. MADV_FREE отличается тем, что только помечает блок доступным для освобождёння, но не освобождает сразу, что позволяет вернуть его без генерации "page fault", если обращение произошло до его фактического использования ядром;

-  В вызов epoll добавлена (https://lwn.net/Articles/633422/#excl) поддержка флага EPOLLEXCLUSIVE, решающего проблемы с масштабируемостью в многопоточных приложениях. В обычных условиях при создании нескольких файловых дескрипторов epoll (epfds) дл...

URL: https://lkml.org/lkml/2016/3/14/50
Новость: http://www.opennet.ru/opennews/art.shtml?num=44040

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру