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
..
auxvec.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
bitsperlong.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
errno-base.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
errno.h
errno.h: remove "NFS" from descriptions in comments
2013-11-13 12:09:12 +09:00
fcntl.h
locks: rename file-private locks to "open file description locks"
2014-04-22 08:23:58 -04:00
int-l64.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
int-ll64.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
ioctl.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
ioctls.h
tty, ioctls -- Add new ioctl definitions for tty flags fetching
2012-10-25 12:07:18 -07:00
ipcbuf.h
uapi, asm-generic: Use __kernel_ulong_t in uapi struct ipc64_perm
2014-01-20 14:44:35 -08:00
Kbuild
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
Kbuild.asm
kvm_para.h
UAPI: Put a comment into uapi/asm-generic/kvm_para.h and use it from arches
2012-10-17 12:32:07 +01:00
mman-common.h
madvise: correct the comment of MADV_DODUMP flag
2014-04-07 16:35:58 -07:00
mman.h
mm: support more pagesizes for MAP_HUGETLB/SHM_HUGETLB
2012-12-11 17:22:25 -08:00
msgbuf.h
uapi: Use __kernel_ulong_t in struct msqid64_ds
2014-01-20 14:45:01 -08:00
param.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
poll.h
net: rename low latency sockets functions to busy poll
2013-07-08 19:25:45 -07:00
posix_types.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
resource.h
asm-generic: remove _STK_LIM_MAX
2014-05-15 00:32:09 +01:00
sembuf.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
setup.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
shmbuf.h
uapi: Use __kernel_ulong_t in shmid64_ds/shminfo64/shm_info
2014-01-20 14:45:25 -08:00
shmparam.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
siginfo.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
signal-defs.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
signal.h
consolidate kernel-side struct sigaction declarations
2013-02-03 15:09:22 -05:00
socket.h
net: introduce SO_INCOMING_CPU
2014-11-11 13:00:06 -05:00
sockios.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
stat.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
statfs.h
x86, x32: Use __kernel_long_t for __statfs_word
2013-12-20 16:06:21 -08:00
swab.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
termbits.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
termios.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
types.h
asm/types.h: Remove include/asm-generic/int-l64.h
2014-01-23 16:36:53 -08:00
ucontext.h
UAPI: (Scripted) Disintegrate include/asm-generic
2012-10-04 18:20:15 +01:00
unistd.h
bpf: enable bpf syscall on x64 and i386
2014-09-26 15:05:14 -04:00