1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

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.
This commit is contained in:
Maria Matejka
2023-02-24 09:13:35 +01:00
parent d9f0f4af7d
commit 571c4f69bf
7 changed files with 398 additions and 233 deletions

View File

@@ -4073,6 +4073,7 @@ rt_delete(void *tab_)
RT_UNLOCK(RT_PUB(tab));
birdloop_free(tab->loop);
rfree(tab->rp);
config_del_obstacle(conf);