diff options
author | Maria Matejka <mq@ucw.cz> | 2023-02-24 09:13:35 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-04-04 17:00:59 +0200 |
commit | 571c4f69bfbcf437d848b332bb2f4995fea2347d (patch) | |
tree | 01af432e1fa4a61be6793be90c59bf4223de6539 /lib | |
parent | d9f0f4af7dc49c22232cc3be5e40866fc7d5dda7 (diff) |
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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/locking.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/locking.h b/lib/locking.h index 7e014bd0..6bed14bf 100644 --- a/lib/locking.h +++ b/lib/locking.h @@ -13,6 +13,7 @@ struct domain_generic; /* Here define the global lock order; first to last. */ struct lock_order { + struct domain_generic *meta; struct domain_generic *the_bird; struct domain_generic *control; struct domain_generic *proto; |