Ok, so this commit is related to this bug (after bisection):
58e15f5029c75b45adbcb25cd76a36d26a6c4297 is the first bad commit
commit 58e15f5029c75b45adbcb25cd76a36d26a6c4297
Author: Christoph Lameter <email address hidden>
Date: Thu Sep 9 16:38:17 2010 -0700
mm: page allocator: calculate a better estimate of NR_FREE_PAGES when memory is low and kswapd is awake
Ordinarily watermark checks are based on the vmstat NR_FREE_PAGES as it is
cheaper than scanning a number of lists. To avoid synchronization
overhead, counter deltas are maintained on a per-cpu basis and drained
both periodically and when the delta is above a threshold. On large CPU
systems, the difference between the estimated and real value of
NR_FREE_PAGES can be very high. If NR_FREE_PAGES is much higher than
number of real free page in buddy, the VM can allocate pages below min
watermark, at worst reducing the real number of pages to zero. Even if
the OOM killer kills some victim for freeing memory, it may not free
memory if the exit path requires a new page resulting in livelock.
This patch introduces a zone_page_state_snapshot() function (courtesy of
Christoph) that takes a slightly more accurate view of an arbitrary vmstat
counter. It is used to read NR_FREE_PAGES while kswapd is awake to avoid
the watermark being accidentally broken. The estimate is not perfect and
may result in cache line bounces but is expected to be lighter than the
IPI calls necessary to continually drain the per-cpu counters while kswapd
is awake.
:040000 040000 56b962edbe8815533041d28a1b4c744bf810c302 b93faeb21bff790a5e90f1370509a4903bb4fd9a M include
:040000 040000 a3d6ce0e31b4552a22ef291e0a66441b78744ac2 4664c82b2f1aa2452751144455f9f133cbf71270 M mm
It *MIGHT* be also connected to the previous commit (7dd373d47c6e0dc124924348265be61990ba0fb6) as I observed some short (0.5 second) freezes while testing it, but no errors.
I'll see if I can revert it in HEAD and whether it helps - will post soon.
Ok, so this commit is related to this bug (after bisection):
58e15f5029c75b4 5adbcb25cd76a36 d26a6c4297 is the first bad commit 5adbcb25cd76a36 d26a6c4297
commit 58e15f5029c75b4
Author: Christoph Lameter <email address hidden>
Date: Thu Sep 9 16:38:17 2010 -0700
mm: page allocator: calculate a better estimate of NR_FREE_PAGES when memory is low and kswapd is awake
commit aa45484031ddee0 9b06350ab8528bf e5b2c76d1c upstream.
Ordinarily watermark checks are based on the vmstat NR_FREE_PAGES as it is
cheaper than scanning a number of lists. To avoid synchronization
overhead, counter deltas are maintained on a per-cpu basis and drained
both periodically and when the delta is above a threshold. On large CPU
systems, the difference between the estimated and real value of
NR_FREE_PAGES can be very high. If NR_FREE_PAGES is much higher than
number of real free page in buddy, the VM can allocate pages below min
watermark, at worst reducing the real number of pages to zero. Even if
the OOM killer kills some victim for freeing memory, it may not free
memory if the exit path requires a new page resulting in livelock.
This patch introduces a zone_page_ state_snapshot( ) function (courtesy of
Christoph) that takes a slightly more accurate view of an arbitrary vmstat
counter. It is used to read NR_FREE_PAGES while kswapd is awake to avoid
the watermark being accidentally broken. The estimate is not perfect and
may result in cache line bounces but is expected to be lighter than the
IPI calls necessary to continually drain the per-cpu counters while kswapd
is awake.
Signed-off-by: Christoph Lameter <email address hidden>
Signed-off-by: Mel Gorman <email address hidden>
Signed-off-by: Andrew Morton <email address hidden>
Signed-off-by: Linus Torvalds <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
(cherry picked from commit 87f1cbdee91c60a f6dd255226e792a 6410d77fbb 2.6.35.6)
Signed-off-by: Leann Ogasawara <email address hidden>
:040000 040000 56b962edbe88155 33041d28a1b4c74 4bf810c302 b93faeb21bff790 a5e90f1370509a4 903bb4fd9a M include a22ef291e0a6644 1b78744ac2 4664c82b2f1aa24 52751144455f9f1 33cbf71270 M mm
:040000 040000 a3d6ce0e31b4552
It *MIGHT* be also connected to the previous commit (7dd373d47c6e0d c124924348265be 61990ba0fb6) as I observed some short (0.5 second) freezes while testing it, but no errors.
I'll see if I can revert it in HEAD and whether it helps - will post soon.