On Tue, Oct 29, 2013 at 5:33 PM, Mel Gorman <mgorman@xxxxxxx> wrote:
On Mon, Oct 28, 2013 at 07:42:49PM +0800, zhang.mingjun@xxxxxxxxxx wrote:
This slightly impacts the page allocator free path for a marginal gain> From: Mingjun Zhang <troy.zhangmingjun@xxxxxxxxxx>
>
> free_contig_range frees cma pages one by one and MIGRATE_CMA pages will be
> used as MIGRATE_MOVEABLE pages in the pcp list, it causes unnecessary
> migration action when these pages reused by CMA.
>
> Signed-off-by: Mingjun Zhang <troy.zhangmingjun@xxxxxxxxxx>
> ---
> mm/page_alloc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 0ee638f..84b9d84 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1362,7 +1362,8 @@ void free_hot_cold_page(struct page *page, int cold)
> * excessively into the page allocator
> */
> if (migratetype >= MIGRATE_PCPTYPES) {
> - if (unlikely(is_migrate_isolate(migratetype))) {
> + if (unlikely(is_migrate_isolate(migratetype))
> + || is_migrate_cma(migratetype))
> free_one_page(zone, page, 0, migratetype);
> goto out;
on CMA which are relatively rare allocations. There is no obvious
benefit to this patch as I expect CMA allocations to flush the PCP lists
how about keeping the migrate type of CMA page block as MIGRATE_ISOLATED after
the alloc_contig_range , and undo_isolate_page_range at the end of free_contig_range?
of course, it will waste the memory outside of the alloc range but in the pageblocks. the alloc_contig_range , and undo_isolate_page_range at the end of free_contig_range?
when a range of pages have been isolated and migrated. Is there any
measurable benefit to this patch?
after applying this patch, the video player on my platform works more fluent,
and the driver of video decoder on my test platform using cma alloc/free frequently.
-- Mel Gorman
SUSE Labs