Replace isc_qsbr with liburcu-qsbr
The qp-trie has been refactored to use call_rcu()
for safe memory reclamation.
This change makes cleanup more asynchronous, so it also required some fixes elsewhere:
- The cross-links between managed zones and their loops and timers have been made more accurate
- I have put an
rcu_barrier()
inisc_mem_destroy()
which I hope will ensure asynchronous cleanups are completed before shutdown - I have added a small
call_rcu()
wrapper to help thread sanitizer understand it - The tsan CI jobs have been adjusted to suppress complaints about
rcu_barrier()
which can't be fixed with a wrapper
When testing a million-zone configuration,
version | peak rss | cpu usage |
---|---|---|
9.19.11 | 11387820 | 120s |
main | 11644664 | 157s |
this | 10936148 | 120s |
Closes #3936 (closed)
Closes #4019 (closed)
Edited by Tony Finch