lkml.org 
[lkml]   [2011]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] mm: compaction: Abort compaction if too many pages are isolated and caller is asynchronous
    Hi Mel and everyone,

    On Mon, May 30, 2011 at 02:13:00PM +0100, Mel Gorman wrote:
    > Asynchronous compaction is used when promoting to huge pages. This is
    > all very nice but if there are a number of processes in compacting
    > memory, a large number of pages can be isolated. An "asynchronous"
    > process can stall for long periods of time as a result with a user
    > reporting that firefox can stall for 10s of seconds. This patch aborts
    > asynchronous compaction if too many pages are isolated as it's better to
    > fail a hugepage promotion than stall a process.
    >
    > If accepted, this should also be considered for 2.6.39-stable. It should
    > also be considered for 2.6.38-stable but ideally [11bc82d6: mm:
    > compaction: Use async migration for __GFP_NO_KSWAPD and enforce no
    > writeback] would be applied to 2.6.38 before consideration.

    Is this supposed to fix the stall with khugepaged in D state and other
    processes in D state?

    zoneinfo showed a nr_isolated_file = -1, I don't think that meant
    compaction had 4g pages isolated really considering it moves from
    -1,0, 1. So I'm unsure if this fix could be right if the problem is
    the hang with khugepaged in D state reported, so far that looked more
    like a bug with PREEMPT in the vmstat accounting of nr_isolated_file
    that trips in too_many_isolated of both vmscan.c and compaction.c with
    PREEMPT=y. Or are you fixing a different problem?

    Or how do you explain this -1 value out of nr_isolated_file? Clearly
    when that value goes to -1, compaction.c:too_many_isolated will hang,
    I think we should fix the -1 value before worrying about the rest...

    grep nr_isolated_file zoneinfo-khugepaged
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0
    nr_isolated_file 1
    nr_isolated_file 4294967295
    nr_isolated_file 0


    \
     
     \ /
      Last update: 2011-05-30 16:33    [W:4.523 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site