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

From: Martin Wilck
Date: Tue Jun 07 2005 - 09:23:22 EST


Andrew Morton wrote:

It might be neater to do this at the mempool level: that way we're adding
general-purpose infrastructure and then just using it, rather than
special-casing the bounce code.

See below a (n untested) patch against the latest devel tree. It won't be
stunningly scalable on big SMP, but the overhead of bouncing will probably
hide that.

I don't quite understand your patch. You introduce a "limit" field but you never actually use it. You also don't count the allocated pages.
Are you using the semaphore for slowing things down on purpose?

(Note that the problem is not in the mempool allocation itself but in the "normal" allocation path (page_pool_alloc() -> alloc_page()))

Anyway, I think could figure out your patch but with 2.6.12-rc5-mm2 I couldn't reproduce the problem any more. It appears to run much more smoothly now, perhaps because wakeup_bdflush() isn't called any more. Are you still interested in more data?

I couldn't get 2.6.12-rc5 to run on my system.

Ow. Could you please investigate further? Any boot messages for us to
see? it's quite possibly some missing config option..

It turned out to be a problem with Red Hat's nash that didn't check the returned pid in it's wait4() call and thus ended up insmod'ing mutliple modules simultaneously, leading to "Unkown symbol" errors. Yuck, it took me a day figure that out.

That bug is fixed in redhat's "mkinitrd" package 4.2.0.3-1 and later, but that package is currently only in Fedora's "Development" tree.

Thanks,
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/