LINUX.ORG.RU

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

вопрос немного странный :)

net_rx_action() - оно и ЕСТЬ прерывание почти. т.е,
это обработчик NET_RX_SOFTIRQ "уровня" softirq.

но вызвать net_rx_action() слегка проблематично:
static void net_rx_action(struct softirq_action *h)
^^^^^^

idle ★★★★★ ()

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

ведь net_rx_action выполняется в контексте softirqd, каковой является просто скромным kernel thread, и никто не гарантирует, что он будет выполнятся каждый квант. А мне очень важно минимизировать как задержки пакетов в input queue (в output queue решается реализацией Qdisc) так и потери оных

anonymous ()

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

ведь net_rx_action выполняется в контексте softirqd, каковой является просто скромным kernel thread, и никто не гарантирует, что он будет выполнятся каждый квант. А мне очень важно минимизировать как задержки пакетов в input queue (в output queue решается реализацией Qdisc) так и потери оных

System.map никто не отменял :)

anonymous ()

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

> softirqd, каковой является просто скромным kernel thread

нет, не так. softirqd работает _только_ в случае "переполнения",
чтобы избежать process context starvation.

> System.map никто не отменял :)

ну, это уже некошерно по-определению.

в любом случае net_rx_action() самому вызывать плохо из
любого контекста, т.к поломается serialized wrt itself
гарантия, а запретить прерывания перед вызовом этой функции
вы не можете.

кроме того, есть NAPI/poll которая лучше решит ваши проблемы
(если я их правильно понял).

idle ★★★★★ ()

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

проблема в том, что если net_rx_action вызывается редко, то при малом размере входной очереди при большой интенсивности пакетов будут потери,при большом - и потери и задержки (ибо net_rx_action выполняется не больше 1 jiffies и успевает забрать за это время около 260 - 300 пакетов из входной очереди)=> мне нужно каким-то фигом вызывать его как можно чаще

anonymous ()

Re: кошерно ли вызывать net_rx_action из контекста прерывания ?

> проблема в том, что если net_rx_action вызывается редко,

ну а почему она будет вызываться редко?

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

как раз проблема в том, что она может вызываться
слишком _часто_ при большой интенсивности пакетов.

> ибо net_rx_action выполняется не больше 1 jiffies

да если у вас не заканчивается после 1 тика, то у 
вас уже серьезные проблемы! не говоря уже о том,
что в этом случае она немедленно будет вызвана при
первой возможности и без вашего участия, вы на код
под softnet_break: посмотрите.

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