![Glauber Costa](/assets/img/avatar_default.png)
This patch uses the "tcp.limit_in_bytes" field of the kmem_cgroup to effectively control the amount of kernel memory pinned by a cgroup. This value is ignored in the root cgroup, and in all others, caps the value specified by the admin in the net namespaces' view of tcp_sysctl_mem. If namespaces are being used, the admin is allowed to set a value bigger than cgroup's maximum, the same way it is allowed to set pretty much unlimited values in a real box. Signed-off-by: Glauber Costa <glommer@parallels.com> Reviewed-by: Hiroyouki Kamezawa <kamezawa.hiroyu@jp.fujitsu.com> CC: David S. Miller <davem@davemloft.net> CC: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
20 lines
693 B
C
20 lines
693 B
C
#ifndef _TCP_MEMCG_H
|
|
#define _TCP_MEMCG_H
|
|
|
|
struct tcp_memcontrol {
|
|
struct cg_proto cg_proto;
|
|
/* per-cgroup tcp memory pressure knobs */
|
|
struct res_counter tcp_memory_allocated;
|
|
struct percpu_counter tcp_sockets_allocated;
|
|
/* those two are read-mostly, leave them at the end */
|
|
long tcp_prot_mem[3];
|
|
int tcp_memory_pressure;
|
|
};
|
|
|
|
struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg);
|
|
int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss);
|
|
void tcp_destroy_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss);
|
|
unsigned long long tcp_max_memory(const struct mem_cgroup *memcg);
|
|
void tcp_prot_mem(struct mem_cgroup *memcg, long val, int idx);
|
|
#endif /* _TCP_MEMCG_H */
|