LINUX.ORG.RU

Ядро Linux 4.5

 ,


1

3

В результате 2 месяцев работы и около 13 тысяч исправлений от примерно 1500 разработчиков вышла новая версия ядра Linux 4.5. Около 45% всех изменений связаны с драйверами устройств, примерно 17% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% — с файловыми системами и 3% — с внутренними подсистемами ядра.

Наиболее значимые и интересные новшества:

  • Добавлен новый системный вызов copy_file_range, позволяющий ускорить выполнение операций копирования данных из одного файла в другой файл с выполнением операции только на стороне ядра, без предварительного чтения данных в память процесса в пространстве пользователя, что избавляет от частого переключения контекста между ядром и пространством пользователя.
  • Для файловой системы Btrfs решены проблемы с масштабируемостью обработки свободного дискового пространства. Вместо использования кэша свободных блоков, становящегося узким местом на больших и нагруженных файловых системах (более 30 Тб), реализован новый экспериментальный метод представления кэша свободного дискового пространства, который лишен ограничений с масштабируемостью и не требует обновления после каждого изменения в ФС.
  • Для модуля dm-verity (device-mapper verity), предназначенный для проверки целостности хранимых блоков данных по криптографическим хэшам (например, используется для верификации загрузки в платформе Android), добавлена поддержка кодов прямой коррекции ошибок (FEC, Forwarded Error Correction, помехоустойчивое кодирование), которые позволяют не только выявить повреждения, но и восстановить исходное состояние блоков данных.
  • Для файловой системы ext4 реализована поддержка квот проектов («project quota»). Файлы могут быть привязаны к отдельным «проектам» для которых применяются иные квоты, отличающиеся от общих системных квот.
  • Проделана работа по оптимизации производительности работы режима SO_REUSEPORT для UDP-сокетов. Опция SO_REUSEPORT позволяет сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений с распределением поступающих запросов одновременно по всем подключенным через SO_REUSEPORT сокетам, что упрощает создание многопоточных серверных приложений.
  • В cgroup memory controller добавлена возможность учёта в едином пуле потребления памяти структурами данных, связанными с работой сокетов, анонимной памятью и кэше страниц памяти, позволяя учитывать состояние потребителей памяти в процессе распределения и лимитирования памяти в группе. Например, при нехватке памяти, может быть приостановлено выделение памяти на сетевые структуры.
  • Добавлена поддержка опции SOCK_DESTROY, позволяющей системному администратору принудительно закрыть TCP-соединение через интерфейс «netlink socket diag», инициируя операцию TCP ABORT с отправкой другой стороне RST-уведомления о завершении соединения.
  • В nftables добавлена поддержка перенаправления и дублирования пакетов netdev, например, для быстрого проброса пакетов с одного интерфейса на другой или между входным/выходным буфером одного интерфейса. Также добавлена поддержка изменения данных в пакете (mangling packet payload) с автоматической корректировкой контрольной суммы и возможность учёта в правилах счётчика байт или пакетов.
  • Обеспечена возможность сборки ядра в GCC 4.9+ с включённой опцией -fsanitize=undefined, активирующей отладочный режим UBSAN (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, добавляющего в скомпилированный код дополнительные проверки для выявления во время выполнения программы ситуаций, когда поведение программы становится неопределенным (зависит от реализации компилятора) из-за ошибки программиста.
  • В системный вызов madvise, предоставляющий средства для оптимизации управления памятью процесса, добавлена поддержка флага MADV_FREE, который дополняет уже имеющийся флаг MADV_DONTNEED, через который ядру можно загодя сообщить о готовящемся освобождении блока памяти, т.е. о том, что этот блок уже не нужен и может использоваться ядром.
  • В вызов epoll добавлена поддержка флага EPOLLEXCLUSIVE, решающего проблемы с масштабируемостью в многопоточных приложениях.
  • Интерфейс cgroup v2 переведён в разряд официально поддерживаемых и более не скрыт в категории экспериментальных разработок. В рамках cgroup v2 предлагается единая унифицированная иерархия cgroup (Cgroup unified hierarchy), пришедшая на смену гибкой, но не получившей практического применения, поддержке произвольного числа иерархий cgroup, определяющих применение правил к группам процессов (например, одна иерархия для распределения ресурсов CPU, а другая для регулирования потребления памяти).
  • Поддержка принудительной блокировки файлов (Mandatory file locking) переведена в разряд опциональных возможностей и требует явного включения в файле конфигурации. В будущем реализацию принудительной блокировки файлов планируется удалить из ядра.
  • Добавлена защита от приведения устройств с проблемными прошивками в нерабочее состояние после очистки конфигурации UEFI в результате удаления содержимого директории /sys/firmware/efi/efivars, например, после запуска «rm -rf /» под пользователем root. В новой версии ряд переменных в /sys/firmware/efi/efivars защищён от удаления.
  • В User-Mode Linux добавлена поддержка системного вызова seccomp().
  • В файл конфигурации ядра добавлена новая опция CONFIG_IO_STRICT_DEVMEM (отключена по умолчанию), позволяющая блокировать доступ к областям памяти /dev/mem, связанных с работой драйверов устройств.
  • Внесены улучшения в реализацию TPM/TPM2 (Trusted Platform Module).
  • В Smack добавлена проверка 'file receive', позволяющая определить права доступа к сокету в привязке к процессу, а не к i-node.
  • Возможность увеличения диапазона случайных значений, используемых при работе системы рандомизации адресного пространства (ASLR). Вместо заданных в коде значений параметры рандомизации теперь можно менять через /proc/sys/vm/mmap_rnd_bits и /proc/sys/vm/mmap_rnd_compat_bits, что может использоваться для усиления безопасности, но чревато проблемами с распределением больших блоков памяти.
  • Возможность лимитирования числа неименованных каналов (pipe), которые может создать один пользователь. Указанная возможность позволяет защититься от атак, в результате которых пользователь может израсходовать всю доступную память через открытие большого числа неименованных каналов, данные в которых остаются никогда не прочитаны.
  • В драйвер AMDGPU добавлена экспериментальная поддержка технологии динамического управления питанием Powerplay. Powerplay позволяет решить проблему с посредственной производительностью GPU Radeon в Linux, вызванную тем, что по умолчанию GPU запускается в режиме низкого энергопотребления, не позволяющего добиться максимальной производительности. Powerplay динамически отслеживает нагрузку на графическую подсистему и при необходимости повышает тактовую частоту GPU, переводя его в режим максимальной производительности. В настоящее время поддержка Powerplay реализована для GPU Tonga и Fiji, а также для интегрированных APU Carrizo и Stoney, использование нового драйвера AMDGPU с которыми демонстрирует существенное увеличение производительности. Из-за необходимости дополнительной стабилизации и тестирования кода режим Powerplay пока отключен по умолчанию, для включения следует передать ядру параметр «amdgpu.powerplay=1»;
  • Из драйвера Radeon полностью удалена поддержка переключения видеорежимов в пространстве пользователя (UMS), для управления видеорежимами теперь можно использовать только KMS.
  • Расширены возможности DRM-драйвера для видеокарт Intel: добавлена поддержка будущего поколения чипов Kabylake, идущего на смену Skylake.
  • Расширены возможности DRM-драйвера для видеокарт NVIDIA (Nouveau): представлена возможность изменения скорости для шины PCI Express.
  • Включена новая версия Media controller API, позволяющая улучшить поддержку расширенных устройств Video4Linux (например, радио и TV) и дающая возможность использовать функциональность мультимедиа контроллера в других подсистемах, таких как DVB, ALSA и IIO.
  • Обновлена реализация проекта по обеспечению создания универсальных многоплатформенных ARM-сборок, позволяющих использовать одну сборку ядра для загрузки на различных ARM-процессорах ARMv6 и ARMv7. В новой версии отмечается включение наработок по рефакторингу ARM-сборок и добавление новых подсистем для улучшения абстрагирования от особенностей каждой платформы.
  • Поддержка новых ARM-плат: Sigma Designs Tango4, Raspberry Pi 2 (BCM2836), Rockchip RK3228, Freescale LS1043a, LogicPD DM3730, Cosmic+ M4 (Freescale Vybrid).
  • Поддержка USB-контроллеров Mediatek MT65xx, Renesas USB3.0, Renesas R-Car 3 USB 2.0 PHYs, Hisilicon hi6220 USB PHYs.
  • Поддержка криптографических ускорителей Rockchip и Intel C3xxx, C3xxxvf, C62x, C62xvf.
  • Поддержка звуковых карт Imagination Technologies, звуковых сопроцессоров AMD и кодеков Cirrus Logic CS47L24, Rockchip rk3036 Inno, Dialog Semiconductor DA7217/DA7218, Texas Instruments pcm3168a, Realtec RT5616/5659.

Более полная новость на opennet

>>> Подробности (на английском языке)

★★★★★

Проверено: Klymedy ()
Последнее исправление: JB (всего исправлений: 4)

Добавлена защита от приведения устройств с проблемными прошивками в нерабочее состояние после очистки конфигурации UEFI в результате удаления содержимого директории /sys/firmware/efi/efivars, например, после запуска «rm -rf /» под пользователем root. В новой версии ряд переменных в /sys/firmware/efi/efivars защищён от удаления.

Теперь хейтеры, которые считают, что это systemd должен защищать efivars от удаления монтированием в ro, официально проиграли.

nexfwall ★★★★
()

Расширены возможности DRM-драйвера для видеокарт NVIDIA (Nouveau): представлена возможность изменения скорости для шины PCI Express.

Пацаны ликуют.

anonymous
()

Около 45% всех изменений связаны с драйверами устройств, примерно 17% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур

В строках кода без комментариев?

pacify ★★★★★
()

Наиболее значимые и интересные новшества:
Поддержка новых ARM-плат

про какой-то китайский шлак в device tree написано (который нет смысла упоминать вообще), а тем временем наиболее интересно включение в основную ветку написаного с нуля DRM-драйвера для Vivante GPU

http://lxr.free-electrons.com/source/drivers/gpu/drm/etnaviv/Kconfig

anonymous
()
Ответ на: комментарий от anonymous

Эм, а DRM тут причем? Это же в числе прочего школоклогинга всегда через биос делалось и всегда относилость к материнке, но никак не к видюхе, не?

anonymous
()

Разобрались бы с температурами лучше. До сих пор, как переключишься в оффтопиг игрушки погонять - на десктопе 3-5 градусов долой

TooPar
()
Ответ на: комментарий от anonymous

Ну и, PCIexpress находится на MB, отвечает за него Southbridge либо встроенный конроллер в CPU. Схренали за него драйвер видеокарты должен отвечать?

anonymous
()

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

Вот она! Вот она - рыба моей мечты!

zolden ★★★★★
()
Ответ на: комментарий от anonymous

Нет, я про:

Расширены возможности DRM-драйвера для видеокарт NVIDIA (Nouveau): представлена возможность изменения скорости для шины PCI Express

Причем тут DRM драйвер видеокарты, если за данный процесс отвечает южный мост как железяка и ACPI как интерфейс управления этой железякой. И почему именно драйвер видеокарты должен это делать, почему не драйвер RAID-контроллера скажем, или PCIE-SSD, например? Ведь шина сразу для всех слотов гонится, а не для отдельных, в которые именно видеокарта от хуанга вставлена.

anonymous
()
Ответ на: комментарий от anonymous

Нет, я про:

блин - это я промазал, показалось что ты мне написал :)

anonymous
()

Когда ACPI на макбуке починят?

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

Если в кровати на волосатого мужика не смотреть, может разницы и не будет?

anonymous
()
Ответ на: комментарий от vurdalak

Проиграли все. Потому что система не должна приходить в состояние полной неработоспособности от удаления каких-то настроек. Должны просто применяться параметры по умолчанию.

i-rinat ★★★★★
()
Ответ на: комментарий от Liquorice

Тогда это странная фича. Я думаю что какие-то еще есть нюансы, пока не могу найти

vertexua ★★★★★
()
Ответ на: комментарий от i-rinat

Именно. А в данном случае устройство открыло свои данные на удаление, чего делать не должно. Поэтому виновато в любом случае оно, а не софт.

vurdalak ★★★★★
()
Ответ на: комментарий от anonymous

Ведь шина сразу для всех слотов гонится, а не для отдельных, в которые именно видеокарта от хуанга вставлена.

Это точно? Просто PCI она действительно сделана по топологии «общая шина». А вот PCI-E сделана по топологии «точка - точка». К тому же скорость может быть и не связана с частотой напрямую.

rezedent12 ☆☆☆
()
Ответ на: комментарий от vurdalak

Прочитал как:

Поэтому виновато в любом случае дно

rezedent12 ☆☆☆
()
Ответ на: комментарий от vurdalak

Добро пожаловать в мир софтварных железок, софт софт виноват, но обсуждать право лень

anonymous
()
Ответ на: комментарий от vurdalak

Добавление костылей может закрепить баг, как это было с синими людьми на Youtube.

Хотя в данном случае шансов, что firmware будут чинить, вообще нет.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Я не думаю, что производитель почешется если не делать костылей. Просто добавят в инструкцию надпись «несовместимо с линуксом» и на этом забьют. Вставать в позу имеет смысл только тогда, когда у тебя есть реальные рычаги давления на обидчика.

vurdalak ★★★★★
()
Ответ на: комментарий от zolden

осталось только на дождаться на редхатах =)

dada ★★★★★
()

что это за квоты проектов в ext4 ?

kto_tama ★★★★★
()
Ответ на: комментарий от BattleCoder

На десктопе пофигу - там охлад класса overkill - штоп ночью мышь не услышала. А на ноуте чуть проект компильнул - вентилятор дает о себе знать. На винде каждый третий раз, на линухе - каждый второй

TooPar
()
Ответ на: комментарий от amorpher

Неа, синие люди были багом Flash, они там перепутали U и V компоненты. В nVidia не стали ждать, пока баг починят, и добавили костыль в libvdpau, который эти компоненты менял, если определял, что запущен из-под Flash в Firefox, и этим самым запечатали баг навсегда. Если в Flash его исправить, из-за костыля синие люди появятся снова.

Вот так строят пирамиду из костылей.

i-rinat ★★★★★
()

В драйвер AMDGPU добавлена экспериментальная поддержка технологии динамического управления питанием Powerplay.

Хорошо, что семимильными шагами этот драйвер развивают. Надеюсь на то, что с его внедрением OpenGL благополучно помрёт.

Quasar ★★★★★
()
Ответ на: комментарий от amorpher

а в обычном видео через тот же тотем

Про такое я не в курсе.

i-rinat ★★★★★
()
Ответ на: комментарий от Quasar

После релиза вулкана в нынешнем виде (1000 строк на загрузку одной текстуры, конткест успешно заводится строго по корейскому рандому и после танцов с бубнами и выяснения всех багов дров), чувствую, OpenGL еще лет 20 будет жить.

anonymous
()
Ответ на: комментарий от anonymous

Эх, а я всё жду наноядра написаного на Rustlang.

Ага, теперь понял почему нужен Rust, на него перейдут все ядро-писатели.

Но ... Линус Торвальдс не одобряет микроядра.

anonymous
()
Ответ на: комментарий от hobbit

Да не вопрос, пускай только мне интел, хуанг, амд и прочие жлобы будут помогать, а то чет дрова впадлу самому писать.

anonymous
()
Ответ на: комментарий от adstudio

С таким-то Pukan, в котором даже hellotriangle не работает - естественно.

anonymous
()
Ответ на: комментарий от TooPar

До сих пор, как переключишься в оффтопиг игрушки погонять - на десктопе 3-5 градусов долой

Забавно, у меня ровно обратная ситуация. Thinkpad T430 - в лине стабильно 45-55, грузишься в винду биос обновить - 60-65.

zink ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.