Re: kswapd craziness round 2

From: Zlatko Calusic
Date: Fri Mar 08 2013 - 02:40:36 EST


On 08.03.2013 07:42, Hillf Danton wrote:
On Fri, Mar 8, 2013 at 3:37 AM, Jiri Slaby <jslaby@xxxxxxx> wrote:
On 03/01/2013 03:02 PM, Hillf Danton wrote:
On Fri, Mar 1, 2013 at 1:02 AM, Jiri Slaby <jslaby@xxxxxxx> wrote:

Ok, no difference, kswap is still crazy. I'm attaching the output of
"grep -vw '0' /proc/vmstat" if you see something there.

Thanks to you for test and data.

Lets try to restore the deleted nap, then.

Oh, it seems to be nice now:
root 579 0.0 0.0 0 0 ? S Mar04 0:13 [kswapd0]

Double thanks.

But Mel does not like it, probably.
Lets try nap in another way.

Hillf

--- a/mm/vmscan.c Thu Feb 21 20:01:02 2013
+++ b/mm/vmscan.c Fri Mar 8 14:36:10 2013
@@ -2793,6 +2793,10 @@ loop_again:
* speculatively avoid congestion waits
*/
zone_clear_flag(zone, ZONE_CONGESTED);
+
+ else if (sc.priority > 2 &&
+ sc.priority < DEF_PRIORITY - 2)
+ wait_iff_congested(zone, BLK_RW_ASYNC, HZ/10);
}

/*
--


There's another bug in there, which I'm still chasing. Artificial sleeps like this just mask the real bug and introduce new problems (on my 4GB server kswapd spends all the time in those congestion wait calls). The problem is that the bug needs about 5 days of uptime to reveal it's ugly head. So far I can only tell that it was introduced somewhere between 3.1 & 3.4.

Also, check shrink_inactive_list(), it already sleeps if really needed:

if (nr_writeback && nr_writeback >=
(nr_taken >> (DEF_PRIORITY - sc->priority)))
wait_iff_congested(zone, BLK_RW_ASYNC, HZ/10);

Regards,
--
Zlatko

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/