The OpenNET Project / Index page

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



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

Исходное сообщение
"Релиз ядра Linux 4.4"
Отправлено opennews, 11-Янв-16 07:38 
После двух месяцев разработки Линус Торвальдс анонсировал (https://lkml.org/lkml/2016/1/10/305) релиз ядра Linux 4.4 (http://kernel.org). Среди наиболее заметных изменений: задействование Direct I/O и AIO для примонтированных в loop-режиме ФС, устойчивый к сбоям RAID5 с дополнительным журналированием, поддержка пулинга для блочных устройств, драйвер для SSD-накопителей Open-Channel на основе памяти NVM, работа слушающих TCP-сокетов в неблокирующем режиме, новый системный вызов mlock2(), поддержка 3D в виртуальном GPU virtio-gpu, возможность запуска программ eBPF непривилегированными пользователями, поддержка постоянно работающих eBPF-программ, механизм определения потери TCP-пакетов RACK.


В новую версию принято около 13 тысяч исправлений от 1548 разработчиков, размер патча - 49 Мб (изменения затронули 10606 файлов, добавлено 714106 строк кода, удалено 471010 строк). Около 44% всех представленных в 4.4 изменений связаны с драйверами устройств, примерно 16% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 15% связано с сетевым стеком, 4% - файловыми системами и 3% c внутренними подсистемами ядра.
12.9% изменений внесено сотрудниками компании Intel, 5.2% - Samsung, 5.1% - Red Hat, 3.5% - Atmel,   3.5% - Linaro, 2.3% - IBM, 2.1% - Google, 2.0% - SUSE, 1.8% - ARM, 1.6% - Texas Instruments, 1.6% - Freescale, 1.4% - AMD, 1.3% - Oracle.

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


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

-  Для файловых систем, примонтированные в режиме "loopback" (монтирование из файла с использованием блочного устройства loop), реализована возможность использования прямых (Direct I/O) и асинхронных (AIO) операций ввода/вывода при чтении и записи в файл, связанным с loop-устройством. Использование Direct I/O при обращении к файлу с образом ФС позволяет избежать двойного кэширования, существенно сокращает потребление памяти и уменьшает число переключений контекста;
- В подсистему MD интегрированы наработки (https://code.facebook.com/posts/414713638724358/improving-so.../) компании Facebook по увеличению живучести программного RAID5 в случае краха системы. В частности, реализован режим журналирования RAID5, при котором на отдельном носителе (SSD или NVRAM) создаётся специальный журнал. Записываемые в RAID данные вначале сохраняются в журнале, а затем разносятся по входящим в RAID-массив дискам. Журнал позволяет гарантировать целостное состояние RAID в ситуациях неожиданного отключения питания, даже если RAID находился в деградированном состоянии. Если питание будет прервано на стадии когда составляющие транзакцию данные были записаны лишь на часть дисков,  повреждения данных можно избежать так как вся информация о транзакции отражена в журнале. Журнал также позволяет повысить производительность некоторых операций и сократить задержки, но данные изменения войдут в будущие выпуски ядра;

-  Поддержка пулинга ввода/вывода (http://lwn.net/Articles/663879/) для блочных устройств (I/O polling). Пулинг позволяет уменьшить нагрузку на систему при использовании высокопроизводительных устройств за счёт периодического опроса состояния вместо генерации прерываний. Как следствие, в определённых ситуациях включение пулинга позволяет существенно повысить пропускную способность и сократить задержки ввода/вывода. Включение производится через запись 1 в /sys/block/DEV/queue/io_poll. В настоящее время поддерживается только режим O_DIRECT, а реализация помечена как экспериментальная и предназначенная для тестирования;
-  Реализована спецификация LightNVM (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.g...), расширяющая драйвер NVM поддержкой SSD-накопителей, допускающих низкоуровневый прямой доступ к физическому накопителю (например, первое поколение Open-Channel SSD-накопителей на основе памяти NVM). Для таких устройств ядро берёт на себя функции низкоуровневого управления хранилищем, которые в обычном Flash выполняются реализованным на уровне контроллера  транслирующим слоем (FTL, Flash Translation Layer). LightNVM  обеспечивает такие операции как управление размещением данных, сборка мусора и организация параллельного доступа. Функции управления сбойными блоками, атомарность ввода/вывода и размещением метаданных по-прежнему выполняются чипом накопителя;

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

-  Обработка слушающих TCP-сокетов (listen) полностью избавлена от установки блокировок (lockless). Тесты показывают, что после задействования неблокирующего режима производительность слушающих сокетов увеличилась на 2-3 порядка (!), например, один слушающий сокет теперь способен обработать 3.5 млн SYN-пакетов в секунду;
-  В setsockopt() добавлена поддержка флага SO_INCOMING_CPU и расширена логика выбора CPU при использовании SO_REUSEPORT. SO_INCOMING_CPU позволяет организовать обработку в текущем процессе только тех пакетов, которые были приняты с обработкой сетевым стеком на том же CPU. Закрепление привязанных к одному CPU RX-очередей и обработчиков слушающих сокетов позволяет более эффективно использовать процессорный кэш;
-  Добавлен RACK - новый механизм определения потери TCP-пакетов, который в отличие от штатного метода определения факта потери пакета, отталкивается от последовательности пакетов, а не от времени передачи. Суть работы RACK в том, что при получении ACK-подтверждения для пакета, любые неподтверждённые пакеты, отправленные как минимум на RTT (round-trip time) раньше подтверждённого пакета, считаются потерянными и потребуют повторной отправки. Новый алгоритм уже протестирован в инфраструктуре Google и будет предложен для утверждения в качестве стандарта IETF;


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

-  Возможность (http://lwn.net/Articles/660331/) загрузки программ eBPF непривилегированными пользователями для их использования в качестве фильтров для сокетов. Ранее, из соображений безопасности, доступ к системному вызову ebpf() был открыт только пользователю root. В текущей версии ядра код проверки корректности загружаемых программ был значительно улучшен и непривилегированным пользователям дана возможность запуска ограниченных по функциональности программ eBPF, которые могут использоваться для создания простых сетевых фильтров. Возможности eBPF по трассировке, классификации трафика  и манипуляциям с данными ядра по-прежнему доступны только для root. Для запрета обращения к системному вызову  ebpf() из непривилегированных процессов добавлен sysctl kernel.unprivileged_bpf_disabled;

-  Возможность постоянного выполнения eBPF-программ и сопоставлений (Persistent eBPF maps/progs), продолжающих работу и после завершения процесса, инициировавшего их выполнение. Объекты выполняемого persistent eBPF размещаются в области /sys/fs/bpf/ и могут совместно использоваться несколькими процессами. Например, таким способом удобно создавать классификаторы и обработчики трафика;
-  Добавлен фреймворк "devfreq cooling" для управления температурным режимом устройств, позволяющий, при наличии соответствующей аппаратной поддержки,  перевести перегревающееся устройство в режим пониженного энергопотребления для удержания температуры в заданных границах;
-  Добавлен (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.g...) Представлен системный вызов mlock2() (http://lwn.net/Articles/650538/), расширяющий возможности системного вызова mlock()  поддержкой дополнительного аргумента, позволяющего задействовать новый режим блокировки VM_LOCKONFAULT, при котором страницы памяти в указанном диапазоне будут закреплены в ОЗУ не сразу, а только после возникновения page fault (обращение к невыделенным страницам памяти);
-  Изменено содержимое файлов "stat", размещённых в поддиректории каждого процесса в /proc (например, /proc/123/stat). Поле  wchan (30 столб...

URL: https://lkml.org/lkml/2016/1/10/305
Новость: http://www.opennet.ru/opennews/art.shtml?num=43652

 

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



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

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