
Привет ! ну на твой вопрос я ответил - это первая половина моего письма :-) а потом обьяснил, откуда ваши вопросы растут. А так как я в депресняке почти перманентном сейчас, то сорри, если кого обидел. Если кратко: я считаю что ЕСЛИ специально в описаних чипов-карт не написано что оно имеет "параельную обработку", то мульти-ядерные процессоры (главные) не могут получать разные данные от одной такой карты ОДНОВРЕМЕННО.Т.е. "многозадачность" и "многопоточность" это явление виртуальное а не "железное". Потому сколько ядер не используй а "узкое горло" будет именно в "одной карте". Именно поэтому народ н аРаспбери пай делает "кластеры", т.е. куча карт и каждая работает со своим эзернетом который на ее плате. Это так, "для вашей информированности". Wednesday, May 7, 2025, 6:58:04 PM, Volodymyr Litovka via UANOG uanog@uanog.one you wrote: VLvU> Саша, ось для цього й існують розсилки та форуми - щоб питати VLvU> те, чого не знаєш або не розумієш й отримувати відповіді й VLvU> допомогу, а не лекції про те, які всі кругом лохи крім Дартан'яна :) VLvU> Я щось не пам'ятаю, щоб на твої питання щодо домашніх раутерів VLvU> хоч хтось сказав хоч щось подібне тому, що пишеш ти у своїх відповідях. VLvU> On 5/7/25 15:06, Alexander V Soroka wrote:
Привет !
Ну вы странные люди :-) Вообще-то это аксиома, что "для interrupts мережевої карти не можна виставити декілька процесорів для обробки". Это вообще-то "АРХИТЕКТУРА железа" - в нее надо смотреть, но там по-любому если на карте один процессор и одна шина - то странно от нее хотеть многозадачности :-) Многозадачность ядер "Главного процессора" (вашего с Линуксом) должна подозревать многозадачность железа самой карты и "многопоточность" (а не имитацию) по связи - линиям между картой и Главным Процессором.
У вас такие вопросы возникают потому, что вы "не от железа" шли к Программированию.А современное ООП и "процедурное с классами" полностью убили ПОНИМАНИЕ "как оно на самом деле внизу работает". Так что неудивительно...
Зато таких как я "с железа вверх" программистов теперь никто на работу не возьмет, боя Jawa & Piton не знаю :-) и всякие "С-реакт" тоже...
Tuesday, May 6, 2025, 6:56:03 PM, Volodymyr Litovka via UANOG uanog@uanog.one you wrote: VLvU> Саме для interrupts мережевої карти не можна виставити декілька VLvU> процесорів для обробки. Чи це характеристика мережевої карти чи ядра - ХЗ
VLvU> Але трішки обійти цю ситуацію вдалось збільшенням кількості VLvU> черг: "ethtool -L eno1p0 combined 24" створила 24 черги, які VLvU> кожна сіла на свій interrupt на свій процесор.
VLvU> On 5/6/25 13:18, Volodymyr Litovka wrote:
On 5/6/25 12:46, Andrey Blochintsev wrote:
Ось є документація - https://docs.kernel.org/networking/scaling.html >> - в якій є розділ RSS IRQ Configuration, де кажуть шо або irqbalance, >> або manual adjust відповідно до >> https://docs.kernel.org/core-api/irq/irq-affinity.html
Ок, для тесту я пішов в manul adjust й зробив відповідні >>> smp_affinity (застопав irqbalance, звісно) - тут апаратні черги NIC >>> чіпляються до різних IRQ, відповідно маска встановлена так, щоб >>> розкидати це IRQ по 8 корам:
53 :: 00000000,00000000,0000ff00 :: 8-15 54 :: 00000000,00000000,00ff0000 :: 16-23 55 :: 00000000,00000000,ff000000 :: 24-31 56 :: 00000000,000000ff,00000000 :: 32-39 57 :: 00000000,0000ff00,00000000 :: 40-47 58 :: 00000000,00ff0000,00000000 :: 48-55 59 :: 00000000,ff000000,00000000 :: 56-63 60 :: 000000ff,00000000,00000000 :: 64-71
але дивлюсь на значення лічильників в /proc/interrupts й бачу що пох >>> - шо з irqbalance, шо з маска в smp_affinity - приростає по кожному >>> IRQ тільки на одній корі. Трафіку в цілому до біса (200к+ pps) - >>> гадаю розкидає є шо.
А что в >> /proc/irq/{5[3-9],60}/{effective_affinity,effective_affinity,effective_affinity_list} >> ? Гм.... такі не спрацювало -
# for n in $(grep eno1 /proc/interrupts |awk '{print $1}' | tr -d > ":"); do echo "$n :: $(cat /proc/irq/$n/smp_affinity) :: $(cat > /proc/irq/$n/smp_affinity_list)"; done [ ... ] 93 :: 00000000,00000000,000000ff :: 0-7
# cat > /proc/irq/93/{effective_affinity,effective_affinity,effective_affinity_list} 00000000,00000000,00000080 00000000,00000000,00000080 7
доки я буду курити ту доку, є ідеї - чому?
дякую
https://www.kernel.org/doc/html/v6.13/core-api/genericirq.html
|effective_affinity|
The effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of *affinity*.
-- > Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Best regards, Alexander V Soroka http://www.svr.ua/ AS106-RIPE mailto:alex@euro.net.ua