The OpenNET Project / Index page

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



"В ядре Linux на 12% ускорена обработка входящих UDP-пакетов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В ядре Linux на 12% ускорена обработка входящих UDP-пакетов"  +/
Сообщение от opennews (??), 12-Фев-26, 16:15 
В кодовую базу, на основе которой формируется ядро Linux 7.0, принят набор изменений, при проведении стресс-тестирования в 100-гигабитной сети  позволивших  повысить производительность обработки входящих  UDP-пакетов на 12%. Оптимизация реализована путём ручного инлайнинга 2 функций. Отмечается, что функция timecounter_cyc2time() может вызываться на каждый входящий пакет, поскольку современные протоколы требуют учёта времени поступления пакета. Из-за этого на нагруженном сервере функция timecounter_cyc2time() может вызываться более 100 млн раз в секунду...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64783

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 12-Фев-26, 16:15   +/
> такие как FDO (Feedback Directed Optimization), LTO (Link Time Optimization) и PGO (Profile Guided Optimization)

А разве PGO и FDO это не одно и то же?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #49

2. Сообщение от Аноним (2), 12-Фев-26, 16:17   –7 +/
WireGuard станет ещё быстрее!

>при проведении стресс-тестирования в 100-гигабитной сети

Ой, мимо. В реальном тырнетике не станет.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #41

3. Сообщение от kravich (ok), 12-Фев-26, 16:19   +13 +/
Как приятно читать такие новости в наши темные времена десктопного софта на базе веб-технологий и нормализации практики вайбкодинга...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8

4. Сообщение от Rev (ok), 12-Фев-26, 16:23   –2 +/
То есть до сих пор обработка была ЗАМЕДЛЕНА на 12%?

А в Си нет директивы инлайнинга?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6, #29

6. Сообщение от Совершенно другой аноним (?), 12-Фев-26, 16:33   +3 +/
> А в Си нет директивы инлайнинга?

для соответствующих функций она и была установлена.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #14, #18, #26

7. Сообщение от Аноним (7), 12-Фев-26, 16:34   +/
Жаль только, что тспу очень агрятся на юдп. Но, что-нибудь обязательно будет придумано!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #25, #34

8. Сообщение от Аноним (8), 12-Фев-26, 16:34   +3 +/
Тебе сейчас напишут, что им ИИшечка такие места сразу пишет правильно... а вот диды...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

9. Сообщение от 12yoexpert (ok), 12-Фев-26, 16:38   +/
у меня не агрятся, чяднт?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #11

10. Сообщение от timur.davletshin (ok), 12-Фев-26, 16:39   +/
К пользовательским реализациям никакого отношения не имеет. Там ни разу ничего не упиралось в производительность timecounter_cyc2time().
Ответить | Правка | Наверх | Cообщить модератору

11. Сообщение от Аноним (7), 12-Фев-26, 16:40   +1 +/
Повезло с провайдером. Видимо ещё активное оборудование не шибко внедрили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #13

12. Сообщение от Аноним (14), 12-Фев-26, 16:41   –5 +/
Миф "о невероятно оптимизированном дидовом коде" развеян.
В который раз))

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #17, #38

13. Сообщение от 12yoexpert (ok), 12-Фев-26, 16:43   +/
а модем мой пассивный, по-твоему? и как ты собрался внедрять какое-то оборудование ко мне в мобилку? у меня два провайдера, ни один мне ни о каких внедрениях не сообщал
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #15, #16

14. Сообщение от Аноним (14), 12-Фев-26, 16:45   –3 +/
Только сейчас.
До этого код был замедлен на 12%

Возможно программистам-предшественникам было просто класть на производительность.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #22, #23

15. Сообщение от Аноним (7), 12-Фев-26, 16:47   +/
Я думал, что там у них есть два класса оборудования и стоит оно до Ваших модемов. Ну да ладно. Главное, что Вам нравится!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

16. Сообщение от Аноним (16), 12-Фев-26, 16:48   +/
> и как ты собрался внедрять какое-то оборудование ко мне в мобилку?

Легко. Одним законом о предустановке российского ПО. Если тспу понадобятся сразу на уровне каждого смартфона.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #19

17. Сообщение от Аноним (17), 12-Фев-26, 16:52   +2 +/
а причем тут дидовый код, у вас ведь компиляхтор "луДше" код генерит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

18. Сообщение от Вася Пупкин (?), 12-Фев-26, 16:53   –5 +/
почему это нельзя делать везде по умолчанию? как это сделано в расте
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #20

19. Сообщение от 12yoexpert (ok), 12-Фев-26, 16:55   +/
какой идиот будет даже заикаться о таком законе, и кому вообще нужны эти ваши тспу? это же цензура. засмеют и выгонят из правительства, если не посадят за шпионаж или измену. да и российское ПО никогда качеством не отличалось. есть хоть какие-то причины делать то, что написано у тебя в комментарии?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #35, #42

20. Сообщение от Рулона Боева (?), 12-Фев-26, 17:00   +5 +/
Потому что инлайнинг функций — это всегда компромисс между экономией инструкций на ее вызов (условно убираем push/call/pop) и итоговым размером объектных файлов, так как тело функции будет дублироваться в каждой функции, которая вызывает встраиваемую.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #24

21. Сообщение от Аноним (21), 12-Фев-26, 17:03   +/
А ещё в linux 6.12.x ip6gre и ip6tnl сломали
Ответить | Правка | Наверх | Cообщить модератору

22. Сообщение от Я (??), 12-Фев-26, 17:05   +6 +/
Может, у них просто 100Гбит не было?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #44, #47

23. Сообщение от localhostadmin (ok), 12-Фев-26, 17:11   +1 +/
> современные протоколы требуют учёта времени поступления пакета

Тогда это не имело смысла

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

24. Сообщение от ананим.orig (?), 12-Фев-26, 17:25   –1 +/
А если в коде будет ошибка, то она размножится соответствующее количество раз.
И пока её обнаружат фронт атак тоже увеличится.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #33

25. Сообщение от Аноним (25), 12-Фев-26, 17:34   +1 +/
> что-нибудь обязательно будет придумано!

Пройдемте.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #36

26. Сообщение от Rev (ok), 12-Фев-26, 17:36   +/
Не понял. Сейчас установлена? Но пишут же, что вручную заинлайнили. Я так это понял, что код функции перенесли туда, где он используется, избавившись от вызова функции.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #28

27. Сообщение от Cyber100 (ok), 12-Фев-26, 17:43   –1 +/
не могу сосчитать без логарифмической линейки и штангенциркуля == если у них на 100гб канале все увеличилось аж на 12%, значит, на 1 гб канале - это будет 1200% или наоборот 0,12%?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

28. Сообщение от Совершенно другой аноним (?), 12-Фев-26, 17:47   +/
> Не понял. Сейчас установлена? Но пишут же, что вручную заинлайнили. Я так
> это понял, что код функции перенесли туда, где он используется, избавившись
> от вызова функции.

посмотрите patch, ссылка на него есть в тексте новости. Если по-простому, то функции перенесли из файла *.c в файл *.h и дописали static inline.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

29. Сообщение от ___ (??), 12-Фев-26, 17:48    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #32

30. Сообщение от 12yoexpert (ok), 12-Фев-26, 17:59   +2 +/
попробуй счёты
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

31. Сообщение от Аноним (31), 12-Фев-26, 18:00   +/
> В данной ситуации автоматические применяемые компилятором оптимизации, такие как FDO (Feedback Directed Optimization), LTO (Link Time Optimization) и PGO (Profile Guided Optimization), не смогли обнаружить горячий сегмент кода и проигнорировали его,

А Боромир.. А компилятор Rust'a сам бы всё заинлайинл!

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39

32. Сообщение от Аноним (47), 12-Фев-26, 18:03   +/
https://speed.cloudflare.com
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

33. Сообщение от анон (?), 12-Фев-26, 18:11   +/
> А если в коде будет ошибка, то она размножится соответствующее количество раз.
> И пока её обнаружат фронт атак тоже увеличится.

Чего-чего? Какой фронт, какое "размножится"? 🤦
Инлайн, это
замена "вызов_кода_с_ошибкой" на "копия кода с ошибкай", т.е. что совой о пень, что пнем о сову ...  

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

34. Сообщение от Аноним (34), 12-Фев-26, 18:24   +/
да, хорошая новость, буст в  12% при обработке udp пакетов на тспу это прям приятно!

надо потесть, действительно ли есть прироста и если есть, то можно сказать что запилили новую фичу, для работы которой нужно ядро 7.0 и выше, и получить за это премию!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

35. Сообщение от Аноним (7), 12-Фев-26, 18:44   +/
Забористая у Вас!
Ну если по теме, есть к примеру множество нужных сервисов, которые спроектированы и хорошо работают именно с дейтаграммами. Котурн например. Но если Вам все нравится, значит Вам наверное это просто неинтересно.
Завидую!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

36. Сообщение от Аноним (7), 12-Фев-26, 18:46    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

37. Сообщение от Аноним83 (?), 12-Фев-26, 19:06   +/
> Отмечается, что функция timecounter_cyc2time() может вызываться на каждый входящий пакет, поскольку современные протоколы требуют учёта времени поступления пакета.

Кто не понял, поясню: они накостылили http/2 / quick, где им пришлось в юзерспейсе имплементировать cognestion control алгоритмы, для работы которых потребовалось включать опцию для записи времени получения пакета.
SO_TIMESTAMP / SO_TS_CLOCK / SO_TIMESTAMPNS.

До этого данная опция почти никогда не применялась при работе с UDP ибо нафиг не надо знать время когда пакет пришёл. В худьшем случае в event обработчике чтения в самом начале получали время и считали что все пакеты прочитанные за этот цикл приёма из сокета были получены в это время.

Иными словами:
1. Для обычных приложений от этой оптимизации толку 0.
2. Сами себе придумали проблему с quick (юзерспейс TCP) - сами преодолевают.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #43

38. Сообщение от Аноним83 (?), 12-Фев-26, 19:07   +1 +/
Дидам никогда не нужно было знать точное время получения UDP пакета, всё как то без этого прекрасно работало.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #46

39. Сообщение от Фамилия (?), 12-Фев-26, 19:15   +/
То есть, вы хотите сказать, что этот магический компилятор магически видит горячие сегменты кода и магически понимает, что тем людям, которые это дело компилируют надо именно заинлаинить этот кусок кода в угоду производительности на каком-то конкретном тесте? Просто вау. А почему же тогда никто и нигде про эти магические способности не говорит? Это же такая классная реклама! Компилятор, который генерит безопасный код, ещё и знает заранее всё то, что вы и сами ещё пока даже не знаете!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #51

41. Сообщение от Bnm (?), 12-Фев-26, 19:35   +/
Наверно улучшится, если сервер на линуксе будет отдавать сайты быстрее
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

42. Сообщение от Аноним (42), 12-Фев-26, 19:39   +/
https://www.consultant.ru/legalnews/29310/

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #45

43. Сообщение от Аноним (42), 12-Фев-26, 19:42   +/
UDP это супер полезно. Это аудио и видео звонки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #50

44. Сообщение от Аноним (44), 12-Фев-26, 19:43   +/
Стогигабитные сети в бэкбоне уже дай бог лет десять или около того используются.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

45. Сообщение от Аноним (47), 12-Фев-26, 19:47   +/
https://share.google/aimode/vb1x6z1Rkxjx7WZlh
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

46. Сообщение от Аноним (44), 12-Фев-26, 19:56   +/
Оно и понятно почему. Все данные умещались на СЕРВЕР-1 с репликацией на СЕРВЕР-2, а оттуда -- на ленту, но только если сегодня робот работает (а не обслуживается вендором). Можно и время не знать, и вручную админить, и даже выучить наизусть оба айпишника (и специально выбрать "красивые", чтобы легче было запоминать). С тех пор многое поменялось, без синхронизации времени и точных временных меток событий современный энтерпрайз не работает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #48

47. Сообщение от Аноним (47), 12-Фев-26, 19:58   +/
https://servernews.ru/1136630
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

48. Сообщение от Аноним83 (?), 12-Фев-26, 20:04   +/
Всё прекрасно работает, и работало.
Не смотрел код NTP клиентов/серверов, но думаю и там разница между временем получения пакета ядром и временем когда приложение его вычитало из сокета не такое значительное.

И уж точно не стоял вопрос того что опция сохранения времени ядром частоиспользуемая/заметная на общем фоне, просто никто столько не пулял, даже на тех слабых железках.

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

Ниже я расписал откуда эта дичь вылезла.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

49. Сообщение от Аноним (49), 12-Фев-26, 20:05   +/
> В ядре Linux на 12% ускорена обработка входящих UDP-пакетов

А в винде внедрен копилот, который за меня решает что и как мне делать в моей (как мне казалось) системе. Недавно перешел на линукс, месяцок привыкания и уже назад не тянет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

50. Сообщение от Аноним83 (?), 12-Фев-26, 20:05   +/
Только там временные метки не нужны.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

51. Сообщение от Аноним (51), 12-Фев-26, 20:19   +/
Ну, справедливости и логики ради, можно придумать и ситуации, когда компилятор и мог бы что-то понять и без магии. Например. Есть функция с передаваемыми параметрами. Небольшая по кол-ву генерируемых команд. И вызывается в программе в трех-четырех местах и два из них - внутри циклов. Почему бы не заинлайнить код не вызывая функцию? Никакой магии, да и наверное даже спец. флажков компилятора, для такого не надо. Вызов небольшой функции внутри цикла - очень вероятный кандидат на горячий сегмент кода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #52

52. Сообщение от Фамилия (?), 12-Фев-26, 20:39   +/
Компилятор да, делает оценки и решает надо ли заинлайнить какую-то функцию или нет (при условии присутствия нужных флагов).

Но инлайн-инлайну рознь. Где-то инлайн может дать преимущество, а где-то наоборот. Где-то кэши уместили в себе все заинлаиненные вещи, а где-то не уместили и будет происходить деградация производительности.

Компилятор сам по себе не может в общем случае понять, является ли данный сегмент кода горячим.
Если бы такое было возможным, то JVM тогда могла бы все горячие функции откомпилировать заранее и стать быстрее Си. Но этого не происходит, а происходит обратное - JVM сначала запускает код и смотрит, а что становится горячим. Что стало, то и оптимизирует.

Здесь получилась та же ситуация. Люди запустили и обратили свой взор на конкретное место. Увидев горячее место, провели оптимизацию и получили выигрышь. Это обычный рабочий момент, не надо в нём искать какой-то негатив по отношению того, что авторы используют устаревшие технологии, и что надо просто перейти на новые технологии и всё само станет быстрым и шелковистым.

Вот, например: https://benchmarksgame-team.pages.debian.net/benchmarksgame/... . Никто с первого раза не написал программу так, чтобы она работала на каком-то классе тестов очень быстро.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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