[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