More efficient IO loop event execution to avoid long loops
If there are lots of loops in a single thread and only some of the loops are actually active, the other loops are now kept aside and not checked until they actually get some timers, events or active sockets. This should help with extreme loads like 100k tables and protocols. Also ping and loop pickup mechanism was allowing subtle race conditions. Now properly handling collisions between loop ping and pickup.
Showing
- lib/locking.h 1 addition, 0 deletionslib/locking.h
- nest/proto.c 1 addition, 0 deletionsnest/proto.c
- nest/rt-table.c 1 addition, 0 deletionsnest/rt-table.c
- proto/bgp/bgp.c 7 additions, 1 deletionproto/bgp/bgp.c
- sysdep/unix/io-loop.c 345 additions, 169 deletionssysdep/unix/io-loop.c
- sysdep/unix/io-loop.h 17 additions, 7 deletionssysdep/unix/io-loop.h
- sysdep/unix/io.c 24 additions, 54 deletionssysdep/unix/io.c
Loading
Please register or sign in to comment