lkml.org 
[lkml]   [2012]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/2 v2] fix livelock because of kswapd stop
    Date
    When hotplug offlining happens on zone A, it starts to mark freed page
    as MIGRATE_ISOLATE type in buddy for preventing further allocation.
    (MIGRATE_ISOLATE is very irony type because it's apparently on buddy
    but we can't allocate them).
    When the memory shortage happens during hotplug offlining,
    current task starts to reclaim, then wake up kswapd.
    Kswapd checks watermark, then go sleep because current zone_watermark_ok_safe
    doesn't consider MIGRATE_ISOLATE freed page count.
    Current task continue to reclaim in direct reclaim path without kswapd's helping.
    The problem is that zone->all_unreclaimable is set by only kswapd
    so that current task would be looping forever like below.

    __alloc_pages_slowpath
    restart:
    wake_all_kswapd
    rebalance:
    __alloc_pages_direct_reclaim
    do_try_to_free_pages
    if global_reclaim && !all_unreclaimable
    return 1; /* It means we did did_some_progress */
    skip __alloc_pages_may_oom
    should_alloc_retry
    goto rebalance;

    [1/2] factor out memory-isolation functions from page_alloc.c to mm/page_isolation.c
    This patch can be merged regardless of [2/2].

    [2/2] fix this problem.
    Aaditya, Could you confirm this patch can solve your problem?

    Minchan Kim (2):
    mm: Factor out memory isolate functions
    memory-hotplug: fix kswapd looping forever problem

    drivers/base/Kconfig | 1 +
    include/linux/mmzone.h | 8 ++++
    include/linux/page-isolation.h | 8 ++--
    mm/Kconfig | 5 ++
    mm/Makefile | 4 +-
    mm/page_alloc.c | 102 ++++++++++++----------------------------
    mm/page_isolation.c | 96 +++++++++++++++++++++++++++++++++++++
    7 files changed, 147 insertions(+), 77 deletions(-)

    --
    1.7.9.5



    \
     
     \ /
      Last update: 2012-06-27 10:21    [W:4.189 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site