+ mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Subject: + mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch added to -mm tree
To: raghavendra.kt@xxxxxxxxxxxxxxxxxx,fengguang.wu@xxxxxxxxx,jack@xxxxxxx
From: akpm@xxxxxxxxxxxxxxxxxxxx
Date: Thu, 06 Feb 2014 14:53:17 -0800


The patch titled
     Subject: mm/readahead.c: fix readahead fail for no local memory and limit readahead pages
has been added to the -mm tree.  Its filename is
     mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Raghavendra K T <raghavendra.kt@xxxxxxxxxxxxxxxxxx>
Subject: mm/readahead.c: fix readahead fail for no local memory and limit readahead pages

max_sane_readahead() returns zero on the cpu having no local memory node. 
Fix that by returning a sanitized number of pages viz., minimum of
(requested pages, 4k)

Result:
fadvise experiment with FADV_WILLNEED on a x240 machine with 1GB testfile
32GB* 4G RAM  numa machine ( 12 iterations) yielded

Kernel     Avg      Stddev
base      7.2963    1.10 %
patched   7.2972    1.18 %

Signed-off-by: Raghavendra K T <raghavendra.kt@xxxxxxxxxxxxxxxxxx>
Reviewed-by: Jan Kara <jack@xxxxxxx>
Cc: Wu Fengguang <fengguang.wu@xxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 mm/readahead.c |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff -puN mm/readahead.c~mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages mm/readahead.c
--- a/mm/readahead.c~mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages
+++ a/mm/readahead.c
@@ -233,14 +233,32 @@ int force_page_cache_readahead(struct ad
 	return 0;
 }
 
+#define MAX_REMOTE_READAHEAD   4096UL
 /*
  * Given a desired number of PAGE_CACHE_SIZE readahead pages, return a
  * sensible upper limit.
  */
 unsigned long max_sane_readahead(unsigned long nr)
 {
-	return min(nr, (node_page_state(numa_node_id(), NR_INACTIVE_FILE)
-		+ node_page_state(numa_node_id(), NR_FREE_PAGES)) / 2);
+	unsigned long local_free_page;
+	int nid;
+
+	nid = numa_node_id();
+	if (node_present_pages(nid)) {
+		/*
+		 * We sanitize readahead size depending on free memory in
+		 * the local node.
+		 */
+		local_free_page = node_page_state(nid, NR_INACTIVE_FILE)
+				 + node_page_state(nid, NR_FREE_PAGES);
+		return min(nr, local_free_page / 2);
+	}
+	/*
+	 * Readahead onto remote memory is better than no readahead when local
+	 * numa node does not have memory. We limit the readahead to 4k
+	 * pages though to avoid trashing page cache.
+	 */
+	return min(nr, MAX_REMOTE_READAHEAD);
 }
 
 /*
_

Patches currently in -mm which might be from raghavendra.kt@xxxxxxxxxxxxxxxxxx are

mm-readaheadc-fix-readahead-fail-for-no-local-memory-and-limit-readahead-pages.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux