Skip to content

Commit

Permalink
net: tcp_memcontrol: remove bogus hierarchy pressure propagation
Browse files Browse the repository at this point in the history
When a cgroup currently breaches its socket memory limit, it enters
memory pressure mode for itself and its *ancestors*.  This throttles
transmission in unrelated sibling and cousin subtrees that have nothing
to do with the breached limit.

On the contrary, breaching a limit should make that group and its
*children* enter memory pressure mode.  But this happens already, albeit
lazily: if an ancestor limit is breached, siblings will enter memory
pressure on their own once the next packet arrives for them.

So no additional hierarchy code is needed.  Remove the bogus stuff.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: David S. Miller <davem@davemloft.net>
Reviewed-by: Vladimir Davydov <vdavydov@virtuozzo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Johannes Weiner authored and Linus Torvalds committed Jan 15, 2016
1 parent 8c2c235 commit 931f3f4
Showing 1 changed file with 4 additions and 15 deletions.
19 changes: 4 additions & 15 deletions include/net/sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -1155,28 +1155,17 @@ static inline void sk_leave_memory_pressure(struct sock *sk)
if (*memory_pressure)
*memory_pressure = 0;

if (mem_cgroup_sockets_enabled && sk->sk_cgrp) {
struct cg_proto *cg_proto = sk->sk_cgrp;
struct proto *prot = sk->sk_prot;

for (; cg_proto; cg_proto = parent_cg_proto(prot, cg_proto))
cg_proto->memory_pressure = 0;
}

if (mem_cgroup_sockets_enabled && sk->sk_cgrp)
sk->sk_cgrp->memory_pressure = 0;
}

static inline void sk_enter_memory_pressure(struct sock *sk)
{
if (!sk->sk_prot->enter_memory_pressure)
return;

if (mem_cgroup_sockets_enabled && sk->sk_cgrp) {
struct cg_proto *cg_proto = sk->sk_cgrp;
struct proto *prot = sk->sk_prot;

for (; cg_proto; cg_proto = parent_cg_proto(prot, cg_proto))
cg_proto->memory_pressure = 1;
}
if (mem_cgroup_sockets_enabled && sk->sk_cgrp)
sk->sk_cgrp->memory_pressure = 1;

sk->sk_prot->enter_memory_pressure(sk);
}
Expand Down

0 comments on commit 931f3f4

Please sign in to comment.