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