SOL_SOCKET/SO_CPUINT socket option

Sepherosa Ziehau sepherosa at gmail.com
Sat Dec 27 00:43:15 PST 2014


Hi all,

SOL_SOCKET/SO_CPUHINT socket option (currently read-only).  This
option gives you the hint about to which CPU the userland process
could be bound to (-1 means no hint).  It's mainly for TCP/UDP server
userland application.  For TCP listen socket, it only makes sense for
TCP listen socket w/ SO_REUSEPORT.

- TCP listen socket w/ SO_REUSEPORT, this socket option should be
extracted after listen(2).
- TCP socket for connect(2), this socket option should be extracted
after connect(2) is successful.
- UDP socket for bind(2), this socket option should be extracted after bind(2).
- UDP socket for connect(2), this socket option should be called after
connect(2).

For TCP listen socket w/ SO_REUSEPORT, binding process to the hinted
cpu avoids >1/3 IPIs between CPUs (24000ipis/s -> 15000ipis/s) during
a accept(2) heavy test (well, I am still hunting the source of the
rest of the IPIs).
For UDP bind socket w/ SO_REUSEPORT, binding process to the hinted cpu
completely avoids IPIs between CPUs.

Hope it will be useful for you.

Best Regards,
sephe

-- 
Tomorrow Will Never Die


More information about the Users mailing list