The commit is pushed to "branch-rh7-3.10.0-123.1.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-123.1.2.vz7.5.10 ------> commit f82248c72ab367c1bf37844a5457e8255237e9b6 Author: Pavel Emelyanov <xe...@parallels.com> Date: Fri Jun 5 23:56:05 2015 +0400
netlink: Make all in-cg memory be kmem accounted So, this one is tricky. Right now most (all but one place) of the memory allocations in netlink code happen in process context and are done via kmalloc/slub. Thus they are auto-accounted into kmem. The single exceptional place is in netlink_alloc_large_skb where big sending packets are allocated with vmalloc. The good news about it is that the only use case for it right now seem to be in newest netfilter user space code that tries to load HUGE netfilter tables into kernel via netlink API. Since this is very likely not to case for our containers, we can just disable this newest (appeared in 3.10 with c05cdb1b86) feature for everyone but host. One more pain here is in mapped sockets. It's also relatively new and pages that are kernel, but mapped into process VM are out of track. This is like memory that is vmsplice-d into pipe and then unmapped. It's also gets unaccounted, but occupies place. Both issues worth revisiting. https://jira.sw.ru/browse/PSBM-33584 Signed-off-by: Pavel Emelyanov <xe...@parallels.com> --- net/netlink/af_netlink.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 94d635f..734a68a 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1561,7 +1561,13 @@ static struct sk_buff *netlink_alloc_large_skb(unsigned int size, struct sk_buff *skb; void *data; - if (size <= NLMSG_GOODSIZE || broadcast) + if (size <= NLMSG_GOODSIZE || broadcast || + /* + * Once we have vmalloc_kmem() that would account + * allocated pages into memcg, this check can be + * removed. + */ + !ve_is_super(get_exec_env())) return alloc_skb(size, GFP_KERNEL); size = SKB_DATA_ALIGN(size) + _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel