Re: RFC for 2.6: avoid OOM at bounce buffer storm

From: Martin Wilck
Date: Tue Jun 14 2005 - 11:23:25 EST


Hi Andrew,

Well. As I said, I think what you're seeing here is recent changes to
mm/page-writeback.c which reduce the amount of memory which we'll permit to
be dirtied due to write() calls. You'll probably find that the bounce
buffer problem is also fixable by reducing /proc/sys/vm/dirty_ratio in
2.6.9, for the same reasons.

What concerns me is that there are other ways of dirtying lots of memory
apart from write(): namely mmap(MAP_SHARED). If someone dirties 90% of all
memory via mmap() then we might again get into bounce buffer starvation.

I have tried the mmap(MAP_SHARED) method now extensively. I haven't been able to come anywhere near the catastrophic situations I saw with the 2.6.9 kernel, even by dirtying the full 8GB in fractions of a second.

There was another strangeness there though: Even with the high memory pressure applied, The ZONE_NORMAL free memory would never go below ~300MB. When the mem pressure got too high, the kernel would rather free almost slabs and start swapping than use those remaining 300M. It seems to me that the new logic is a bit too conservative with ZONE_NORMAL allocations.

Regards
Martin

--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:Martin.Wilck@xxxxxxxxxxxxxxxxxxx
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy
-
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/