Date: Thu, 26 Jun 2003 13:05:04 +0200 From: =?iso-8859-1?Q?John_B=E4ckstrand?= <sandos@home.se> To: "Bosko Milekic" <bmilekic@technokratis.com> Cc: freebsd-stable@freebsd.org Subject: Re: Mbuf Clusters on 4.8 Message-ID: <005b01c33bd2$cba0cd70$0000fea9@sandos> References: <000b01c33b7e$bc37fdd0$0000fea9@sandos> <20030625215743.GA2506@technokratis.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Thu, Jun 26, 2003 at 03:03:20AM +0200, John B?ckstrand wrote: > > Ive been googling quite a bit now for problems with > > running out of mbuf > > clusters. Im basically sending a 30k datachunk down > > 1000-4000 connections, > > but 1000 is more than enough to quickly fill upp 8192 > > mbuf clusters. I also > > tried setting maximum amount of mbuf clusters to 65536, > > but that only made > > the box hard-wire 86MB of 96MB RAM, making it just as > > unsuable as a dead > > machine. > > > > Of course, when the machine runs out of mbuf clusters, > > it dies. I also found > > this with google: > > > > "Finally, the fact that FreeBSD 3.x panics when it runs > > out of > > mbuf clusters is a well-known problem. The solution is > > to not > > let it run out of mbuf clusters by configuring a > > sufficient > > number for them." > > > > >From this it sounds as it is a problem that should be > > fixed, but it > > obviously isnt in 4.8. Is this behaviour now considered > > acceptable? And if > > so, doesnt this make FreeBSD extremely easy to kill > > using a simple > > DOS-attack? Is this "fixed" in any way on 5.1? > > > > --- > > John B?ckstrand > > It's not panicking, it's running out of resources. Whenever you have > this sort of problem you need to provide more information, there is > absolutely no way I can help you like this. You need to, at the very > minimum, give us 'netstat -m' output and make a serious attempt at > figuring out what is consuming so many clusters. You could be running > out of clusters but you could also be running out of memory before you > run out of clusters, in which case you should probably _not_ increase > nmbclusters and instead fix the underlying problem instead (re-work > your application). In such a scenario, blindly bumping up nmbclusters > can make the problem worse. Even if you had 'unlimited' (or > dynamically growing) nmbclusters, you'd _still_ have the same problem > and, what's more, it could actually render your system even more > unusable as the machine would not be able to allocate memory for > other more important uses. Yes, you are right, I didnt get a panick. Firstly, heres is /var/log/messages from when the box hung: Jun 26 02:29:30 sandbsd /kernel: All mbuf clusters exhausted, please see tuning(7). Jun 26 02:29:35 sandbsd last message repeated 4 times Jun 26 02:29:35 sandbsd /kernel: rl0: watchdog timeout Jun 26 02:29:36 sandbsd /kernel: All mbuf clusters exhausted, please see tuning(7). Jun 26 02:29:56 sandbsd last message repeated 17 times Jun 26 02:29:57 sandbsd /kernel: rl0: watchdog timeout I cant give netstat -m after it hung, obviously, but with 8192 max mbuf clusters I can see some time before the hang that peak is at 8192 clusters, I also saw lots of requests for memory denied, and requests for memory delayed, but no calls to drain routines. I also saw about 20MB allocated to network (60% of mb_map). This was the last time I tried hanging it, and I somehow thought it mas managing. After all, denying requests means it did actually cope with a memory starvation. The NIC is a realtek 8139. I wonder what significance those watchdog timeout messages have? I might try with a 3com later today (any card which doesnt require mbufs should be finer, if there is any such thing). --- John Bäckstrand
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?005b01c33bd2$cba0cd70$0000fea9>