tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: KASSERT() in kern_timeout.c
On Tue, Apr 20, 2010 at 10:55:20AM +0200, Manuel Bouyer wrote:
> On Mon, Apr 19, 2010 at 05:45:50PM +0200, Manuel Bouyer wrote:
> > OK, so I modified the patch as attached. This seems to work well with
> > my test setup.
>
> I also installed this patch on the server that showed the problem. After
> 12 hours:
> 217612 SYN cache entries added
> 0 hash collisions
> 202657 completed
> 0 aborted (no space to build PCB)
> 837 timed out
> 0 dropped due to overflow
> 0 dropped due to bucket overflow
> 14045 dropped due to RST
> 0 dropped due to ICMP unreachable
> 216774 delayed free of SYN cache entries
>
> Memory resource pool statistics
> Name Size Requests Fail Releases Pgreq Pgrel Npage Hiwat Minpg Maxpg
> Idle
> synpl 280 217996 0 217993 21 19 2 4 0 inf
> 1
>
> So this seems to work fine. I'll wait a few more days
> before commit.
I think it's a bit of an ugly solution because of all the callout processing
that it generates. Longer term I think it would be better to look at other
methods of handling deferred frees, that would allow us to keep lock
complexity to a minimum. One idea would be a WQ_PERCPU workqueue to handle
deferred frees. It could also be used for tcpcb frees (which are safe as
is using callout_halt) and maybe other applications as we start to multithread
the stack.
> thanks for the help !
Thanks for fixing it!
>
> --
> Manuel Bouyer <bouyer%antioche.eu.org@localhost>
> NetBSD: 26 ans d'experience feront toujours la difference
> --
Home |
Main Index |
Thread Index |
Old Index