On Sun, May 05, 2019 at 10:04:21AM -0700, David Miller wrote: > From: Al Viro <v...@zeniv.linux.org.uk> > Date: Thu, 2 May 2019 17:32:23 +0100 > > > it appears that we might take freeing the socket itself to the > > RCU-delayed part, along with socket->wq. And doing that has > > an interesting benefit - the only reason to do two separate > > allocation disappears. > > I'm pretty sure we looked into RCU freeing the socket in the > past but ended up not doing so. > > I think it had to do with the latency in releasing sock related > objects. > > However, I might be confusing "struct socket" with "struct sock"
Erm... the only object with changed release time is the memory occupied by struct sock_alloc. Currently: final iput of socket schedule RCU-delayed kfree() of socket->wq kfree() of socket With this change: final iput of socket schedule RCU-delayed kfree() of coallocated socket and socket->wq So it would have to be a workload where tons of sockets are created and torn down, where RCU-delayed freeing of socket_wq is an inevitable evil, but freeing struct socket_alloc itself must be done immediately, to reduce the memory pressure. Or am I misreading you?