Re: [PATCH 4/5] netdev: implement infrastructure for threadable napi irq

From: Eric Dumazet
Date: Wed Jun 15 2016 - 10:17:45 EST


On Wed, Jun 15, 2016 at 6:42 AM, Paolo Abeni <pabeni@xxxxxxxxxx> wrote:
> This commit adds the infrastructure needed for threadable
> rx interrupt. A reference to the irq thread is used to
> mark the threaded irq mode.
> In threaded mode the poll loop is invoked directly from
> __napi_schedule().
> napi drivers which want to support threadable irq interrupts
> must provide an irq mode change handler which actually set
> napi->thread and register it after requesting the irq.
>
> Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
> Signed-off-by: Hannes Frederic Sowa <hannes@xxxxxxxxxxxxxxxxxxx>
> ---
> include/linux/netdevice.h | 4 ++++
> net/core/dev.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 63 insertions(+)
>

I really appreciate the effort, but as I already said this is not going to work.

Many NIC have 2 NAPI contexts per queue, one for TX, one for RX.

Relying on CFS to switch from the two 'threads' you need in the one
vCPU case will add latencies that your 'pure throughput UDP flood' is
not able to detect.

I was waiting a fix from Andy Lutomirski to be merged before sending
my ksoftirqd fix, which will work and wont bring kernel bloat.