Unix sockets can consume a significant amount of system memory, hence they should be accounted to kmemcg.
Since unix socket buffers are always allocated from process context, all we need to do to charge them to kmemcg is set __GFP_ACCOUNT in sock->sk_allocation mask. https://jira.sw.ru/browse/PSBM-34562 Signed-off-by: Vladimir Davydov <vdavy...@virtuozzo.com> --- net/unix/af_unix.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 0e629f509cd0..1da93a400145 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -761,6 +761,7 @@ static struct sock *unix_create1(struct net *net, struct socket *sock) lockdep_set_class(&sk->sk_receive_queue.lock, &af_unix_sk_receive_queue_lock_key); + sk->sk_allocation = GFP_KERNEL_ACCOUNT; sk->sk_write_space = unix_write_space; sk->sk_max_ack_backlog = net->unx.sysctl_max_dgram_qlen; sk->sk_destruct = unix_sock_destructor; -- 2.1.4 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel