From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by kanga.kvack.org (Postfix) with ESMTP id 4840F6B0031 for ; Wed, 18 Jun 2014 16:40:54 -0400 (EDT) Received: by mail-wi0-f175.google.com with SMTP id r20so8311567wiv.14 for ; Wed, 18 Jun 2014 13:40:53 -0700 (PDT) Received: from zene.cmpxchg.org (zene.cmpxchg.org. [2a01:238:4224:fa00:ca1f:9ef3:caee:a2bd]) by mx.google.com with ESMTPS id ba6si4170902wib.17.2014.06.18.13.40.52 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 18 Jun 2014 13:40:53 -0700 (PDT) From: Johannes Weiner Subject: [patch 00/13] mm: memcontrol: naturalize charge lifetime v4 Date: Wed, 18 Jun 2014 16:40:32 -0400 Message-Id: <1403124045-24361-1-git-send-email-hannes@cmpxchg.org> Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: Michal Hocko , Hugh Dickins , Tejun Heo , Vladimir Davydov , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Hi, this is version 4 of the memcg charge naturalization series. Changes since v3 include: o reorder THP charges, __GFP_NORETRY, oom-disabled/NOFAIL patches (Michal) o remove explicit OOM behavior charge parameter (Michal) o add acks These patches rework memcg charge lifetime to integrate more naturally with the lifetime of user pages. This drastically simplifies the code and reduces charging and uncharging overhead. The most expensive part of charging and uncharging is the page_cgroup bit spinlock, which is removed entirely after this series. Here are the top-10 profile entries of a stress test that reads a 128G sparse file on a freshly booted box, without even a dedicated cgroup (i.e. executing in the root memcg). Before: 15.36% cat [kernel.kallsyms] [k] copy_user_generic_string 13.31% cat [kernel.kallsyms] [k] memset 11.48% cat [kernel.kallsyms] [k] do_mpage_readpage 4.23% cat [kernel.kallsyms] [k] get_page_from_freelist 2.38% cat [kernel.kallsyms] [k] put_page 2.32% cat [kernel.kallsyms] [k] __mem_cgroup_commit_charge 2.18% kswapd0 [kernel.kallsyms] [k] __mem_cgroup_uncharge_common 1.92% kswapd0 [kernel.kallsyms] [k] shrink_page_list 1.86% cat [kernel.kallsyms] [k] __radix_tree_lookup 1.62% cat [kernel.kallsyms] [k] __pagevec_lru_add_fn After: 15.67% cat [kernel.kallsyms] [k] copy_user_generic_string 13.48% cat [kernel.kallsyms] [k] memset 11.42% cat [kernel.kallsyms] [k] do_mpage_readpage 3.98% cat [kernel.kallsyms] [k] get_page_from_freelist 2.46% cat [kernel.kallsyms] [k] put_page 2.13% kswapd0 [kernel.kallsyms] [k] shrink_page_list 1.88% cat [kernel.kallsyms] [k] __radix_tree_lookup 1.67% cat [kernel.kallsyms] [k] __pagevec_lru_add_fn 1.39% kswapd0 [kernel.kallsyms] [k] free_pcppages_bulk 1.30% cat [kernel.kallsyms] [k] kfree As you can see, the memcg footprint has shrunk quite a bit. text data bss dec hex filename 37970 9892 400 48262 bc86 mm/memcontrol.o.old 35239 9892 400 45531 b1db mm/memcontrol.o Documentation/cgroups/memcg_test.txt | 160 +--- include/linux/memcontrol.h | 94 +-- include/linux/page_cgroup.h | 43 +- include/linux/swap.h | 15 +- kernel/events/uprobes.c | 1 + mm/filemap.c | 13 +- mm/huge_memory.c | 57 +- mm/memcontrol.c | 1455 ++++++++++++---------------------- mm/memory.c | 43 +- mm/migrate.c | 44 +- mm/rmap.c | 20 - mm/shmem.c | 32 +- mm/swap.c | 40 + mm/swap_state.c | 8 +- mm/swapfile.c | 21 +- mm/truncate.c | 9 - mm/vmscan.c | 12 +- mm/zswap.c | 2 +- 18 files changed, 719 insertions(+), 1350 deletions(-) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org