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

Reply via email to