From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: linux-mm@kvack.org, Christoph Lameter <cl@linux.com>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
kvm <kvm@vger.kernel.org>
Subject: [PATCH 2/3] Refactor zone_reclaim
Date: Tue, 30 Nov 2010 15:45:55 +0530 [thread overview]
Message-ID: <20101130101520.17475.79978.stgit@localhost6.localdomain6> (raw)
In-Reply-To: <20101130101126.17475.18729.stgit@localhost6.localdomain6>
Refactor zone_reclaim, move reusable functionality outside
of zone_reclaim. Make zone_reclaim_unmapped_pages modular
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
---
mm/vmscan.c | 35 +++++++++++++++++++++++------------
1 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 325443a..0ac444f 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2719,6 +2719,27 @@ static long zone_pagecache_reclaimable(struct zone *zone)
}
/*
+ * Helper function to reclaim unmapped pages, we might add something
+ * similar to this for slab cache as well. Currently this function
+ * is shared with __zone_reclaim()
+ */
+static inline void
+zone_reclaim_unmapped_pages(struct zone *zone, struct scan_control *sc,
+ unsigned long nr_pages)
+{
+ int priority;
+ /*
+ * Free memory by calling shrink zone with increasing
+ * priorities until we have enough memory freed.
+ */
+ priority = ZONE_RECLAIM_PRIORITY;
+ do {
+ shrink_zone(priority, zone, sc);
+ priority--;
+ } while (priority >= 0 && sc->nr_reclaimed < nr_pages);
+}
+
+/*
* Try to free up some pages from this zone through reclaim.
*/
static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
@@ -2727,7 +2748,6 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
const unsigned long nr_pages = 1 << order;
struct task_struct *p = current;
struct reclaim_state reclaim_state;
- int priority;
struct scan_control sc = {
.may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE),
.may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP),
@@ -2751,17 +2771,8 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
reclaim_state.reclaimed_slab = 0;
p->reclaim_state = &reclaim_state;
- if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages) {
- /*
- * Free memory by calling shrink zone with increasing
- * priorities until we have enough memory freed.
- */
- priority = ZONE_RECLAIM_PRIORITY;
- do {
- shrink_zone(priority, zone, &sc);
- priority--;
- } while (priority >= 0 && sc.nr_reclaimed < nr_pages);
- }
+ if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages)
+ zone_reclaim_unmapped_pages(zone, &sc, nr_pages);
nr_slab_pages0 = zone_page_state(zone, NR_SLAB_RECLAIMABLE);
if (nr_slab_pages0 > zone->min_slab_pages) {
WARNING: multiple messages have this Message-ID (diff)
From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: linux-mm@kvack.org, Christoph Lameter <cl@linux.com>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
kvm <kvm@vger.kernel.org>
Subject: [PATCH 2/3] Refactor zone_reclaim
Date: Tue, 30 Nov 2010 15:45:55 +0530 [thread overview]
Message-ID: <20101130101520.17475.79978.stgit@localhost6.localdomain6> (raw)
In-Reply-To: <20101130101126.17475.18729.stgit@localhost6.localdomain6>
Refactor zone_reclaim, move reusable functionality outside
of zone_reclaim. Make zone_reclaim_unmapped_pages modular
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
---
mm/vmscan.c | 35 +++++++++++++++++++++++------------
1 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 325443a..0ac444f 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2719,6 +2719,27 @@ static long zone_pagecache_reclaimable(struct zone *zone)
}
/*
+ * Helper function to reclaim unmapped pages, we might add something
+ * similar to this for slab cache as well. Currently this function
+ * is shared with __zone_reclaim()
+ */
+static inline void
+zone_reclaim_unmapped_pages(struct zone *zone, struct scan_control *sc,
+ unsigned long nr_pages)
+{
+ int priority;
+ /*
+ * Free memory by calling shrink zone with increasing
+ * priorities until we have enough memory freed.
+ */
+ priority = ZONE_RECLAIM_PRIORITY;
+ do {
+ shrink_zone(priority, zone, sc);
+ priority--;
+ } while (priority >= 0 && sc->nr_reclaimed < nr_pages);
+}
+
+/*
* Try to free up some pages from this zone through reclaim.
*/
static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
@@ -2727,7 +2748,6 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
const unsigned long nr_pages = 1 << order;
struct task_struct *p = current;
struct reclaim_state reclaim_state;
- int priority;
struct scan_control sc = {
.may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE),
.may_unmap = !!(zone_reclaim_mode & RECLAIM_SWAP),
@@ -2751,17 +2771,8 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
reclaim_state.reclaimed_slab = 0;
p->reclaim_state = &reclaim_state;
- if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages) {
- /*
- * Free memory by calling shrink zone with increasing
- * priorities until we have enough memory freed.
- */
- priority = ZONE_RECLAIM_PRIORITY;
- do {
- shrink_zone(priority, zone, &sc);
- priority--;
- } while (priority >= 0 && sc.nr_reclaimed < nr_pages);
- }
+ if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages)
+ zone_reclaim_unmapped_pages(zone, &sc, nr_pages);
nr_slab_pages0 = zone_page_state(zone, NR_SLAB_RECLAIMABLE);
if (nr_slab_pages0 > zone->min_slab_pages) {
--
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/ .
Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-11-30 10:16 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-30 10:14 [PATCH 0/3] Series short description Balbir Singh
2010-11-30 10:14 ` Balbir Singh
2010-11-30 10:15 ` [PATCH 1/3] Move zone_reclaim() outside of CONFIG_NUMA Balbir Singh
2010-11-30 10:15 ` Balbir Singh
2010-11-30 19:18 ` Christoph Lameter
2010-11-30 19:18 ` Christoph Lameter
2010-11-30 22:23 ` Andrew Morton
2010-11-30 22:23 ` Andrew Morton
[not found] ` <20101201043408.GE2746@balbir.in.ibm.com>
2010-12-01 5:21 ` Balbir Singh
2010-12-01 5:21 ` Balbir Singh
2010-11-30 10:15 ` Balbir Singh [this message]
2010-11-30 10:15 ` [PATCH 2/3] Refactor zone_reclaim Balbir Singh
2010-11-30 19:19 ` Christoph Lameter
2010-11-30 19:19 ` Christoph Lameter
2010-12-01 1:23 ` KAMEZAWA Hiroyuki
2010-12-01 1:23 ` KAMEZAWA Hiroyuki
[not found] ` <20101201044634.GF2746@balbir.in.ibm.com>
2010-12-01 5:22 ` Balbir Singh
2010-12-01 5:22 ` Balbir Singh
2010-12-01 8:59 ` KAMEZAWA Hiroyuki
2010-12-01 8:59 ` KAMEZAWA Hiroyuki
2010-12-01 7:54 ` Minchan Kim
2010-12-01 7:54 ` Minchan Kim
2010-11-30 10:16 ` [PATCH 3/3] Provide control over unmapped pages Balbir Singh
2010-11-30 10:16 ` Balbir Singh
2010-11-30 19:21 ` Christoph Lameter
2010-11-30 19:21 ` Christoph Lameter
2010-11-30 22:25 ` Andrew Morton
2010-11-30 22:25 ` Andrew Morton
[not found] ` <20101201045421.GG2746@balbir.in.ibm.com>
2010-12-01 5:22 ` Balbir Singh
2010-12-01 5:22 ` Balbir Singh
2010-12-01 8:18 ` Minchan Kim
2010-12-01 8:18 ` Minchan Kim
2010-12-01 15:01 ` Christoph Lameter
2010-12-01 15:01 ` Christoph Lameter
2010-12-02 1:22 ` KOSAKI Motohiro
2010-12-02 1:22 ` KOSAKI Motohiro
2010-12-02 2:50 ` KAMEZAWA Hiroyuki
2010-12-02 2:50 ` KAMEZAWA Hiroyuki
2010-12-02 7:01 ` Balbir Singh
2010-12-02 7:01 ` Balbir Singh
2010-12-01 0:14 ` KOSAKI Motohiro
2010-12-01 0:14 ` KOSAKI Motohiro
[not found] ` <20101201051632.GH2746@balbir.in.ibm.com>
2010-12-01 5:22 ` Balbir Singh
2010-12-01 5:22 ` Balbir Singh
2010-12-01 1:32 ` KAMEZAWA Hiroyuki
2010-12-01 1:32 ` KAMEZAWA Hiroyuki
[not found] ` <20101201051816.GI2746@balbir.in.ibm.com>
2010-12-01 5:22 ` Balbir Singh
2010-12-01 5:22 ` Balbir Singh
2010-12-01 5:35 ` KAMEZAWA Hiroyuki
2010-12-01 5:35 ` KAMEZAWA Hiroyuki
2010-12-01 6:40 ` Balbir Singh
2010-12-01 6:40 ` Balbir Singh
2010-12-01 7:24 ` KAMEZAWA Hiroyuki
2010-12-01 7:24 ` KAMEZAWA Hiroyuki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101130101520.17475.79978.stgit@localhost6.localdomain6 \
--to=balbir@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.