* [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction
@ 2010-05-06 15:08 Mel Gorman
2010-05-06 15:33 ` Rik van Riel
2010-05-07 0:08 ` KAMEZAWA Hiroyuki
0 siblings, 2 replies; 4+ messages in thread
From: Mel Gorman @ 2010-05-06 15:08 UTC (permalink / raw)
To: Andrew Morton
Cc: Andrea Arcangeli, Christoph Lameter, Adam Litke, Avi Kivity,
David Rientjes, Minchan Kim, KAMEZAWA Hiroyuki, KOSAKI Motohiro,
Rik van Riel, linux-kernel, linux-mm
Migration normally requires a call to migrate_prep() as a preparation
step. This schedules work on all CPUs for pagevecs to be drained. This
makes sense for move_pages and memory hot-remove but is unnecessary
for memory compaction.
To avoid queueing work on multiple CPUs, this patch introduces
migrate_prep_local() which drains just local pagevecs.
This patch can be either merged with mmcompaction-memory-compaction-core.patch
or placed immediately after it to clarify why migrate_prep_local() was
introduced.
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
---
include/linux/migrate.h | 2 ++
mm/compaction.c | 2 +-
mm/migrate.c | 11 ++++++++++-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 05d2292..6dec3ef 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -19,6 +19,7 @@ extern int fail_migrate_page(struct address_space *,
struct page *, struct page *);
extern int migrate_prep(void);
+extern int migrate_prep_local(void);
extern int migrate_vmas(struct mm_struct *mm,
const nodemask_t *from, const nodemask_t *to,
unsigned long flags);
@@ -32,6 +33,7 @@ static inline int migrate_pages(struct list_head *l, new_page_t x,
unsigned long private, int offlining) { return -ENOSYS; }
static inline int migrate_prep(void) { return -ENOSYS; }
+static inline int migrate_prep_local(void) { return -ENOSYS; }
static inline int migrate_vmas(struct mm_struct *mm,
const nodemask_t *from, const nodemask_t *to,
diff --git a/mm/compaction.c b/mm/compaction.c
index bd13560..94cce51 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -383,7 +383,7 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)
cc->free_pfn = cc->migrate_pfn + zone->spanned_pages;
cc->free_pfn &= ~(pageblock_nr_pages-1);
- migrate_prep();
+ migrate_prep_local();
while ((ret = compact_finished(zone, cc)) == COMPACT_CONTINUE) {
unsigned long nr_migrate, nr_remaining;
diff --git a/mm/migrate.c b/mm/migrate.c
index 053fd39..d99ec15 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -40,7 +40,8 @@
/*
* migrate_prep() needs to be called before we start compiling a list of pages
- * to be migrated using isolate_lru_page().
+ * to be migrated using isolate_lru_page(). If scheduling work on other CPUs is
+ * undesirable, use migrate_prep_local()
*/
int migrate_prep(void)
{
@@ -55,6 +56,14 @@ int migrate_prep(void)
return 0;
}
+/* Do the necessary work of migrate_prep but not if it involves other CPUs */
+int migrate_prep_local(void)
+{
+ lru_add_drain();
+
+ return 0;
+}
+
/*
* Add isolated pages on the list back to the LRU under page lock
* to avoid leaking evictable pages back onto unevictable list.
--
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>
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction
2010-05-06 15:08 [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction Mel Gorman
@ 2010-05-06 15:33 ` Rik van Riel
2010-05-07 0:08 ` KAMEZAWA Hiroyuki
1 sibling, 0 replies; 4+ messages in thread
From: Rik van Riel @ 2010-05-06 15:33 UTC (permalink / raw)
To: Mel Gorman
Cc: Andrew Morton, Andrea Arcangeli, Christoph Lameter, Adam Litke,
Avi Kivity, David Rientjes, Minchan Kim, KAMEZAWA Hiroyuki,
KOSAKI Motohiro, linux-kernel, linux-mm
On 05/06/2010 11:08 AM, Mel Gorman wrote:
> Migration normally requires a call to migrate_prep() as a preparation
> step. This schedules work on all CPUs for pagevecs to be drained. This
> makes sense for move_pages and memory hot-remove but is unnecessary
> for memory compaction.
>
> To avoid queueing work on multiple CPUs, this patch introduces
> migrate_prep_local() which drains just local pagevecs.
>
> This patch can be either merged with mmcompaction-memory-compaction-core.patch
> or placed immediately after it to clarify why migrate_prep_local() was
> introduced.
>
> Signed-off-by: Mel Gorman<mel@csn.ul.ie>
Reviewed-by: Rik van Riel <riel@redhat.com>
--
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>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction
2010-05-06 15:08 [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction Mel Gorman
2010-05-06 15:33 ` Rik van Riel
@ 2010-05-07 0:08 ` KAMEZAWA Hiroyuki
2010-05-10 16:48 ` Christoph Lameter
1 sibling, 1 reply; 4+ messages in thread
From: KAMEZAWA Hiroyuki @ 2010-05-07 0:08 UTC (permalink / raw)
To: Mel Gorman
Cc: Andrew Morton, Andrea Arcangeli, Christoph Lameter, Adam Litke,
Avi Kivity, David Rientjes, Minchan Kim, KOSAKI Motohiro,
Rik van Riel, linux-kernel, linux-mm
On Thu, 6 May 2010 16:08:09 +0100
Mel Gorman <mel@csn.ul.ie> wrote:
> Migration normally requires a call to migrate_prep() as a preparation
> step. This schedules work on all CPUs for pagevecs to be drained. This
> makes sense for move_pages and memory hot-remove but is unnecessary
> for memory compaction.
>
> To avoid queueing work on multiple CPUs, this patch introduces
> migrate_prep_local() which drains just local pagevecs.
>
> This patch can be either merged with mmcompaction-memory-compaction-core.patch
> or placed immediately after it to clarify why migrate_prep_local() was
> introduced.
>
> Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
--
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>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction
2010-05-07 0:08 ` KAMEZAWA Hiroyuki
@ 2010-05-10 16:48 ` Christoph Lameter
0 siblings, 0 replies; 4+ messages in thread
From: Christoph Lameter @ 2010-05-10 16:48 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki
Cc: Mel Gorman, Andrew Morton, Andrea Arcangeli, Adam Litke,
Avi Kivity, David Rientjes, Minchan Kim, KOSAKI Motohiro,
Rik van Riel, linux-kernel, linux-mm
Reviewed-by: Christoph Lameter <cl@linux-foundation.org>
--
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>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-05-10 16:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-06 15:08 [PATCH] mm,compaction: Do not schedule work on other CPUs for compaction Mel Gorman
2010-05-06 15:33 ` Rik van Riel
2010-05-07 0:08 ` KAMEZAWA Hiroyuki
2010-05-10 16:48 ` Christoph Lameter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).