LINUX.ORG.RU

Вопрос по сетевой подсистеме Linux


0

0

Просветите, пожалуйста, господа.
Тут услышал мнение, что в многопроцессорной системе сетевая подсистема
ядра использует только один процессор. И что есть патчи для ядер, которые
позволяют внутриядерные сетевые операции распределять на несколько
процессоров.
Это правда или человек просто гонит?
Если это правда, что за патчи и какие у них url?
anonymous

ложь и провокация

линукс отлично работает с многопроцессорными системам

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

Я знаю, что Linux вообще отлично работает с многопроцессорными
системами. В вопросе говорится о СЕТЕВОЙ ПОДСИСТЕМЕ ЯДРА,
т.е. внутренней части ядра, занимающейся сетью. Эта часть
использует все процессоры или только один?
И можно ли вообще как-то отследить, сколько процессоров используют
внутренние задачи ядра?

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

Часть задач реализуется в системных вызовах(в контексте вызывающей нити), часть в нитях ядра(в их контексте), часть в контексте прерывания, еще есть корректные, но arbitrary контексты.

Распределение этих задач в целом зависит от того, где выполняются нити процессов или нити ядра(может быть привязка к процессору), и привязки аппаратных прерываний к процессорам(/proc/irq/.../smp_affinity).

Если нет специальных привязок, то в той или иной степени сетевые задачи распределяются по всем процессорам.

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

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

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

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

>>Распределение этих задач в целом зависит от того, где выполняются нити >>процессов или нити ядра(может быть привязка к процессору), и привязки >>аппаратных прерываний к процессорам(/proc/irq/.../smp_affinity).

У меня в /proc/irq/... во всех smp_affinity стоит ffffffff.
Что это означает?

И если рассматривать схему роутера с firewall-iptables, shaping-ом и NAT-ом:
Идут транзитные соединения, записи которых есть в ip_conntrack таблице.
Перебросом пакетов этих соединений между интефесами будет заниматься
один процессор, или все понемногу? И как это вообще можно отследить на
linux-роутере (какие процы что обслуживают)?

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

В догонку:
и дайте, пож., какие-нибудь ссылки на литературу по этой теме (если есть).

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

насчет афинити: в винде афинити - маска на каких процах можно выполнять задачю. я думаю что ffffffff в /proc/irq/... - означает что на любом проце происходит обработка прерываний.

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

>насчет афинити: в винде афинити - маска на каких процах можно выполнять
> задачю. я думаю что ffffffff в /proc/irq/... - означает что на любом
>проце происходит обработка прерываний.

Верно.

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