One optimization to handle/load large amount of routes faster through FRR is to add the following option to frr.conf:
zebra dplane limit <num>
https://docs.frrouting.org/en/latest/zebra.html#clicmd-zebra-dplane-limit-NUMBER
zebra dplane limit [NUMBER] Configure the limit on the number of pending updates that are waiting to be processed by the dataplane pthread.
Valid options for num is 0-10000 according to:
https://github.com/FRRouting/frr/blob/master/zebra/zebra_vty.c#L4270
/* Configure dataplane incoming queue limit */ DEFUN (zebra_dplane_queue_limit, zebra_dplane_queue_limit_cmd, "zebra dplane limit (0-10000)",
By default this number is 200 but increasing it might improve performance of how FRR handles routes:
https://github.com/FRRouting/frr/blob/master/zebra/zebra_dplane.c#L50
/* Default value for max queued incoming updates */ const uint32_t DPLANE_DEFAULT_MAX_QUEUED = 200;
Some testresults found from 2020: