From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755442AbaFRUk4 (ORCPT ); Wed, 18 Jun 2014 16:40:56 -0400 Received: from zene.cmpxchg.org ([85.214.230.12]:37502 "EHLO zene.cmpxchg.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754949AbaFRUky (ORCPT ); Wed, 18 Jun 2014 16:40:54 -0400 From: Johannes Weiner 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 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> X-Mailer: git-send-email 2.0.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: 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(-) From mboxrd@z Thu Jan 1 00:00:00 1970 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> Return-path: DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cmpxchg.org; s=zene; h=Message-Id:Date:Subject:Cc:To:From; bh=okkUGE1pylq7n0W4v7EtAkrGYfaQp6GOj/9wFSi1iGE=; b=rxYv1iXfWujtzxqJ3JtIvOz5bOt62jEHX3oPzxGABt0WqVnh8nHS9rDfi58d7YRNe649Rd1HhTxaMDLPhaqFyvA6uej6Y3grRS+KY+OZjv82IljLyUVuzuefmAN17sz9/4w9pTs4XVJErKoBPzSObH3j9Id+/KTFtmBz3/+kKAQ=; Sender: owner-linux-mm@kvack.org List-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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