From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>,
Rik van Riel <riel@redhat.com>,
Dave Hansen <dave.hansen@intel.com>,
Namhyung Kim <namhyung@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Minchan Kim <minchan@kernel.org>
Subject: [PATCH v4 3/6] mm: Remove shrink_page
Date: Thu, 9 May 2013 08:38:59 +0900 [thread overview]
Message-ID: <1368056342-30836-4-git-send-email-minchan@kernel.org> (raw)
In-Reply-To: <1368056342-30836-1-git-send-email-minchan@kernel.org>
By previous patch, shrink_page_list can handle pages from
multiple zone so let's remove shrink_page.
Signed-off-by: Minchan Kim <minchan@kernel.org>
---
mm/vmscan.c | 47 ++++++++++++++---------------------------------
1 file changed, 14 insertions(+), 33 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index a1fb526..0d4df03 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -924,6 +924,13 @@ free_it:
* appear not as the counts should be low
*/
list_add(&page->lru, &free_pages);
+ /*
+ * If pagelist are from multiple zones, we should decrease
+ * NR_ISOLATED_ANON + x on freed pages in here.
+ */
+ if (!zone)
+ dec_zone_page_state(page, NR_ISOLATED_ANON +
+ page_is_file_cache(page));
continue;
cull_mlocked:
@@ -994,28 +1001,6 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone,
}
#ifdef CONFIG_PROCESS_RECLAIM
-static unsigned long shrink_page(struct page *page,
- struct zone *zone,
- struct scan_control *sc,
- enum ttu_flags ttu_flags,
- unsigned long *ret_nr_dirty,
- unsigned long *ret_nr_writeback,
- bool force_reclaim,
- struct list_head *ret_pages)
-{
- int reclaimed;
- LIST_HEAD(page_list);
- list_add(&page->lru, &page_list);
-
- reclaimed = shrink_page_list(&page_list, zone, sc, ttu_flags,
- ret_nr_dirty, ret_nr_writeback,
- force_reclaim);
- if (!reclaimed)
- list_splice(&page_list, ret_pages);
-
- return reclaimed;
-}
-
unsigned long reclaim_pages_from_list(struct list_head *page_list)
{
struct scan_control sc = {
@@ -1025,23 +1010,19 @@ unsigned long reclaim_pages_from_list(struct list_head *page_list)
.may_swap = 1,
};
- LIST_HEAD(ret_pages);
+ unsigned long nr_reclaimed;
struct page *page;
unsigned long dummy1, dummy2;
- unsigned long nr_reclaimed = 0;
-
- while (!list_empty(page_list)) {
- page = lru_to_page(page_list);
- list_del(&page->lru);
+ list_for_each_entry(page, page_list, lru)
ClearPageActive(page);
- nr_reclaimed += shrink_page(page, page_zone(page), &sc,
+
+ nr_reclaimed = shrink_page_list(page_list, NULL, &sc,
TTU_UNMAP|TTU_IGNORE_ACCESS,
- &dummy1, &dummy2, true, &ret_pages);
- }
+ &dummy1, &dummy2, true);
- while (!list_empty(&ret_pages)) {
- page = lru_to_page(&ret_pages);
+ while (!list_empty(page_list)) {
+ page = lru_to_page(page_list);
list_del(&page->lru);
dec_zone_page_state(page, NR_ISOLATED_ANON +
page_is_file_cache(page));
--
1.8.2.1
--
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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Minchan Kim <minchan@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>,
Rik van Riel <riel@redhat.com>,
Dave Hansen <dave.hansen@intel.com>,
Namhyung Kim <namhyung@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Minchan Kim <minchan@kernel.org>
Subject: [PATCH v4 3/6] mm: Remove shrink_page
Date: Thu, 9 May 2013 08:38:59 +0900 [thread overview]
Message-ID: <1368056342-30836-4-git-send-email-minchan@kernel.org> (raw)
In-Reply-To: <1368056342-30836-1-git-send-email-minchan@kernel.org>
By previous patch, shrink_page_list can handle pages from
multiple zone so let's remove shrink_page.
Signed-off-by: Minchan Kim <minchan@kernel.org>
---
mm/vmscan.c | 47 ++++++++++++++---------------------------------
1 file changed, 14 insertions(+), 33 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index a1fb526..0d4df03 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -924,6 +924,13 @@ free_it:
* appear not as the counts should be low
*/
list_add(&page->lru, &free_pages);
+ /*
+ * If pagelist are from multiple zones, we should decrease
+ * NR_ISOLATED_ANON + x on freed pages in here.
+ */
+ if (!zone)
+ dec_zone_page_state(page, NR_ISOLATED_ANON +
+ page_is_file_cache(page));
continue;
cull_mlocked:
@@ -994,28 +1001,6 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone,
}
#ifdef CONFIG_PROCESS_RECLAIM
-static unsigned long shrink_page(struct page *page,
- struct zone *zone,
- struct scan_control *sc,
- enum ttu_flags ttu_flags,
- unsigned long *ret_nr_dirty,
- unsigned long *ret_nr_writeback,
- bool force_reclaim,
- struct list_head *ret_pages)
-{
- int reclaimed;
- LIST_HEAD(page_list);
- list_add(&page->lru, &page_list);
-
- reclaimed = shrink_page_list(&page_list, zone, sc, ttu_flags,
- ret_nr_dirty, ret_nr_writeback,
- force_reclaim);
- if (!reclaimed)
- list_splice(&page_list, ret_pages);
-
- return reclaimed;
-}
-
unsigned long reclaim_pages_from_list(struct list_head *page_list)
{
struct scan_control sc = {
@@ -1025,23 +1010,19 @@ unsigned long reclaim_pages_from_list(struct list_head *page_list)
.may_swap = 1,
};
- LIST_HEAD(ret_pages);
+ unsigned long nr_reclaimed;
struct page *page;
unsigned long dummy1, dummy2;
- unsigned long nr_reclaimed = 0;
-
- while (!list_empty(page_list)) {
- page = lru_to_page(page_list);
- list_del(&page->lru);
+ list_for_each_entry(page, page_list, lru)
ClearPageActive(page);
- nr_reclaimed += shrink_page(page, page_zone(page), &sc,
+
+ nr_reclaimed = shrink_page_list(page_list, NULL, &sc,
TTU_UNMAP|TTU_IGNORE_ACCESS,
- &dummy1, &dummy2, true, &ret_pages);
- }
+ &dummy1, &dummy2, true);
- while (!list_empty(&ret_pages)) {
- page = lru_to_page(&ret_pages);
+ while (!list_empty(page_list)) {
+ page = lru_to_page(page_list);
list_del(&page->lru);
dec_zone_page_state(page, NR_ISOLATED_ANON +
page_is_file_cache(page));
--
1.8.2.1
next prev parent reply other threads:[~2013-05-08 23:39 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 23:38 [PATCH v4 0/6] Per process reclaim Minchan Kim
2013-05-08 23:38 ` Minchan Kim
2013-05-08 23:38 ` [PATCH v4 1/6] mm: " Minchan Kim
2013-05-08 23:38 ` Minchan Kim
2013-05-08 23:38 ` [PATCH v4 2/6] mm: make shrink_page_list with pages work from multiple zones Minchan Kim
2013-05-08 23:38 ` Minchan Kim
2013-05-08 23:38 ` Minchan Kim [this message]
2013-05-08 23:38 ` [PATCH v4 3/6] mm: Remove shrink_page Minchan Kim
2013-05-08 23:39 ` [PATCH v4 4/6] mm: Enhance per process reclaim to consider shared pages Minchan Kim
2013-05-08 23:39 ` Minchan Kim
2013-05-08 23:39 ` [PATCH v4 5/6] mm: Support address range reclaim Minchan Kim
2013-05-08 23:39 ` Minchan Kim
2013-05-08 23:39 ` [PATCH v4 6/6] add documentation about reclaim knob on proc.txt Minchan Kim
2013-05-08 23:39 ` Minchan Kim
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=1368056342-30836-4-git-send-email-minchan@kernel.org \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mtk.manpages@gmail.com \
--cc=namhyung@kernel.org \
--cc=riel@redhat.com \
/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.