linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] Stop kswapd consuming 100% CPU when highest zone is small
@ 2011-06-24 14:44 Mel Gorman
  2011-06-24 14:44 ` [PATCH 1/4] mm: vmscan: Correct check for kswapd sleeping in sleeping_prematurely Mel Gorman
                   ` (5 more replies)
  0 siblings, 6 replies; 41+ messages in thread
From: Mel Gorman @ 2011-06-24 14:44 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Pádraig Brady, James Bottomley, Colin King, Minchan Kim,
	Andrew Lutomirski, Rik van Riel, Johannes Weiner, linux-mm,
	linux-kernel, Mel Gorman

(Built this time and passed a basic sniff-test.)

During allocator-intensive workloads, kswapd will be woken frequently
causing free memory to oscillate between the high and min watermark.
This is expected behaviour.  Unfortunately, if the highest zone is
small, a problem occurs.

This seems to happen most with recent sandybridge laptops but it's
probably a co-incidence as some of these laptops just happen to have
a small Normal zone. The reproduction case is almost always during
copying large files that kswapd pegs at 100% CPU until the file is
deleted or cache is dropped.

The problem is mostly down to sleeping_prematurely() keeping kswapd
awake when the highest zone is small and unreclaimable and compounded
by the fact we shrink slabs even when not shrinking zones causing a lot
of time to be spent in shrinkers and a lot of memory to be reclaimed.

Patch 1 corrects sleeping_prematurely to check the zones matching
	the classzone_idx instead of all zones.

Patch 2 avoids shrinking slab when we are not shrinking a zone.

Patch 3 notes that sleeping_prematurely is checking lower zones against
	a high classzone which is not what allocators or balance_pgdat()
	is doing leading to an artifical believe that kswapd should be
	still awake.

Patch 4 notes that when balance_pgdat() gives up on a high zone that the
	decision is not communicated to sleeping_prematurely()

This problem affects 2.6.38.8 for certain and is expected to affect
2.6.39 and 3.0-rc4 as well. If accepted, they need to go to -stable
to be picked up by distros and this series is against 3.0-rc4. I've
cc'd people that reported similar problems recently to see if they
still suffer from the problem and if this fixes it.

 mm/vmscan.c |   59 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 35 insertions(+), 24 deletions(-)

-- 
1.7.3.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  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@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 41+ messages in thread
* [PATCH 0/4] Stop kswapd consuming 100% CPU when highest zone is small
@ 2011-06-24 13:43 Mel Gorman
  2011-06-24 13:43 ` [PATCH 2/4] mm: vmscan: Do not apply pressure to slab if we are not applying pressure to zone Mel Gorman
  0 siblings, 1 reply; 41+ messages in thread
From: Mel Gorman @ 2011-06-24 13:43 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Pádraig Brady, James Bottomley, Colin King, Minchan Kim,
	Andrew Lutomirski, Rik van Riel, Johannes Weiner, linux-mm,
	linux-kernel, Mel Gorman

During allocator-intensive workloads, kswapd will be woken frequently
causing free memory to oscillate between the high and min watermark.
This is expected behaviour.  Unfortunately, if the highest zone is
small, a problem occurs.

This seems to happen most with recent sandybridge laptops but it's
probably a co-incidence as some of these laptops just happen to have
a small Normal zone. The reproduction case is almost always during
copying large files that kswapd pegs at 100% CPU until the file is
deleted or cache is dropped.

The problem is mostly down to sleeping_prematurely() keeping kswapd
awake when the highest zone is small and unreclaimable and compounded
by the fact we shrink slabs even when not shrinking zones causing a lot
of time to be spent in shrinkers and a lot of memory to be reclaimed.

Patch 1 corrects sleeping_prematurely to check the zones matching
	the classzone_idx instead of all zones.

Patch 2 avoids shrinking slab when we are not shrinking a zone.

Patch 3 notes that sleeping_prematurely is checking lower zones against
	a high classzone which is not what allocators or balance_pgdat()
	is doing leading to an artifical believe that kswapd should be
	still awake.

Patch 4 notes that when balance_pgdat() gives up on a high zone that the
	decision is not communicated to sleeping_prematurely()

This problem affects 3.0-rc4 and 2.6.38.8 for certain and is expected
to affect 2.6.39 as well. If accepted, they need to go to -stable to
be picked up by distros. This series is against 3.0-rc4. I've cc'd
people that reported similar problems recently to see if they still
suffer from the problem and if this fixes it.

 mm/vmscan.c |   57 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 34 insertions(+), 23 deletions(-)

-- 
1.7.3.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  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@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2011-07-22 13:22 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-24 14:44 [PATCH 0/4] Stop kswapd consuming 100% CPU when highest zone is small Mel Gorman
2011-06-24 14:44 ` [PATCH 1/4] mm: vmscan: Correct check for kswapd sleeping in sleeping_prematurely Mel Gorman
2011-06-25 21:33   ` Rik van Riel
2011-06-27  6:10   ` Minchan Kim
2011-06-28 21:49   ` Andrew Morton
2011-06-29 10:57     ` Pádraig Brady
2011-06-30  9:39     ` Mel Gorman
2011-06-30  2:23   ` KOSAKI Motohiro
2011-06-24 14:44 ` [PATCH 2/4] mm: vmscan: Do not apply pressure to slab if we are not applying pressure to zone Mel Gorman
2011-06-25 21:40   ` Rik van Riel
2011-06-28 23:38   ` Minchan Kim
2011-06-30  2:37   ` KOSAKI Motohiro
2011-06-24 14:44 ` [PATCH 3/4] mm: vmscan: Evaluate the watermarks against the correct classzone Mel Gorman
2011-06-25 21:42   ` Rik van Riel
2011-06-27  6:53   ` Minchan Kim
2011-06-28 12:52     ` Mel Gorman
2011-06-28 23:23       ` Minchan Kim
2011-06-28 23:23   ` Minchan Kim
2011-06-24 14:44 ` [PATCH 4/4] mm: vmscan: Only read new_classzone_idx from pgdat when reclaiming successfully Mel Gorman
2011-06-25 23:17   ` Rik van Riel
2011-06-30  9:05   ` KOSAKI Motohiro
2011-06-30 10:19     ` Mel Gorman
2011-07-19 16:09   ` Minchan Kim
2011-07-20 10:48     ` Mel Gorman
2011-07-21 15:30       ` Minchan Kim
2011-07-21 16:07         ` Mel Gorman
2011-07-21 16:36           ` Minchan Kim
2011-07-21 17:01             ` Mel Gorman
2011-07-22  0:21               ` Minchan Kim
2011-07-22  7:42                 ` Mel Gorman
2011-06-25 14:23 ` [PATCH 0/4] Stop kswapd consuming 100% CPU when highest zone is small Andrew Lutomirski
2011-07-21 15:37 ` Minchan Kim
2011-07-21 16:09   ` Mel Gorman
2011-07-21 16:24     ` Minchan Kim
2011-07-21 16:36       ` Andrew Lutomirski
2011-07-21 16:42         ` Minchan Kim
2011-07-21 16:58           ` Andrew Lutomirski
2011-07-22  0:30             ` Minchan Kim
2011-07-22 13:21               ` Andrew Lutomirski
  -- strict thread matches above, loose matches on Subject: below --
2011-06-24 13:43 Mel Gorman
2011-06-24 13:43 ` [PATCH 2/4] mm: vmscan: Do not apply pressure to slab if we are not applying pressure to zone Mel Gorman
2011-06-24 13:59   ` Mel Gorman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).