From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932482AbcHPCvZ (ORCPT ); Mon, 15 Aug 2016 22:51:25 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:33138 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753032AbcHPCvY (ORCPT ); Mon, 15 Aug 2016 22:51:24 -0400 From: js1304@gmail.com X-Google-Original-From: iamjoonsoo.kim@lge.com To: Andrew Morton Cc: Vlastimil Babka , Minchan Kim , Michal Hocko , Sergey Senozhatsky , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Joonsoo Kim Subject: [PATCH v2 0/6] Reduce memory waste by page extension user Date: Tue, 16 Aug 2016 11:51:13 +0900 Message-Id: <1471315879-32294-1-git-send-email-iamjoonsoo.kim@lge.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joonsoo Kim v2: Fix rebase mistake (per Vlastimil) Rename some variable/function to prevent confusion (per Vlastimil) Fix header dependency (per Sergey) This patchset tries to reduce memory waste by page extension user. First case is architecture supported debug_pagealloc. It doesn't requires additional memory if guard page isn't used. 8 bytes per page will be saved in this case. Second case is related to page owner feature. Until now, if page_ext users want to use it's own fields on page_ext, fields should be defined in struct page_ext by hard-coding. It has a following problem. struct page_ext { #ifdef CONFIG_A int a; #endif #ifdef CONFIG_B int b; #endif }; Assume that kernel is built with both CONFIG_A and CONFIG_B. Even if we enable feature A and doesn't enable feature B at runtime, each entry of struct page_ext takes two int rather than one int. It's undesirable waste so this patch tries to reduce it. By this patchset, we can save 20 bytes per page dedicated for page owner feature in some configurations. Thanks. Joonsoo Kim (6): mm/debug_pagealloc: clean-up guard page handling code mm/debug_pagealloc: don't allocate page_ext if we don't use guard page mm/page_owner: move page_owner specific function to page_owner.c mm/page_ext: rename offset to index mm/page_ext: support extra space allocation by page_ext user mm/page_owner: don't define fields on struct page_ext by hard-coding include/linux/page_ext.h | 8 +-- include/linux/page_owner.h | 2 + mm/page_alloc.c | 44 +++++++------ mm/page_ext.c | 45 +++++++++---- mm/page_owner.c | 156 ++++++++++++++++++++++++++++++++++++++------- mm/vmstat.c | 79 ----------------------- 6 files changed, 196 insertions(+), 138 deletions(-) -- 1.9.1