On 12.03.2012 20:06, Martin Mares wrote:
Hello!
It is very costy and one (developer) possibility is to add
additional thread which does kernel interaction.
I think that a separate thread can solve this nuisance.
... at the cost of introducing lots of extra complexity.
I think that deferring kernel route updates (and maybe even
propagation of routes to all protocols) to a separate event
handler should help.
This can help CLI interaction (and it is good as temporary solution),
but does not decrease time needed for dispatching flapping sessions
(particularly if there are many of them). (This is one of the things
quagga suffers from). Syncing all routes make bird spend 2-3 times more
in FreeBSD, the same order of magnitude applies for Linux, i guess.
Offloading some activity with low core interaction to another thread can
be a good start for offloading another parts of code (protocol messages
parsing, sending hello messages, etc..).
Moreover, this approach can improve the situation with kernel scan
(which requires preparing and sending 100-150 Mb of data from kernel to
userland and parsing it) so we stops all network processing for tens of
hundreds of milliseconds which can be a significant issue for BFD (if,
someday, it gets implemented)
Have a nice fortnight