diff options
author | Maria Matejka <mq@ucw.cz> | 2023-01-19 10:49:47 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-01-19 11:13:50 +0100 |
commit | 84c298465f6360a8694d4837f3420961ea321fa5 (patch) | |
tree | 273455bf0e6f1b7a1be8956692feacbf6b3484a3 /test | |
parent | 4d8d81f144e72fe2e182d7569087f2a8c8c5b938 (diff) |
Decoupling loops from threads to allow fixed thread count
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.
Diffstat (limited to 'test')
-rw-r--r-- | test/birdtest.c | 9 | ||||
-rw-r--r-- | test/bt-utils.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/test/birdtest.c b/test/birdtest.c index 5e3de1c5..cdca3829 100644 --- a/test/birdtest.c +++ b/test/birdtest.c @@ -557,7 +557,14 @@ void cmd_reconfig_undo_notify(void) {} #include "lib/net.h" #include "conf/conf.h" void sysdep_preconfig(struct config *c UNUSED) {} -int sysdep_commit(struct config *new UNUSED, struct config *old UNUSED) { return 0; } + +void bird_thread_commit(struct config *new, struct config *old); +int sysdep_commit(struct config *new, struct config *old) +{ + bird_thread_commit(new, old); + return 0; +} + void sysdep_shutdown_done(void) {} #include "nest/cli.h" diff --git a/test/bt-utils.h b/test/bt-utils.h index 13d267cc..758dbf48 100644 --- a/test/bt-utils.h +++ b/test/bt-utils.h @@ -28,7 +28,6 @@ uint bt_naive_pow(uint base, uint power); void bt_bytes_to_hex(char *buf, const byte *in_data, size_t size); void bt_bird_init(void); -void bt_bird_cleanup(void); struct config *bt_config_parse(const char *cfg); struct config *bt_config_file_parse(const char *filepath); |