El 21/03/11 08:48, Andrea Arcangeli escribió:
=== Subject: mm: compaction: Use async migration for __GFP_NO_KSWAPD and enforce no writeback From: Andrea Arcangeli<aarcange@xxxxxxxxxx> __GFP_NO_KSWAPD allocations are usually very expensive and not mandatory to succeed as they have graceful fallback. Waiting for I/O in those, tends to be overkill in terms of latencies, so we can reduce their latency by disabling sync migrate. Unfortunately, even with async migration it's still possible for the process to be blocked waiting for a request slot (e.g. get_request_wait in the block layer) when ->writepage is called. To prevent __GFP_NO_KSWAPD blocking, this patch prevents ->writepage being called on dirty page cache for asynchronous migration. [mel@xxxxxxxxx: Avoid writebacks for NFS, retry locked pages, use bool] Signed-off-by: Andrea Arcangeli<aarcange@xxxxxxxxxx> Signed-off-by: Mel Gorman<mel@xxxxxxxxx> --- mm/migrate.c | 48 +++++++++++++++++++++++++++++++++--------------- mm/page_alloc.c | 2 +- 2 files changed, 34 insertions(+), 16 deletions(-)
The latest patch fails to apply in vanilla 2.6.38: [alex@srv64 linux-2.6.38]$ patch -p1 --dry-run < ../\[Bug\ 31142\]\ Large\ write\ to\ USB\ stick\ freezes\ unrelated\ tasks\ for\ a\ long\ time.eml (Stripping trailing CRs from patch.) patching file mm/migrate.c Hunk #1 FAILED at 564. Hunk #2 FAILED at 586. Hunk #3 FAILED at 641. Hunk #4 FAILED at 686. Hunk #5 FAILED at 757. Hunk #6 FAILED at 850. 6 out of 6 hunks FAILED -- saving rejects to file mm/migrate.c.rej (Stripping trailing CRs from patch.) patching file mm/page_alloc.c Hunk #1 FAILED at 2085. 1 out of 1 hunk FAILED -- saving rejects to file mm/page_alloc.c.rej I will try to apply the patch manually. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx 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@xxxxxxxxx"> email@xxxxxxxxx </a>