diff options
author | Wei Wang <weiwan@google.com> | 2021-09-29 10:25:11 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-09-30 13:36:46 +0100 |
commit | 2bb2f5fb21b0486ff69b7b4a1fe03a760527d133 (patch) | |
tree | 1e1b3e094fd135390997b383ccdd38a85eecbfe0 /net/ipv4 | |
parent | 4075a6a047bbb4c67a0670f4ad981cfc5ffb5c76 (diff) | |
download | linux-stable-2bb2f5fb21b0486ff69b7b4a1fe03a760527d133.tar.gz linux-stable-2bb2f5fb21b0486ff69b7b4a1fe03a760527d133.tar.bz2 linux-stable-2bb2f5fb21b0486ff69b7b4a1fe03a760527d133.zip |
net: add new socket option SO_RESERVE_MEM
This socket option provides a mechanism for users to reserve a certain
amount of memory for the socket to use. When this option is set, kernel
charges the user specified amount of memory to memcg, as well as
sk_forward_alloc. This amount of memory is not reclaimable and is
available in sk_forward_alloc for this socket.
With this socket option set, the networking stack spends less cycles
doing forward alloc and reclaim, which should lead to better system
performance, with the cost of an amount of pre-allocated and
unreclaimable memory, even under memory pressure.
Note:
This socket option is only available when memory cgroup is enabled and we
require this reserved memory to be charged to the user's memcg. We hope
this could avoid mis-behaving users to abused this feature to reserve a
large amount on certain sockets and cause unfairness for others.
Signed-off-by: Wei Wang <weiwan@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/af_inet.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 40558033f857..2fc6074583a4 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -135,7 +135,7 @@ void inet_sock_destruct(struct sock *sk) __skb_queue_purge(&sk->sk_receive_queue); __skb_queue_purge(&sk->sk_error_queue); - sk_mem_reclaim(sk); + sk_mem_reclaim_final(sk); if (sk->sk_type == SOCK_STREAM && sk->sk_state != TCP_CLOSE) { pr_err("Attempt to release TCP socket in state %d %p\n", |