[RFC 0/2] Reduce alloc_contig_range latency

From: Minchan Kim
Date: Tue Aug 14 2012 - 04:55:05 EST


Hi All,

I played with CMA's core function alloc_contig_range and
found it's very very slow so I suspect we can use it in
real practice.

I tested it with a bit tweak for working CMA in x86 on qemu.
Test environment is following as.

1. x86_64 machince, 2G RAM, 4 core, movable zone 40M with
try alloc_contig_range(movable_zone->middle_pfn, movable_zone->middle_pfn + 10M)
per 5sec until background stress test program is terminated.

2. There is background stress program which can make lots of clean cache page.
It mimics movie player.

alloc_contig_range's latency unit: usec
before:
min 204000 max 8156000 mean 3109310.34482759 success count 58

after:
min 8000 max 112000 mean 45788.2352941177 success count 85

So this patch reduces 8 sec as worst case, 3 sec as mean case.
I'm off from now on until the day of tomorrow so please understand
if I can't reply instantly.

Minchan Kim (2):
cma: remove __reclaim_pages
cma: support MIGRATE_DISCARD

include/linux/migrate_mode.h | 11 +++++--
include/linux/mm.h | 2 +-
include/linux/mmzone.h | 9 ------
mm/compaction.c | 2 +-
mm/migrate.c | 50 +++++++++++++++++++++++------
mm/page_alloc.c | 73 +++++-------------------------------------
6 files changed, 58 insertions(+), 89 deletions(-)

--
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/