From: akpm@linux-foundation.org (Andrew Morton)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/9] mm: MIGRATE_CMA migration type added
Date: Fri, 14 Oct 2011 16:38:11 -0700 [thread overview]
Message-ID: <20111014163811.8d410590.akpm@linux-foundation.org> (raw)
In-Reply-To: <1317909290-29832-5-git-send-email-m.szyprowski@samsung.com>
On Thu, 06 Oct 2011 15:54:44 +0200
Marek Szyprowski <m.szyprowski@samsung.com> wrote:
> From: Michal Nazarewicz <m.nazarewicz@samsung.com>
>
> The MIGRATE_CMA migration type has two main characteristics:
> (i) only movable pages can be allocated from MIGRATE_CMA
> pageblocks and (ii) page allocator will never change migration
> type of MIGRATE_CMA pageblocks.
>
> This guarantees that page in a MIGRATE_CMA page block can
> always be migrated somewhere else (unless there's no memory left
> in the system).
>
> It is designed to be used with Contiguous Memory Allocator
> (CMA) for allocating big chunks (eg. 10MiB) of physically
> contiguous memory. Once driver requests contiguous memory,
> CMA will migrate pages from MIGRATE_CMA pageblocks.
>
> To minimise number of migrations, MIGRATE_CMA migration type
> is the last type tried when page allocator falls back to other
> migration types then requested.
>
>
> ...
>
> +#ifdef CONFIG_CMA_MIGRATE_TYPE
> +# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA)
> +#else
> +# define is_migrate_cma(migratetype) false
> +#endif
Implement in C, please.
>
> ...
>
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -115,6 +115,16 @@ static bool suitable_migration_target(struct page *page)
> if (migratetype == MIGRATE_ISOLATE || migratetype == MIGRATE_RESERVE)
> return false;
>
> + /* Keep MIGRATE_CMA alone as well. */
> + /*
> + * XXX Revisit. We currently cannot let compaction touch CMA
> + * pages since compaction insists on changing their migration
> + * type to MIGRATE_MOVABLE (see split_free_page() called from
> + * isolate_freepages_block() above).
> + */
Talk to us about this.
How serious is this shortcoming in practice? What would a fix look
like? Is anyone working on an implementation, or planning to do so?
> + if (is_migrate_cma(migratetype))
> + return false;
> +
> /* If the page is a large free page, then allow migration */
> if (PageBuddy(page) && page_order(page) >= pageblock_order)
> return true;
>
> ...
>
> +void __init init_cma_reserved_pageblock(struct page *page)
> +{
> + struct page *p = page;
> + unsigned i = pageblock_nr_pages;
> +
> + prefetchw(p);
> + do {
> + if (--i)
> + prefetchw(p + 1);
> + __ClearPageReserved(p);
> + set_page_count(p, 0);
> + } while (++p, i);
> +
> + set_page_refcounted(page);
> + set_pageblock_migratetype(page, MIGRATE_CMA);
> + __free_pages(page, pageblock_order);
> + totalram_pages += pageblock_nr_pages;
> +}
I wonder if the prefetches do any good. it doesn't seem very important
in an __init function.
> +#endif
>
>
> ...
>
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-mm@kvack.org,
linaro-mm-sig@lists.linaro.org,
Michal Nazarewicz <mina86@mina86.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Russell King <linux@arm.linux.org.uk>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Ankita Garg <ankita@in.ibm.com>,
Daniel Walker <dwalker@codeaurora.org>,
Mel Gorman <mel@csn.ul.ie>, Arnd Bergmann <arnd@arndb.de>,
Jesse Barker <jesse.barker@linaro.org>,
Jonathan Corbet <corbet@lwn.net>,
Shariq Hasnain <shariq.hasnain@linaro.org>,
Chunsang Jeong <chunsang.jeong@linaro.org>,
Dave Hansen <dave@linux.vnet.ibm.com>, Mel Gorman <mel@csn.ul.ie>
Subject: Re: [PATCH 4/9] mm: MIGRATE_CMA migration type added
Date: Fri, 14 Oct 2011 16:38:11 -0700 [thread overview]
Message-ID: <20111014163811.8d410590.akpm@linux-foundation.org> (raw)
In-Reply-To: <1317909290-29832-5-git-send-email-m.szyprowski@samsung.com>
On Thu, 06 Oct 2011 15:54:44 +0200
Marek Szyprowski <m.szyprowski@samsung.com> wrote:
> From: Michal Nazarewicz <m.nazarewicz@samsung.com>
>
> The MIGRATE_CMA migration type has two main characteristics:
> (i) only movable pages can be allocated from MIGRATE_CMA
> pageblocks and (ii) page allocator will never change migration
> type of MIGRATE_CMA pageblocks.
>
> This guarantees that page in a MIGRATE_CMA page block can
> always be migrated somewhere else (unless there's no memory left
> in the system).
>
> It is designed to be used with Contiguous Memory Allocator
> (CMA) for allocating big chunks (eg. 10MiB) of physically
> contiguous memory. Once driver requests contiguous memory,
> CMA will migrate pages from MIGRATE_CMA pageblocks.
>
> To minimise number of migrations, MIGRATE_CMA migration type
> is the last type tried when page allocator falls back to other
> migration types then requested.
>
>
> ...
>
> +#ifdef CONFIG_CMA_MIGRATE_TYPE
> +# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA)
> +#else
> +# define is_migrate_cma(migratetype) false
> +#endif
Implement in C, please.
>
> ...
>
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -115,6 +115,16 @@ static bool suitable_migration_target(struct page *page)
> if (migratetype == MIGRATE_ISOLATE || migratetype == MIGRATE_RESERVE)
> return false;
>
> + /* Keep MIGRATE_CMA alone as well. */
> + /*
> + * XXX Revisit. We currently cannot let compaction touch CMA
> + * pages since compaction insists on changing their migration
> + * type to MIGRATE_MOVABLE (see split_free_page() called from
> + * isolate_freepages_block() above).
> + */
Talk to us about this.
How serious is this shortcoming in practice? What would a fix look
like? Is anyone working on an implementation, or planning to do so?
> + if (is_migrate_cma(migratetype))
> + return false;
> +
> /* If the page is a large free page, then allow migration */
> if (PageBuddy(page) && page_order(page) >= pageblock_order)
> return true;
>
> ...
>
> +void __init init_cma_reserved_pageblock(struct page *page)
> +{
> + struct page *p = page;
> + unsigned i = pageblock_nr_pages;
> +
> + prefetchw(p);
> + do {
> + if (--i)
> + prefetchw(p + 1);
> + __ClearPageReserved(p);
> + set_page_count(p, 0);
> + } while (++p, i);
> +
> + set_page_refcounted(page);
> + set_pageblock_migratetype(page, MIGRATE_CMA);
> + __free_pages(page, pageblock_order);
> + totalram_pages += pageblock_nr_pages;
> +}
I wonder if the prefetches do any good. it doesn't seem very important
in an __init function.
> +#endif
>
>
> ...
>
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linux-mm@kvack.org,
linaro-mm-sig@lists.linaro.org,
Michal Nazarewicz <mina86@mina86.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Russell King <linux@arm.linux.org.uk>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Ankita Garg <ankita@in.ibm.com>,
Daniel Walker <dwalker@codeaurora.org>,
Mel Gorman <mel@csn.ul.ie>, Arnd Bergmann <arnd@arndb.de>,
Jesse Barker <jesse.barker@linaro.org>,
Jonathan Corbet <corbet@lwn.net>,
Shariq Hasnain <shariq.hasnain@linaro.org>,
Chunsang Jeong <chunsang.jeong@linaro.org>,
Dave Hansen <dave@linux.vnet.ibm.com>Mel Gorman <mel@csn.ul.ie>
Subject: Re: [PATCH 4/9] mm: MIGRATE_CMA migration type added
Date: Fri, 14 Oct 2011 16:38:11 -0700 [thread overview]
Message-ID: <20111014163811.8d410590.akpm@linux-foundation.org> (raw)
In-Reply-To: <1317909290-29832-5-git-send-email-m.szyprowski@samsung.com>
On Thu, 06 Oct 2011 15:54:44 +0200
Marek Szyprowski <m.szyprowski@samsung.com> wrote:
> From: Michal Nazarewicz <m.nazarewicz@samsung.com>
>
> The MIGRATE_CMA migration type has two main characteristics:
> (i) only movable pages can be allocated from MIGRATE_CMA
> pageblocks and (ii) page allocator will never change migration
> type of MIGRATE_CMA pageblocks.
>
> This guarantees that page in a MIGRATE_CMA page block can
> always be migrated somewhere else (unless there's no memory left
> in the system).
>
> It is designed to be used with Contiguous Memory Allocator
> (CMA) for allocating big chunks (eg. 10MiB) of physically
> contiguous memory. Once driver requests contiguous memory,
> CMA will migrate pages from MIGRATE_CMA pageblocks.
>
> To minimise number of migrations, MIGRATE_CMA migration type
> is the last type tried when page allocator falls back to other
> migration types then requested.
>
>
> ...
>
> +#ifdef CONFIG_CMA_MIGRATE_TYPE
> +# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA)
> +#else
> +# define is_migrate_cma(migratetype) false
> +#endif
Implement in C, please.
>
> ...
>
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -115,6 +115,16 @@ static bool suitable_migration_target(struct page *page)
> if (migratetype == MIGRATE_ISOLATE || migratetype == MIGRATE_RESERVE)
> return false;
>
> + /* Keep MIGRATE_CMA alone as well. */
> + /*
> + * XXX Revisit. We currently cannot let compaction touch CMA
> + * pages since compaction insists on changing their migration
> + * type to MIGRATE_MOVABLE (see split_free_page() called from
> + * isolate_freepages_block() above).
> + */
Talk to us about this.
How serious is this shortcoming in practice? What would a fix look
like? Is anyone working on an implementation, or planning to do so?
> + if (is_migrate_cma(migratetype))
> + return false;
> +
> /* If the page is a large free page, then allow migration */
> if (PageBuddy(page) && page_order(page) >= pageblock_order)
> return true;
>
> ...
>
> +void __init init_cma_reserved_pageblock(struct page *page)
> +{
> + struct page *p = page;
> + unsigned i = pageblock_nr_pages;
> +
> + prefetchw(p);
> + do {
> + if (--i)
> + prefetchw(p + 1);
> + __ClearPageReserved(p);
> + set_page_count(p, 0);
> + } while (++p, i);
> +
> + set_page_refcounted(page);
> + set_pageblock_migratetype(page, MIGRATE_CMA);
> + __free_pages(page, pageblock_order);
> + totalram_pages += pageblock_nr_pages;
> +}
I wonder if the prefetches do any good. it doesn't seem very important
in an __init function.
> +#endif
>
>
> ...
>
--
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 internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-10-14 23:38 UTC|newest]
Thread overview: 182+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-06 13:54 [PATCHv16 0/9] Contiguous Memory Allocator Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` [PATCH 1/9] mm: move some functions from memory_hotplug.c to page_isolation.c Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 23:23 ` Andrew Morton
2011-10-14 23:23 ` Andrew Morton
2011-10-14 23:23 ` Andrew Morton
2011-10-18 12:05 ` Mel Gorman
2011-10-18 12:05 ` Mel Gorman
2011-10-18 12:05 ` Mel Gorman
2011-10-06 13:54 ` [PATCH 2/9] mm: alloc_contig_freed_pages() added Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 23:29 ` Andrew Morton
2011-10-14 23:29 ` Andrew Morton
2011-10-14 23:29 ` Andrew Morton
2011-10-16 8:01 ` Michal Nazarewicz
2011-10-16 8:01 ` Michal Nazarewicz
2011-10-16 8:01 ` Michal Nazarewicz
2011-10-16 8:31 ` Andrew Morton
2011-10-16 8:31 ` Andrew Morton
2011-10-16 8:31 ` Andrew Morton
2011-10-16 9:39 ` Michal Nazarewicz
2011-10-16 9:39 ` Michal Nazarewicz
2011-10-16 9:39 ` Michal Nazarewicz
2011-10-17 12:21 ` Marek Szyprowski
2011-10-17 12:21 ` Marek Szyprowski
2011-10-17 12:21 ` Marek Szyprowski
2011-10-17 18:39 ` Andrew Morton
2011-10-17 18:39 ` Andrew Morton
2011-10-17 18:39 ` Andrew Morton
2011-10-18 12:21 ` Mel Gorman
2011-10-18 12:21 ` Mel Gorman
2011-10-18 12:21 ` Mel Gorman
2011-10-18 17:26 ` Michal Nazarewicz
2011-10-18 17:26 ` Michal Nazarewicz
2011-10-18 17:26 ` Michal Nazarewicz
2011-10-18 17:48 ` Dave Hansen
2011-10-18 17:48 ` Dave Hansen
2011-10-18 17:48 ` Dave Hansen
2011-10-18 18:00 ` Michal Nazarewicz
2011-10-18 18:00 ` Michal Nazarewicz
2011-10-18 18:00 ` Michal Nazarewicz
2011-10-21 10:06 ` Mel Gorman
2011-10-21 10:06 ` Mel Gorman
2011-10-21 10:06 ` Mel Gorman
2011-10-24 1:00 ` Michal Nazarewicz
2011-10-24 1:00 ` Michal Nazarewicz
2011-10-24 1:00 ` Michal Nazarewicz
2011-10-24 4:05 ` Michal Nazarewicz
2011-10-24 4:05 ` Michal Nazarewicz
2011-10-24 4:05 ` Michal Nazarewicz
2011-10-24 4:05 ` Michal Nazarewicz
2011-11-01 15:04 ` Mel Gorman
2011-11-01 15:04 ` Mel Gorman
2011-11-01 15:04 ` Mel Gorman
2011-11-01 18:06 ` Michal Nazarewicz
2011-11-01 18:06 ` Michal Nazarewicz
2011-11-01 18:06 ` Michal Nazarewicz
2011-11-01 18:47 ` Mel Gorman
2011-11-01 18:47 ` Mel Gorman
2011-11-01 18:47 ` Mel Gorman
2011-10-24 4:05 ` Michal Nazarewicz
2011-10-24 4:05 ` Michal Nazarewicz
2011-10-06 13:54 ` [PATCH 3/9] mm: alloc_contig_range() added Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 23:35 ` Andrew Morton
2011-10-14 23:35 ` Andrew Morton
2011-10-14 23:35 ` Andrew Morton
2011-10-18 12:38 ` Mel Gorman
2011-10-18 12:38 ` Mel Gorman
2011-10-18 12:38 ` Mel Gorman
2011-10-06 13:54 ` [PATCH 4/9] mm: MIGRATE_CMA migration type added Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 23:38 ` Andrew Morton [this message]
2011-10-14 23:38 ` Andrew Morton
2011-10-14 23:38 ` Andrew Morton
2011-10-18 13:08 ` Mel Gorman
2011-10-18 13:08 ` Mel Gorman
2011-10-18 13:08 ` Mel Gorman
2011-10-24 19:32 ` Michal Nazarewicz
2011-10-24 19:32 ` Michal Nazarewicz
2011-10-24 19:32 ` Michal Nazarewicz
2011-10-27 9:10 ` Michal Nazarewicz
2011-10-27 9:10 ` Michal Nazarewicz
2011-10-27 9:10 ` Michal Nazarewicz
2011-10-06 13:54 ` [PATCH 5/9] mm: MIGRATE_CMA isolation functions added Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` [PATCH 6/9] drivers: add Contiguous Memory Allocator Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 23:57 ` Andrew Morton
2011-10-14 23:57 ` Andrew Morton
2011-10-14 23:57 ` Andrew Morton
2011-10-16 10:08 ` Russell King - ARM Linux
2011-10-16 10:08 ` Russell King - ARM Linux
2011-10-16 10:08 ` Russell King - ARM Linux
2011-10-18 13:43 ` Mel Gorman
2011-10-18 13:43 ` Mel Gorman
2011-10-18 13:43 ` Mel Gorman
2011-10-24 19:39 ` Michal Nazarewicz
2011-10-24 19:39 ` Michal Nazarewicz
2011-10-24 19:39 ` Michal Nazarewicz
2011-11-04 10:41 ` Marek Szyprowski
2011-11-04 10:41 ` Marek Szyprowski
2011-11-04 10:41 ` Marek Szyprowski
2011-10-06 13:54 ` [PATCH 7/7] ARM: integrate CMA with DMA-mapping subsystem Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 14:18 ` Marek Szyprowski
2011-10-06 14:18 ` Marek Szyprowski
2011-10-06 14:18 ` Marek Szyprowski
2011-10-15 0:03 ` Andrew Morton
2011-10-15 0:03 ` Andrew Morton
2011-10-15 0:03 ` Andrew Morton
2011-10-06 13:54 ` [PATCH 7/9] X86: " Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` [PATCH 8/9] ARM: " Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-14 4:33 ` [Linaro-mm-sig] " Subash Patel
2011-10-14 4:33 ` Subash Patel
2011-10-14 4:33 ` Subash Patel
2011-10-14 9:14 ` Marek Szyprowski
2011-10-14 9:14 ` Marek Szyprowski
2011-10-14 9:14 ` Marek Szyprowski
2011-10-06 13:54 ` [PATCH 9/9] ARM: Samsung: use CMA for 2 memory banks for s5p-mfc device Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-06 13:54 ` Marek Szyprowski
2011-10-07 16:27 ` [PATCHv16 0/9] Contiguous Memory Allocator Arnd Bergmann
2011-10-07 16:27 ` Arnd Bergmann
2011-10-07 16:27 ` Arnd Bergmann
2011-10-10 6:58 ` [Linaro-mm-sig] " Ohad Ben-Cohen
2011-10-10 6:58 ` Ohad Ben-Cohen
2011-10-10 6:58 ` Ohad Ben-Cohen
2011-10-10 12:02 ` Clark, Rob
2011-10-10 12:02 ` Clark, Rob
2011-10-10 12:02 ` Clark, Rob
2011-10-10 22:56 ` Andrew Morton
2011-10-10 22:56 ` Andrew Morton
2011-10-10 22:56 ` Andrew Morton
2011-10-11 6:57 ` Marek Szyprowski
2011-10-11 6:57 ` Marek Szyprowski
2011-10-11 6:57 ` Marek Szyprowski
2011-10-11 13:52 ` Arnd Bergmann
2011-10-11 13:52 ` Arnd Bergmann
2011-10-11 13:52 ` Arnd Bergmann
2011-10-14 23:19 ` Andrew Morton
2011-10-14 23:19 ` Andrew Morton
2011-10-14 23:19 ` Andrew Morton
2011-10-15 14:24 ` Arnd Bergmann
2011-10-15 14:24 ` Arnd Bergmann
2011-10-15 14:24 ` Arnd Bergmann
2011-10-10 12:07 ` [Linaro-mm-sig] " Maxime Coquelin
2011-10-10 12:07 ` Maxime Coquelin
2011-10-10 12:07 ` Maxime Coquelin
2011-10-11 7:17 ` Marek Szyprowski
2011-10-11 7:17 ` Marek Szyprowski
2011-10-11 7:17 ` Marek Szyprowski
2011-10-11 7:30 ` Maxime Coquelin
2011-10-11 7:30 ` Maxime Coquelin
2011-10-11 10:50 ` Marek Szyprowski
2011-10-11 10:50 ` Marek Szyprowski
2011-10-11 10:50 ` Marek Szyprowski
2011-10-11 11:25 ` Maxime Coquelin
2011-10-11 11:25 ` Maxime Coquelin
2011-10-11 13:05 ` Marek Szyprowski
2011-10-11 13:05 ` Marek Szyprowski
2011-10-11 13:05 ` Marek Szyprowski
2011-10-12 11:08 ` [PATCH] fixup: mm: alloc_contig_range: increase min_free_kbytes during allocation Marek Szyprowski
2011-10-12 11:08 ` Marek Szyprowski
2011-10-12 13:01 ` Maxime Coquelin
2011-10-12 13:01 ` Maxime Coquelin
-- strict thread matches above, loose matches on Subject: below --
2011-08-12 10:58 [PATCHv14 0/9] Contiguous Memory Allocator Marek Szyprowski
2011-08-12 10:58 ` [PATCH 4/9] mm: MIGRATE_CMA migration type added Marek Szyprowski
2011-08-12 10:58 ` Marek Szyprowski
2011-08-12 10:58 ` Marek Szyprowski
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=20111014163811.8d410590.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-arm-kernel@lists.infradead.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.