The OpenNET Project / Index page

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

Вторая версия патчей c реструктуризацией заголовочных файлов ядра Linux

09.01.2022 10:47

Инго Молнар (Ingo Molnar) представил вторую версию набора патчей, позволяющего значительно сократить время пересборки ядра за счёт реструктуризации иерархии заголовочных файлов и сокращения числа перекрёстных зависимостей. От предложенной несколько дней назад первой версии новый вариант отличается адаптацией для ядра 5.16-rc8, добавлением дополнительных оптимизаций и реализацией поддержки сборки с использованием компилятора Clang. При использовании Clang применение патчей позволило сократить время сборки на 88% или на 77% в показателях расходования ресурсов CPU. При полной пересборке ядра командой "make -j96 vmlinux время сборки сократилось с 337.788 до 179.773 секунд.

В новой версии также решена проблема с плагинами GCC, исправлены выявленные в процессе начального рецензирования ошибки и проведена унификация дубликатов объявления структуры "task_struct_per_task". Кроме того, продолжена оптимизация заголовочного файла linux/sched.h и реализована оптимизация заголовочных файлов подсистемы RDMA (infiniband), которая позволила дополнительно сократить время сборки на 9% относительно первой версии патчей. Число Си-файлов ядра, подключающих заголовочный файл linux/sched.h, сокращено с 68% до 36% по сравнению с первой версией патчей (с 99% до 36% по сравнению с исходным ядром).

  1. Главная ссылка к новости (https://lkml.org/lkml/2022/1/8...)
  2. OpenNews: Опубликован набор патчей, ускоряющих сборку ядра Linux на 50-80%
  3. OpenNews: Удалённая уязвимость в реализации протокола TIPC в ядре Linux
  4. OpenNews: Третья редакция патчей для ядра Linux с поддержкой языка Rust
  5. OpenNews: Экспериментальная поддержка пересборки ядра Linux в Clang с механизмом защиты CFI
  6. OpenNews: Для ядра Linux предложена реализация /dev/random, избавленная от привязки к SHA-1
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/56475-kernel
Ключевые слова: kernel, linux, patch
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:53, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +35 +/
    фантастика, ждем в апстриме
     
     
  • 2.61, Аноним (-), 02:31, 12/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    фантастика что новости уже пару дней, а про 96 и 69 еще никто не пошутил :(
    не играет гормон и это печально, стареете
     

  • 1.2, Аноним (2), 10:54, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +38 +/
    Титанический труд, спасибо всем причастным за проделанную работу!
     
     
  • 2.21, Аноним (21), 12:13, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • –23 +/
    ага, большое спасибо за сломанный blame по всему ядру. надеюсь, причастных когда-нибудь посадят
     
     
  • 3.57, irinat (ok), 23:28, 10/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > сломанный blame

    Это такая дешёвая придирка, что просто смешно. Случаи, когда git blame за один заход помогает найти оригинального автора настолько редки, что можно смело считать, что такого не происходит никогда. Всегда после запуска git blame нужно проверять патч, чтобы выяснить суть изменений. Иногда это реструктурирование кода, иногда функции приобретают или теряют аргумент. Иногда приличный кусок кода смещается вправо или влево, потому что добавился или исчез "if". Всегда нужно проверять патч.

    В долгоживущих проектах git blame может состоять из более чем десятка шагов. Ещё один шаг погоды не делает.

     
     
  • 4.59, rshadow (ok), 01:29, 12/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да забей. "Свинья везде грязь найдет"
     

  • 1.3, васёк (?), 10:55, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    а в Винде как такую проблему решили? там же тоже ядро на си...
     
     
  • 2.5, Аноним (5), 10:58, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +10 +/
    А зачем майкам решать такую проблемы у них же человекочасы и количество фич на релиз кипиай.  Им никакие оптимизации не нужны.  
     
  • 2.14, qwe (??), 11:20, 09/01/2022 Скрыто модератором
  • –11 +/
     
     
  • 3.27, йуц (?), 13:32, 09/01/2022 Скрыто модератором
  • –1 +/
     
  • 2.17, n00by (ok), 11:45, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Вот так:

    private\windows\media\avi\verinfo.16\verinfo.h:

         *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         * !!!!!!!IF YOU CHANGE TABS TO SPACES, YOU WILL BE KILLED!!!!!!!
         *       !!!!!!!!!!!!!!DOING SO F*CKS THE BUILD PROCESS!!!!!!!!!!!!!!!!
         *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

     
     
  • 3.20, Аноним (20), 12:10, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Да, было веселье, когда комментарии в утекшем коде винды разбирали.

    Вот ещё находки (источник https://web.archive.org/web/20040622090121/http://www.kuro5hin.org/story/2004/ ):

    private\shell\shell32\util.cpp:
    // the fucking alpha cpp compiler seems to fuck up the goddam type
    "LPITEMIDLIST", so to work<BR>// around the fucking peice of shit compiler we
    pass the last param as an void *instead of a LPITEMIDLIST


    private\ntos\rtl\heap.c:
    // The specific idiot in this case is Office95, which likes
    // to free a random pointer when you start Word95 from a desktop
    // shortcut.

    private\ntos\w32\ntuser\kernel\swp.c:
    * for idiots like MS-Access 2.0 who SetWindowPos( SWP_BOZO
    * and blow away themselves on the shell, then lets
    * just ignore their plea to be removed from the tray

    private\ntos\w32\ntuser\kernel\swp.c:
    * for idiots like MS-Access 2.0 who SetWindowPos( SWP_BOZO
    * and blow away themselves on the shell, then lets
    * just ignore their plea to be removed from the tray

    private\inet\mshtml\src\core\cdbase\baseprop.cxx:
    // HACK! HACK! HACK! (MohanB) In order to fix #64710 at this very late
    private\inet\mshtml\src\core\cdutil\genutil.cxx:
    // HACK HACK HACK. REMOVE THIS ONCE MARLETT IS AROUND

    private\inet\mshtml\src\other\moniker\resprot.cxx:
    //
    goto EndHack;
    //

    private\inet\mshtml\src\site\layout\flowlyt.cxx:
    // God, I hate this hack ...

    private\inet\wininet\urlcache\cachecfg.cxx:
    // Dumb hack for back compat. *sigh*

    private\inet\wininet\urlcache\filemgr.cxx:
    // ACHTUNG!!! this is a special hack for IBM antivirus software

    private\ispu\pkitrust\trustui\acuictl.cpp:
    // HACK ALERT, believe it or not there is no way to get the height of the current
    // HACK ON TOP OF HACK ALERT,

    private\ntos\udfs\devctrl.c:
    // Add the hack-o-ramma to fix formats.

    private\shell\shdoc401\unicpp\sendto.cpp:
    // Mondo hackitude-o-rama.

    private\ntos\w32\ntcon\server\link.c:
    // HUGE, HUGE hack-o-rama to get NTSD started on this process!

    private\ntos\w32\ntuser\client\dlgmgr.c:
    // HACK OF DEATH:

    private\shell\lib\util.cpp:
    // TERRIBLE HORRIBLE NO GOOD VERY BAD HACK

    private\ntos\w32\ntuser\client\nt6\user.h:
        * The magnitude of this hack compares favorably with that of the national debt.

    private\shell\ext\tweakui\genthunk.c:
        * CallProc32W is insane. It's a variadic function that uses
        * the pascal calling convention. (It probably makes more sense
        * when you're stoned.)

    private\mvdm\wow32\wcntl32.c:
        // These undocumented messages are used by Excel 5.0

    private\mvdm\wow32\wgdi31.c:
        // InquireVisRgn is an undocumented Win 3.1 API. This code has been
        // suggested by ChuckWh. If this does not fix the s 2.0
        // problem, then ChuckWh would be providing us with an private entry
        // point.

    private\mvdm\wow32\wgfont.c:
        * This thunk implements the undocumented Win3.0 and Win3.1 API
        * GetCurLogFont (GDI.411). Symantec QA4.0 uses it.
        * To implement this undocumented API we will use the NT undocumented API


    private\ntos\w32\ntuser\kernel\mnpopup.c:
        // Set the GlobalPopupMenu variable so that EndMenu works for popupmenus so
        // that WinWart II people can continue to abuse undocumented functions.

    private\windows\shell\accesory\hypertrm\emu\minitel.c:
        // Guess what? Latent background color is always adopted for mosaics.
        // This is a major undocumented find...

    private\windows\shell\accesory\hypertrm\emu\minitelf.c:
        // Ah, the life of the undocumented. The documentation says
        // that this guys does not validate, colors, act as a delimiter
        // and fills with spaces. Wrong. It does validate the color.
        // As such its a delimiter. If...

     

  • 1.4, Аноним (5), 10:55, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Надеюсь сломают всю совместимость чтобы все старые версии пошли по-бороде.  И все перешли с нафталиновых ядер на новые.  
     
     
  • 2.7, макпыф (ok), 11:01, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    изменений в рантайме особых быть не должно
     
     
  • 3.11, asdsad (?), 11:12, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А при чем тут рантайм? Они постоянно свой API ломают (причем даже внутри версии), что постоянно вызывает проблемы с модулями вне ядра.
     
     
  • 4.13, макпыф (ok), 11:17, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    в сторонних модулях придется поправить инклюды (может потребоваться подключить то что подключалось раньше через какой нибудь sched.h)

    Собсно апи там вроде не ломали

     
     
  • 5.33, Аноним (-), 16:31, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А при чём тут апи?
     
  • 2.12, Онаним (?), 11:13, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так-то оно API не ломает.
    ABI может по известной вещи пойти, но это уже не так критично.
     
     
  • 3.34, . (?), 16:34, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Как не ломает? Набор #include - тоже часть api.
    Авторам 3d party модулей не привязанным исключительно к "linux-next" (нвидии или zol) работенка светит немалая. Полагаю, потраченное время будет несоизмеримо с копейками выигрыша от пересборки на аж 96 ядрах - но это кого надо выигрыш, он себе карты сам и сдает.

    А что в ядре полно г-нокода - так он и не денется никуда.

    (одни мегабайтные списки usb idшек намертво вбитые в код чего стоят - и нет, ты не можешь передать нестандартные параметром. Иди пересобирай ведро. Каждый раз как сасунь выпускает новый телефон.)

     
     
  • 4.54, Онаним (?), 10:09, 10/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, тогда тут немножко шире, чем ломает-не ломает, раз мы в дебри полезли.

    - Собранному софту не поплохеет, userspace API не ломается
    - В исходниках софта, завязанного на include хедеров ядра, возможно, потребуются правки
    - В исходниках сторонних модулей ядра, скорее всего, потребуются правки
    - Собранные сторонние модули ядра традиционно сломаются :), но не из-за конкретных изменений, а просто потому, что их всё равно под каждую конкретную версию ядра собирать надо

     
  • 2.15, Аноним (15), 11:34, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    На ядрах, начиная с 5.13, suspend-to-ram сломан. Я лучше на 5.11 посижу.
     
     
  • 3.18, Аноним (-), 11:46, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Об этом кроме тебя кто-нибудь знает?
     
  • 3.22, Аноним (22), 12:21, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А у меня он начиная с 5.1x исправлен.
     
  • 2.19, YetAnotherOnanym (ok), 12:09, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Надейся, надейся...
     

  • 1.6, макпыф (ok), 11:01, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > адаптацией для ядра 5.16-rc8

    кстати, а до этого под какое ядро было?

     
     
  • 2.8, Аноним (8), 11:06, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    5.16-rc7
     
  • 2.9, klm (??), 11:08, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    5.16-rc7
     

  • 1.23, Аноним (21), 12:22, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > При использовании Clang применение патчей позволило сократить время сборки на 88%
    > При полной пересборке ядра командой "make -j96 vmlinux время сборки сократилось с 337.788 до 179.773 секунд.

    кто кого изнасиловал? качество копипастного перевода прихрамывает

     
  • 1.26, Андрей (??), 13:24, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эмм, что-то не знаю, с одной стороны - круто, с другой стороны подозреваю, что во-первых - это усложнит дальнейшую разработку, т.к. ПМСМ - хочется видеть доступные библиотеки и возможности в начале заголовка, а не надеятся, что какой-нибудь Вася его подключил за тебя, плюс - вот 100% можно было либо кэширующим компилятором, либо инструментом предобработки обойтись, вместо того, чтобы ядро целиком патчить. Т.е. надеюсь не окажется, что вся эта работа - выстрел в ногу разработчикам от очередных фанатов утилиты time.
     
  • 1.29, Zenitur (ok), 13:54, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Инго Молнар (Ingo Molnar)

    Это который создал 12309?

     
     
  • 2.40, RNZ (ok), 17:39, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Выстави:
    vm.overcommit_memory = 2
    vm.overcommit_ratio = 200
    и перестань плакаться.

    P.S. Нет, 12309 создал Ben Gamari https://web.archive.org/web/20200206024633/https://bugzilla.kernel.org/show_bu

     
     
  • 3.48, Аноним (-), 22:31, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это тот анекдот - "подожди сейчас дискету доформатирую" но для Linux
     
     
  • 4.52, RNZ (ok), 04:27, 10/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > это тот анекдот - "подожди сейчас дискету доформатирую" но для Linux

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

     

  • 1.30, Аноним (30), 14:01, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    лучше б занялись оптимизацией работы, компилится ядро раз в несколько месяцев, и обычнона стороне производителя дистрибутива, а вот выполнение кода происходит каждую секунду. но это сложно, проще поиграть в хареке и солонку :) попутно дооптизимировав исходники в бинарное-vscode-only нечтно (зато быстро!)
     
     
  • 2.31, Анонимый аноним (?), 14:28, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Автору патча напиши чтобы он му*ак занялся наконец делом, а не вот этой ненужной для анонимусов оптимизацией
     
     
  • 3.42, Аноним (42), 18:53, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    его уже поперли с шедулера, он другую ненужную хрень сделать решил.
    А че - шапка все оплатит.
     

  • 1.35, Аноним (-), 16:35, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >При использовании Clang применение патчей позволило сократить время сборки на 88% или на 77%

    Не понимаю зачем заниматься компилятором Clang? Пусть это поделие корпорастов идёт к чёрту.

    Только, и только божественный GCC!!!!!!!

     
     
  • 2.41, макпыф (ok), 17:54, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Пусть это поделие корпорастов идёт к чёрту.

    Согласен, да только ядро на 80-90% пилится ими

     
  • 2.46, Аноним (46), 19:27, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да хоть для того чтобы gcc не скатывался в не пойми что, как это было лет 8 назад.
     
     
  • 3.51, Аноним (-), 23:49, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    очень надо были это все c++2k22 в гцц, кушатьнимагли
     

  • 1.36, Аноним (36), 17:07, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Когда уже под tcc пропатчат?
     
     
  • 2.49, kusb (?), 22:40, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Оно собиралось tcc.
     

  • 1.37, АнтиВаксер (?), 17:17, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ещё бы прокрутку в консоли починили.
     
  • 1.43, Аноним (43), 19:01, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше бы само ядро пропатчили. С каждым релизом всё более неповоротливое становится. То BFQ, то btrfs ломают, то симптомы 12309 всё ещё остаются... Никакие настройки не помогают. Торвальдс там что, вообще положил болт на разработку? А раньше же так хорошо работало, фору любой другой системе дал бы, а сейчас...
     
     
  • 2.45, Аноним (45), 19:21, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Bfq перманентно сломан с первых дней, это кем надо быть чтобы его юзать? Чтобы избавиться от 12309 всегда было достаточно его отключить (с тех пор, как на mq перевели дефолт, даже ядро настраивать на надо).
     

  • 1.47, Аноним (47), 21:10, 09/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    facepalm

    чувак не вкурсе про
    #pragma once

     
     
  • 2.50, Аноним (50), 22:56, 09/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Что ж ты строем не ходишь, раз такой умный?
     

  • 1.53, Аноним (53), 05:44, 10/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    j96 круто конечно, а на более доступных Core i5 какое время этот патч сэкономит?
     
     
  • 2.55, Аноним (42), 10:43, 10/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    кому ты интересен - когда IBM сказало пилить ?!
    у них на power тормозит.
     
  • 2.56, n00by (ok), 13:04, 10/01/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Посчитайте пропорцию от текущего времени соборки. В абсолютных цифрах на "слабых" процессорах экономия существеннее.
     

  • 1.58, InuYasha (??), 19:52, 11/01/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    -j96?? ребята на ЭПЫКах сидят, поди...

    PS: почистили ненужное инклюдное Г - молодцы. Я тоже так делал. Кучу лет назад. Вручную. А когда завезли многопоточность, проект стал компилиться за минуту вместо получаса )

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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