linux/arch/m32r
Eric Dumazet 2c8c56e15d net: introduce SO_INCOMING_CPU
Alternative to RPS/RFS is to use hardware support for multiple
queues.

Then split a set of million of sockets into worker threads, each
one using epoll() to manage events on its own socket pool.

Ideally, we want one thread per RX/TX queue/cpu, but we have no way to
know after accept() or connect() on which queue/cpu a socket is managed.

We normally use one cpu per RX queue (IRQ smp_affinity being properly
set), so remembering on socket structure which cpu delivered last packet
is enough to solve the problem.

After accept(), connect(), or even file descriptor passing around
processes, applications can use :

 int cpu;
 socklen_t len = sizeof(cpu);

 getsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu, &len);

And use this information to put the socket into the right silo
for optimal performance, as all networking stack should run
on the appropriate cpu, without need to send IPI (RPS/RFS).

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-11 13:00:06 -05:00
..
boot m32r: make memset() global for CONFIG_KERNEL_BZIP2=y 2012-07-17 16:21:30 -07:00
configs kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
include net: introduce SO_INCOMING_CPU 2014-11-11 13:00:06 -05:00
kernel m32r: remove deprecated IRQF_DISABLED 2014-10-09 22:25:46 -04:00
lib m32r: export delay loop symbols 2009-10-04 12:02:36 +09:00
mm arch: mm: pass userspace fault flag to generic fault handler 2013-09-12 15:38:01 -07:00
oprofile oprofile: more whitespace fixes 2008-10-15 20:55:51 +02:00
platforms Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
Kconfig Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
Kconfig.debug consolidate per-arch stack overflow debugging options 2013-07-04 11:25:39 -07:00
Makefile m32r: Use generic init_task 2012-05-05 13:00:23 +02:00