Date: Tue, 15 Jun 2004 15:57:09 -0400 From: Brian Fundakowski Feldman <green@FreeBSD.org> To: hackers@FreeBSD.org Cc: peter@FreeBSD.org Subject: contigmalloc(9) rewrite Message-ID: <20040615195709.GE1016@green.homeunix.org>
next in thread | raw e-mail | index | archive | help
As I still couldn't get the reliability I wanted with contigmalloc(9) (due to fundamental brokenness), I decided to do a reimplementation of it that provides much more reliability and quite a bit less ugly churn of the presently-allocated pageable memory. In the new version, allocations start at the top of the usable memory such that space is not gratuitously wired at low physical addresses, as it is now, leaving more room for those contigmalloc() calls that really do require lower memory ranges. I've tested it out a bit and had good results even with a fair bit of load and full memory usage. Limitations should only be on the kernel pressure of VM page holdings and object locks, and wired/kernel memory allocated. I am primarily testing it out with ath(4), but I can provoke lock-ups with or without any contigmalloc() changes eventually when repeatedly hot-plugging the Atheros 802.11 card, so it is not a very goodtest. The patch, which applies to 5-CURRENT, can be found here: <http://green.homeunix.org/~green/contigmalloc2.patch> The default is to use the old contigmalloc(). You can set the sysctl or loader tunable "vm.old_contigmalloc" to 0 to enable it. For anyone that normally runs into failed allocations hot-plugging hardware, please try this and see if it helps out. -- Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\ <> green@FreeBSD.org \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040615195709.GE1016>