- Jan 19, 2023
-
-
Maria Matejka authored
-
Maria Matejka authored
On large configurations, too many threads would spawn with one thread per loop. Therefore, threads may now run multiple loops at once. The thread count is configurable and may be changed during run. All threads are spawned on startup. This change helps with memory bloating. BIRD filters need large temporary memory blocks to store their stack and also memory management keeps its hot page storage per-thread. Known bugs: * Thread autobalancing is not yet implemented. * Low latency loops are executed together with standard loops.
-
Maria Matejka authored
If no channel is flushing, table prune doesn't walk over routes in nets and also doesn't walk over importing channel lists. This helps to alleviate the memory caching burdens a lot.
-
Maria Matejka authored
Some CLI actions, notably "show route", are run by queuing an event somewhere else. If the user closes the socket, in case such an action is being executed, the CLI must free the socket immediately from the error hook but the pool must remain until the asynchronous event finishes and cleans everything up.
-
Maria Matejka authored
-
- Nov 29, 2022
-
-
Ondřej Zajíček authored
-
- Nov 09, 2022
-
-
Ondřej Zajíček authored
While it does not directly change BIRD state, it can trigger reading arbitrary files and eating significant memory.
-
Ondřej Zajíček authored
BIRD keeps a previous (old) configuration for the purpose of undo. The existing code frees it after a new configuration is successfully parsed during reconfiguration. That causes memory usage spikes as there are temporarily three configurations (old, current, and new). The patch changes it to free the old one before parsing the new one (as user already requested a new config). The disadvantage is that undo is not available after failed reconfiguration.
-
- Nov 08, 2022
-
-
Maria Matejka authored
This commit uses bird-tools in version f35e8bce829f4bff61ec7eb07ec9c67aa867bc9a
-
- Nov 07, 2022
-
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
- Nov 03, 2022
-
-
Maria Matejka authored
-
- Nov 02, 2022
-
-
Maria Matejka authored
Memory unmapping causes slow address space fragmentation, leading in extreme cases to failing to allocate pages at all. Removing this problem by keeping all the pages allocated to us, yet calling madvise() to let kernel dispose of them. This adds a little complexity and overhead as we have to keep the pointers to the free pages, therefore to hold e.g. 1 GB of 4K pages with 8B pointers, we have to store 2 MB of data.
-
- Nov 01, 2022
-
-
Maria Matejka authored
-
- Oct 18, 2022
-
-
-
Ondřej Zajíček authored
Define scope for anonymous filters, and also explicitly distinguish block scopes and function/filter scopes instead of using anonymous / named distinction. Anonymous filters forgot to push scope, so variables for them were in fact defined in the top scope and therefore they shared a frame. This got broken after rework of variables, which assumed that there is a named scope for every function/filter.
-
- Oct 12, 2022
-
-
Maria Matejka authored
-
Maria Matejka authored
-
Ondřej Zajíček authored
While onlink flag is meaningful only with explicit next hops, it can be defined also on direct routes. Parse it also in this case to avoid periodic updates of the same route. Thanks to Marcin Saklak for the bugreport.
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
Notably, it's in a corked state and also when refeed is pending.
-