1 Dec 2009 01:58
[quagga-dev 7446] Re: (no subject)
Chris Hall <chris.hall.list <at> highwayman.com>
2009-12-01 00:58:34 GMT
2009-12-01 00:58:34 GMT
Stephen Hemminger wrote (on 30-Nov-2009 at 19:44)
...
> Unfortunately, pthread mutex and locking primitives are slow. That is
> why almost all the databases end up rolling their own. Part of the
> problem is the glibc clash between being portable and being fast.
>
> What is the proposed design for using threads? I am concerned that if
> it just changes the bottleneck from being a single thread, to having a
> single lock there will be little performance gain.
The objective is to separate out:
1. "Routeing Engine" -- managing the RIB(s) and calculating updates.
2. "BGP Engine" -- Finite State Machine and all BGP session I/O
3. CLI -- all I/O
in order to:
1. ensure that BGP sessions are kept alive, even when the
Routeing Engine gets very busy.
2. ensure that the CLI is responsive, even when the Routeing Engine
gets very busy. (Though when a command is actually executed, it
will need the attention of the Routeing Engine).
The problem is that, especially when running many hundreds of Route Server
peers, bgpd has so much work to do dealing with RIB(s) etc. that it drops
the ball on BGP sessions. That is, BGP sessions hit holdtime expired
(Continue reading)
RSS Feed