Re: [patch v3 2/6] mm, compaction: return failed migration target pages back to freelist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/07/2014 11:39 PM, Greg Thelen wrote:

On Wed, May 07 2014, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:

On Tue, 6 May 2014 19:22:43 -0700 (PDT) David Rientjes <rientjes@xxxxxxxxxx> wrote:

Memory compaction works by having a "freeing scanner" scan from one end of a
zone which isolates pages as migration targets while another "migrating scanner"
scans from the other end of the same zone which isolates pages for migration.

When page migration fails for an isolated page, the target page is returned to
the system rather than the freelist built by the freeing scanner.  This may
require the freeing scanner to continue scanning memory after suitable migration
targets have already been returned to the system needlessly.

This patch returns destination pages to the freeing scanner freelist when page
migration fails.  This prevents unnecessary work done by the freeing scanner but
also encourages memory to be as compacted as possible at the end of the zone.

Reported-by: Greg Thelen <gthelen@xxxxxxxxxx>

What did Greg actually report?  IOW, what if any observable problem is
being fixed here?

I detected the problem at runtime seeing that ext4 metadata pages (esp
the ones read by "sbi->s_group_desc[i] = sb_bread(sb, block)") were
constantly visited by compaction calls of migrate_pages().  These pages
had a non-zero b_count which caused fallback_migrate_page() ->
try_to_release_page() -> try_to_free_buffers() to fail.

That sounds like something the "mm, compaction: add per-zone migration pfn cache for async compaction" patch would fix, not this one, though.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]