После двух месяцев разработки Линус Торвальдс представил (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
А сломали, сломали то что?
> А сломали, сломали то что?Почему "сломали"? Как "представил", так один Линус, а как "сломали", так все вместе... Пускай так и пишут: "После двух месяцев разработки Линус Торвальдс внёс в ядро следующие регрессии ...", ну и далее по тексту.
"Представил", а не " разработал". Или всем разработчикам собраться на поле и хором изменения декларировать?
>Или всем разработчикам собраться на поле и хором изменения декларировать?Как что-то плохое.
Поставь, узнаешь :)
> А сломали, сломали то что?Не знаю когда это точно случилось, но у меня в корне xfs.
Так вот эта ФС теряет свободное место, просто перезагрузился и 30Мб как не бывало, думал что логи но весь каталог /var вырос буквально на 40Кб.
Домашний каталог находится на отдельном разделе.
https://ru.wikipedia.org/wiki/Бэд-сектор
У меня тоже xfs на корне, но она не теряет свободное место.
> У меня тоже xfs на корне, но она не теряет свободное место.А systemd есть ? вообще спасибо за ответ - для меня полезная инфа.
systemd есть, дистр Арч.
Кстати про СистемД Поттеринг таки угадал:
https://ru.wikipedia.org/wiki/%D0%A1%D0%...
> Кстати про СистемД Поттеринг таки угадал:Да-да... "Тридцать пять тысяч одних юнит-файлов! У меня лёгкость в мыслях необыкновенная."
Лучше чем 35 000 глючных скриптов от бухих студней, которые вообще не понятно - заменит при апгрейде пакетный менеджер или нет. В systemd с этим бардаком хоть какой-то порядок навели, так что есть дистровские настройки, а есть админские, и дистро в общем случае не покушается на админа, в отличие от русской рулетки в sysv init.
> Лучше чем 35 000 глючных скриптов от бухих студнейВечная зависть школоты к "студням"...
Почему же сразу зависть? Хорошо что в серверном altlinux есть останки sysv init. Есть куда посылать лиц у которых мозг совсем засох, так что они не будут портить жизнь более приличным дистрибутивам.
сказали же "Линус Торвальдс". Новости про Поттеринга дальше
а я на своём арче с 4.3 на 4.4 не смог перейти - теперь грузится без экрана. по ssh зайти могу, а вывода на монитор никакого нет.
откатился на 4.1-lts, решать проблему времени нет.
4.5 в stable арча будет наверно на следующей неделе наверно.
Отныне ты изгнан из клуба линуксоидлв!
Поддержка новых ARM-плат: Sigma Designs Tango4, Raspberry Pi 2 (BCM2836),Что это означает для владельцев rpi2?
Для дистрибутивоклепателей, это означает поддержку их плат, без необходимости переклеевать ядро и допиливать нужные драйверсы.
вот только уже Raspberry Pi 3 вышла... отстают-сИ я так и не понял - видеоподсистему Skylake уже в предыдущих релизах допилили? В гентушечке в стабильных ядрах работает очень плохо, в тех, что посвежее уже получше, но все равно далеко не без проблем
> вот только уже Raspberry Pi 3 вышла... отстают-сЧего ты от броадкома то хотел? Они проприетарщики по жизни, так что радуйся что хоть так.
> Что это означает для владельцев rpi2?То что будет работать с обычным ядром, а не вендоровским самосбором.
BTRFS - порадовал, но все равно считаю вещь сырой. хоть и один из вариантов резервирования на предприятии работает.
Порадовал UDP b новый механизм копирования. Но вот беда - ждать сборок от создателей дистрибутива будет еще очень долго, а самому внедрять ядро и потом следить за его актуальностью - пипец,как накладно в рамках работы
> Но вот беда - ждать сборок от создателей дистрибутива будет еще очень долгону тут каждый сам выбирает. долго ждать или получить быстро.
Поставь арчик
> BTRFS - порадовал, но все равно считаю вещь сырой.Пользуйся EXT2, никто не возражает. А собрать свое ядро - пару часов на осмысление конфига, если взять за основу то ядро которым пользуешься, 15 минут - собрать на не очень плохой машине. Сурово у тебя там на работе что даже это позволить себе нельзя.
btrfs это как wayland. Гладко было на бумаге, да забыли про овраги.
В центоси, кстати, libssh2 обновился, запилите кто-нибудь страшную историю?
> В центоси, кстати, libssh2 обновился, запилите кто-нибудь страшную историю?Черной, черной ночью в черном, черном городе обновлялся черный, черный, гробик гробик с высохшим трупиком черного, черного, четвертого пня через черный, черный доступ в сеть, когда отключили свет.
> В центоси, кстати, libssh2 обновился, запилите кто-нибудь страшную историю?A type confusion issue was found in the way libssh2 generated ephemeral
secrets for the diffie-hellman-group1 and diffie-hellman-group14 key
exchange methods. This would cause an SSHv2 Diffie-Hellman handshake to use
significantly less secure random parameters. (CVE-2016-0787)
> В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителейИ когда оно в ведроидах появится? А то пока все жуют микрософтные FAT/exFAT...
>> В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителей
> И когда оно в ведроидах появится? А то пока все жуют микрософтные
> FAT/exFAT...жуйте CFS
Погугли по словам "f2fs андроид". Есть утилиты и мануалы, как некоторые ROM-ы перевести на полный F2FS.Вот в OpenWRT с F2FS всё грустно - стандартными средствами автомонтирование F2FS-разделов невозможно, а городить свои скрипты откровенно не хочется.
> И когда оно в ведроидах появится?Давно есть, для внутренней памяти уже во всю используется. А ты думал что самсунг это из эстетических соображений разрабатывает?
> Новый системный вызов copy_file_range, позволяющий ускорить выполнение операций копирования данных из одного файла в другой файл с выполнением операции только на стороне ядра, без предварительного чтения данных в память процесса в пространстве пользователя, что избавляет от частого переключений контекста между ядром и пространством пользователя. Тем не менее, в обычных условиях использование copy_file_range лишь немного быстрее обычной команды "cp", так как основное время уходит на ввод/вывод с накопителя.сорри за ламерский вопрос, но все же, объясните, кто в курсе. т.е. получается , что sendfile теперь не нужен? или он для других целей будет использоваться. насколько я помню он делает то же самое, только у него были траблы с NFS. так ли это?
Сендфайл это из файла в сокет. А это из файла в файл. Чуешь разницу?
ну сокет это по сути такой же файл. почему нельзя было юзать его для копирования файлов ?
В copy_file_range появился параметр для задания смещения для выходного файла.
Для сокетов же (т.е. sendfile) - это бесмысслено.
> В copy_file_range появился параметр для задания смещения для выходного файла.
> Для сокетов же (т.е. sendfile) - это бесмысслено.это не так. sendfile() отлично копирует файлы кусками по смещению, как угодно.
seek позволяет выставить, куда он будет писать.я честно не могу вообще понять смысла в новом вызове и буду рад, если кто-нибудь нормально объяснит.
> sendfile() отлично копирует файлы кусками по смещению, как угодно.
> seek позволяет выставить, куда он будет писать.Несколько позновато отвечаю.
Согласен, seek помагает. Но это если в одном потоке писать в файл. А вот если сразу из нескольких потоков надо одновремено. Это как pwrite,pread vs write,read.
То, что и для сокета и для файла юзается файловый дескриптор еще ни о чем не говорит.
Сендфайл на файлах в качестве назначеения не работает.
Когда ты читаешь из файла сокет то тебе надо инициировать ио операцию и запихать полученные данные в буфер сокета. Это делает сендфайл. А когда копируешь из файла в файл, то надо сперва одну, потом другую ио операцию, обе блокирующие, код сложнее
> copy_file_rangeВообще не понятно, в чем сложность была реализации этого раньше. Ведь это прямо очевидная функциональность для файловых систем, которые подразумевают работу с файлами на удаленной машине. Ждем использование copy_file_range в SAMBA, sshfs, CurlFtpFS.
Боюсь, ждать аналогичного поведения в Samba вам придется до тех пор, пока винда на той стороне провода не научится понимать команду "да не нужен мне твой файл, просто копию сделай, дубина!".
На той стороне тоже может быть самба. ХЗ, правда, есть ли в протоколе какая-нибудь секция необязательных флагов и возможность получить набор дополнительных способностей сервера - но в принципе вариант "базовый потокол плюс анонс/исопльзование необяательных расширений" - вообще хорошая штука.
>ждать аналогичного поведения в Samba вам придется до тех пор, пока винда на той стороне провода не научится понимать команду "да не нужен мне твой файл, просто копию сделай, дубина!".т.е. ждать придётся появления SMB 2.0 в windows vista в 2006 году. ну ждите...
Что это значит? В smb 2.0 есть вызов аналога copy_file_range ?
Не уверен, что именно в 2.0, но в какой-то версии точно добавили.
Это или нет?
https://wiki.samba.org/index.php/Server-Side_Copy
да. https://msdn.microsoft.com/en-us/library/cc246740.aspx
Заплюсил минусы. Я тоже M$ не лбюлю, но "истина дороже!(С)"
Есть у них это. ТЧК.
для процессоров интел (в частности baytrail) как поломали с 3.17 работу с включенным c-state > 1 так и не починили -- если в биосе разрешены режимы с-state 6 или 7, то система гарантированно повиснет после запуска в течении 10-30 минут
Чтобы не быть голословным -- вот ссылка на баг https://bugzilla.kernel.org/show_bug.cgi?id=109051
на gigabyte ga-j1900-d3v заметил такое поведение в ubuntu 14.04.3.. переодически зависает. как раз включил этот C6-state
та же фигня с asrock j1900, помогает только переключение в биосе на C-STATE C1 (к соалению так проц больше греется, но пока других решений нет, выньтел положили болт на своих кастомеров https://communities.intel.com/thread/60984?start=0&tstart=0
Спасибо за совет ;)
А ядро 4.3 теперь не будут обновлять? Кто в курсе? Интересно что будет в Debian 9 к релизу: 4.4, 4.5 или оставят 4.3.
> А ядро 4.3 теперь не будут обновлять? Кто в курсе? Интересно что
> будет в Debian 9 к релизу: 4.4, 4.5 или оставят 4.3.4.3 нет, уже EOL. 4.4 LTS-релиз. Предыдущй LTS - 4.1. Хотя другие проекты могут поддерживать ядро своими силами и бэкпортировать изменения.
Значит не просто так в репозиториях части из 4.4, спасибо за инфу.
> А ядро 4.3 теперь не будут обновлять? Кто в курсе? Интересно что
> будет в Debian 9 к релизу: 4.4, 4.5 или оставят 4.3.Просто надо помнить, что есть Vanilla-ядро, это не тоже самое что и ядро в дистрибутиве. В Убунте даже нумеруют обновления по-своему.
>Интересно что будет в Debian 9 к релизуhttp://www.opennet.ru/opennews/art.shtml?num=43984
>Сдвиг сроков выполнен для того, чтобы обеспечить вхождение в состав Debian 9 ядра Linux 4.10, которое будет отнесено к разряду LTS-веток, что упростит длительное сопровождение пакетов с ядром в дистрибутиве.
А вот 4.4 сейчас в unstable. Оно в testing ведь будет иногда переходить до выхода 4.10 если предыдущие стабильные ветки не нужны и даже на longterm нет намёка? Не в курсе?
Перешли на 4.4, видимо потом на 4.5 и т.д. до выхода 4.10 будут обновлять. Это молодцы они.
EPOLLEXCLUSIVE и EPOLLROUNDROBIN - годно.
> Реализация ioctl-команд XFS XFS_IOC_FSSETXATTR и XFS_IOC_FSGETXATTR, позволяющих запрашивать и устанавливать различные дополнительные атрибуты файлов (только синхронная запись, запрет изменения, только дополнение, запрет создание символических ссылок на файл, не включение в бэкапы, запрет дефрагментации и т.п.), перемещена на уровень VFS и унифицирована для использования в других ФС (например, уже существует реализация для ext4).Интересно, сами догадались, или это системдшники таки добрались до bugzilla.kernel.org ? :)
https://github.com/systemd/systemd/issues/560
> Интересно, сами догадались, или это системдшники таки добрались до bugzilla.kernel.org ? :)Зачем им куда-то добираться, у них же есть волшебный Грег КХ :)
EPOLLEXCLUSIVE как юзать? нифига не ясно
Так-то молодцы. Только кто-нибудь бы ещё обратил внимание на этот баг:
https://bugzilla.kernel.org/show_bug.cgi?id=73241
А то кард-ридер встроенный на Асер-ах и некоторых макбуках или не пашет, или работает, но при этом постоянно система лагает, что-то там с прерываниями не так. Может потому, что картовод и сетевуха сидят на одном прерывании, хз.. Видать какой-то комбо-чип от Броадком-а.
Вопрос бородатым арчеводам: сколько примерно готовится пакет для нового ядра? В арче пытался сделать обновление - там всё ещё ядро 4.4;
Для этого не нужно быть бородатым арчеводом. День-другой нужно потерпеть будет. Хотя иногда у них задержки ~ недели-другой бывает.
В Gentoo вот уже прилетело.
речь про stable или testing ?
по разному. в stable до 4х недель было как то. обычно в течении 10 дней.
стесняюсь спросить, а сколько сейчас весит ядро, если патч 70 Мб, в 2.6 оно весило чуть больше 20 Мб?
> стесняюсь спросить, а сколько сейчас весит ядро, если патч 70 Мб, в
> 2.6 оно весило чуть больше 20 Мб?Сорсов там куда больше чем 20мб. Патч дял сорсов, а 20мб это ты про бинарник
>> стесняюсь спросить, а сколько сейчас весит ядро, если патч 70 Мб, в
>> 2.6 оно весило чуть больше 20 Мб?
> Сорсов там куда больше чем 20мб. Патч дял сорсов, а 20мб это
> ты про бинарникЭто *всё* бессмысленно... Ср.:
patch-4.5.xz 14-Mar-2016 04:39 8.2M
patch-4.5.gz 14-Mar-2016 04:39 15M
linux-4.5.tar.xz 14-Mar-2016 04:38 84M
linux-4.5.tar.gz 14-Mar-2016 04:38 128M
-- https://cdn.kernel.org/pub/linux/kernel/v4.x/?C=M;O=Dlinux-2.6.13.tar.bz2 29-Aug-2005 00:02 37M
linux-2.6.13.tar.gz 29-Aug-2005 00:02 46M
linux-2.6.13.tar.xz 29-Aug-2005 00:02 30M
patch-2.6.13.bz2 29-Aug-2005 00:03 4.8M
patch-2.6.13.gz 29-Aug-2005 00:03 5.9M
patch-2.6.13.xz 29-Aug-2005 00:03 4.0Mlinux-2.6.39.tar.bz2 19-May-2011 04:21 73M
linux-2.6.39.tar.gz 19-May-2011 04:21 92M
linux-2.6.39.tar.xz 19-May-2011 04:21 60M
-- https://cdn.kernel.org/pub/linux/kernel/v2.6/"Git позволил удвоить объём тарбола ядра *вдвое* быстрее!!"- срочно в Новости!
//+Эпоха git-а на "ftp": patch-и и ChangeLog-и "не здесь".
> стесняюсь спросить, а сколько сейчас весит ядро, если патч 70 Мб, в 2.6 оно весило чуть больше 20 Мб?в убунте установленное 4.4 выглядит так
-rw-r--r-- 1 root root 1,2M марта 10 03:44 abi-4.4.5-040405-generic
-rw-r--r-- 1 root root 184K марта 10 03:44 config-4.4.5-040405-generic
-rw-r--r-- 1 root root 13M марта 13 17:58 initrd.img-4.4.5-040405-generic
-rw------- 1 root root 3,7M марта 10 03:44 System.map-4.4.5-040405-generic
-rw------- 1 root root 6,7M марта 10 03:44 vmlinuz-4.4.5-040405-generic
> стесняюсь спросить, а сколько сейчас весит ядро, если патч 70 Мб, в
> 2.6 оно весило чуть больше 20 Мб?Да лан, не стесняйся, ведь тебе вся функциональность ядра не нужна. Дистрибутивщики специально для домохозяек делают урезанное. Иначе на лампочку линукс никак не поставить.
Спецы!!! Помогите…
до 4.4 все сборки шли без проблем, потом… собирается без проблем, initrd делается, в grub 2 прописывается…
Но!
Новое ядро не стартует даже с «kernel panic!» — просто система виснет, нет отчетов в консоли старта, нет и в var/mess и var/log/boot
Старые сборки — стартуют без проблем…
уже все gcc и glibc переустановил, почистил все…
Ты не одинок, я вчера и сегодня не смог запустить ядро. Ядро-4.5 не запускается на десктопе.
Да, ось opensuse 13.2
dracut - последний, от ноября..
"В Btrfs решены проблемы с масштабируемостью обработки свободного дискового пространства."это экспериментальная фича
какой-то Омар работал над ней все лето :)))))
https://lkml.org/lkml/2016/1/17/17
Это фэйсбук для себя запилил - видите ли, старая реализация медленно работала если у тебя хранилище крупнее ~30 терабайтов, тебе это все-равно не грозит.
вот интересно, как проверить эффективность этого патча
не думаю, что объем играет