Re: [Bug 9182] Critical memory leak (dirty pages)

From: Krzysztof Oledzki
Date: Mon Dec 17 2007 - 12:18:40 EST




On Sun, 16 Dec 2007, Andrew Morton wrote:

On Sun, 16 Dec 2007 14:46:36 +0100 (CET) Krzysztof Oledzki <olel@xxxxxx> wrote:

Which filesystem, which mount options

- ext3 on RAID1 (MD): / - rootflags=data=journal

It wouldn't surprise me if this is specific to data=journal: that
journalling mode is pretty complex wrt dairty-data handling and isn't well
tested.

Does switching that to data=writeback change things?

I'll confirm this tomorrow but it seems that even switching to
data=ordered (AFAIK default o ext3) is indeed enough to cure this problem.

yes, sorry, I meant ordered.

OK, I can confirm that the problem is with data=journal. With data=ordered I get:

# uname -rns;uptime;sync;sleep 1;sync ;sleep 1; sync;grep Dirty /proc/meminfo
Linux cougar 2.6.24-rc5
17:50:34 up 1 day, 20 min, 1 user, load average: 0.99, 0.48, 0.35
Dirty: 0 kB

Two questions remain then: why system dies when dirty reaches ~200MB

I think you have ~2G of RAM and you're running with
/proc/sys/vm/dirty_ratio=10, yes?

If so, when that machine hits 10% * 2G of dirty memory then everyone who
wants to dirty pages gets blocked.

Oh, right. Thank you for the explanation.

and what is wrong with ext3+data=journal with >=2.6.20-rc2?

Ah. It has a bug in it ;)

As I said, data=journal has exceptional handling of pagecache data and is
not well tested. Someone (and I'm not sure who) will need to get in there
and fix it.

OK, I'm willing to test it. ;)

Best regrds,

Krzysztof Olędzki