Maria Matejka
d37513a372
Neighbors: Locking and asynchronous notifications
2022-02-03 10:30:33 +01:00
Maria Matejka
c651cef737
Global interface list renamed to not clash with local lists
2022-02-03 10:30:33 +01:00
Maria Matejka
b6c9263543
Interfaces and neighbor notifications do properly enter protocol loops
2022-02-03 10:30:33 +01:00
Maria Matejka
b5155d5cea
Page cleanup routines updated to allow nested birdloops
2022-02-03 10:30:33 +01:00
Maria Matejka
87512ccdff
Route table fast prune fixup
2022-02-03 10:30:33 +01:00
Maria Matejka
f22bab9818
Babel: fixed interface pool removal
2022-02-03 10:30:33 +01:00
Maria Matejka
3cf5e0f144
Dropping a nonsensical assert which broke Babel
2022-02-03 10:03:37 +01:00
Maria Matejka
ee84ff14a1
Removing periodic wakeup of mainloop in debug version to search for notification issues
2022-02-03 10:03:37 +01:00
Maria Matejka
935b0b7124
Performance data of sark vs. v2.0.8 with a chart generator
2022-02-03 10:03:17 +01:00
Maria Matejka
ffa6a51c58
Thread documentation: Chapter 4 on memory management
2021-12-22 15:35:49 +01:00
Maria Matejka
a840170e84
Thread documentation: Completely rewritten chapter 3 on loops and locks
2021-12-08 20:31:12 +01:00
Maria Matejka
827c78297e
Final version of asynchronous export documentation
2021-12-08 12:39:48 +01:00
Maria Matejka
b6612ec792
Thread documentation: chapter 3, coroutines and locking
2021-12-08 12:39:36 +01:00
Maria Matejka
f459deee9f
Thread documentation: chapters 0, 1 and 2
2021-12-08 12:39:28 +01:00
Maria Jan Matejka
493d45d950
Fixed build errors for OpenBSD
2021-12-07 16:59:44 +00:00
Maria Matejka
f9e098c98a
Fixed standby memory page counters on shutdown
...
Bug introduced by commit 38278d94ba
.
2021-12-07 14:55:27 +01:00
Maria Matejka
542f24555d
GDB: io loop printing support in resource dumps, better iterating over linpool chunks
2021-12-07 13:07:00 +01:00
Maria Matejka
a9efce68b5
Fixed a race condition in channel aux table cleanup
2021-12-07 13:05:20 +01:00
Maria Matejka
4f43d326b4
Event list asserts to prevent running into rotten data
2021-12-07 13:05:20 +01:00
Maria Matejka
e32eafaaa7
Using more Python-ish constructions in BIRD linked-list accessors
2021-12-07 13:05:20 +01:00
Maria Matejka
2117864a87
Main IO loop shouldn't skip sockets when ping is received
2021-12-07 13:05:20 +01:00
Maria Matejka
c5b6b18413
Standby memory pages are accounted for as overhead in show memory command
2021-12-02 11:29:59 +00:00
Maria Matejka
38278d94ba
No memory unmapping when shutting down
...
All the memory is just freed implicitly on exit, no need for
page-by-page unmapping.
2021-12-01 22:02:42 +00:00
Maria Matejka
b2bac7ae91
Faster shutdown and cleanups by freeing route attributes strictly from main loop
2021-12-01 21:52:55 +00:00
Maria Matejka
387b279f60
Faster prune on table deletion
2021-12-01 21:33:38 +00:00
Maria Matejka
5f94d684d0
Table prune routines request export announcements directly
2021-12-01 16:21:35 +00:00
Maria Matejka
7092bdc0c9
fixed duplicate routes propagation
2021-12-01 14:02:23 +01:00
Maria Matejka
b50224a003
Merge branch 'master' into HEAD
2021-12-01 13:04:52 +01:00
Maria Matejka
55ee9961e0
Fix of shutdown: premature log cleanup led to use-after-free
2021-12-01 13:00:54 +01:00
Maria Matejka
bb63e99d78
Page allocator moved from pools to IO loops.
...
The resource pool system is highly hierarchical and keeping spare pages
in pools leads to unnecessarily complex memory management.
Loops have a flat hiearchy, at least for now, and it is therefore much
easier to keep care of pages, especially in cases of excessive virtual memory
fragmentation.
2021-12-01 13:00:54 +01:00
Maria Matejka
385b3ea395
For safer memory allocations, resources are bound to loops.
...
Also all loops have their basic resource pool for allocations which are
auto-freed when the loop is stopping.
2021-11-30 21:38:25 +01:00
Maria Matejka
f772afc525
Memory statistics split into Effective and Overhead
...
This feature is intended mostly for checking that BIRD's allocation
strategies don't consume much memory space. There are some cases where
withdrawing routes in a specific order lead to memory fragmentation and
this output should give the user at least a notion of how much memory is
actually used for data storage and how much memory is "just allocated"
or used for overhead.
Also raising the "system allocator overhead estimation" from 8 to 16
bytes; it is probably even more. I've found 16 as a local minimum in
best scenarios among reachable machines. I couldn't find any reasonable
method to estimate this value when BIRD starts up.
This commit also fixes the inaccurate computation of memory overhead for
slabs where the "system allocater overhead estimation" was improperly
added to the size of mmap-ed memory.
2021-11-27 22:54:15 +01:00
Maria Matejka
ab0994a10c
fixup of table reload bug
2021-11-24 23:20:26 +01:00
Maria Matejka
644e9ca94e
Directly mapped pages are kept for future use if temporarily not needed
2021-11-24 19:42:52 +00:00
Maria Matejka
57d0ecb9b7
GDB pretty printer for resource pools
2021-11-24 15:48:13 +00:00
Maria Matejka
5395880908
Fixed pipe reload/refeed
2021-11-23 12:06:27 +00:00
Maria Matejka
821344c781
Stored pages release routine
2021-11-23 11:13:11 +00:00
Maria Matejka
4ba991f19c
Fixed channel export map confusion
2021-11-23 11:12:32 +00:00
Maria Matejka
44dbedbe3f
BGP: End route refresh before another starts
2021-11-22 19:05:44 +01:00
Maria Matejka
3fd1f46184
RPKI has its own loop
2021-11-22 19:05:44 +01:00
Maria Matejka
20ace7f2e6
RPKI: Use the route refresh mechanism also for the first load
2021-11-22 19:05:44 +01:00
Maria Matejka
1e8e3b7c12
More information on RPKI errors
2021-11-22 19:05:44 +01:00
Maria Matejka
aadf690b14
Higher settle times when route refresh in the source table is running
2021-11-22 19:05:44 +01:00
Maria Matejka
df476c2e5d
Corking also feed start to keep BIRD running when refeeds would easily cause congestion
2021-11-22 19:05:44 +01:00
Maria Matejka
0fd1c1d091
Route attribute cache is now lockless on read / clone.
...
Lots of time was spent locking when accessing route attribute cache.
This overhead should be now reduced to a minimum.
2021-11-22 19:05:44 +01:00
Maria Matejka
2a224a9e1e
Route sources have their separate global lock
2021-11-22 19:05:44 +01:00
Maria Matejka
1b39473993
Introducing basic RCU primitives for lock-less shared data structures
2021-11-22 19:05:44 +01:00
Maria Matejka
adf37d8eff
VRF setting reduced to one argument, using default dummy iface for default vrf
2021-11-22 19:05:44 +01:00
Maria Matejka
dc160e11e1
Route table import-to-export announcement indirection to reduce pipe traffic
2021-11-22 19:05:44 +01:00
Maria Matejka
794a4eefa1
Keeping un-unmmappable pages until they can be reused
...
On Linux, munmap() may fail with ENOMEM when virtual memory is too
fragmented. Working this around by just keeping such blocks for future
use.
2021-11-22 19:05:44 +01:00