Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752080AbaKYGw1 (ORCPT ); Tue, 25 Nov 2014 01:52:27 -0500 Received: from LGEMRELSE6Q.lge.com ([156.147.1.121]:53452 "EHLO lgemrelse6q.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751061AbaKYGwZ (ORCPT ); Tue, 25 Nov 2014 01:52:25 -0500 X-Original-SENDERIP: 10.186.119.199 X-Original-MAILFROM: chanho.min@lge.com From: Chanho Min To: Andrew Morton , "Kirill A. Shutemov" , Hugh Dickins , Michal Hocko Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, HyoJun Im , Gunho Lee , Wonhong Kwon , Chanho Min Subject: [PATCH] mm: add parameter to disable faultaround Date: Tue, 25 Nov 2014 15:51:58 +0900 Message-Id: <1416898318-17409-1-git-send-email-chanho.min@lge.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The faultaround improves the file read performance, whereas pages which can be dropped by drop_caches are reduced. On some systems, The amount of freeable pages under memory pressure is more important than read performance. So It prefers to be selectable. This patch adds a new kernel cmdline parameter "nofaultaround" for situations where users want to disable faultaround. Signed-off-by: Chanho Min --- mm/memory.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mm/memory.c b/mm/memory.c index 4879b42..c36a96f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2888,6 +2888,14 @@ static int __init fault_around_debugfs(void) late_initcall(fault_around_debugfs); #endif +static bool enable_fault_around = true; +static int __init disable_fault_around(char *s) +{ + enable_fault_around = false; + return 1; +} +__setup("nofaultaround", disable_fault_around); + /* * do_fault_around() tries to map few pages around the fault address. The hope * is that the pages will be needed soon and this will lower the number of @@ -2965,7 +2973,8 @@ static int do_read_fault(struct mm_struct *mm, struct vm_area_struct *vma, * if page by the offset is not ready to be mapped (cold cache or * something). */ - if (vma->vm_ops->map_pages && !(flags & FAULT_FLAG_NONLINEAR) && + if (enable_fault_around && vma->vm_ops->map_pages && + !(flags & FAULT_FLAG_NONLINEAR) && fault_around_pages() > 1) { pte = pte_offset_map_lock(mm, pmd, address, &ptl); do_fault_around(vma, address, pte, pgoff, flags); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/