[Devel] [PATCH rh7 5/7] af_unix: charge buffers to kmemcg

Vladimir Davydov vdavydov at virtuozzo.com
Mon May 30 07:23:21 PDT 2016


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 <vdavydov at 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



More information about the Devel mailing list