[FROG] A route-map scaling improvement that has just gone in.

Donald Sharp sharpd at cumulusnetworks.com
Wed Aug 22 17:59:57 EDT 2018


All -

This morning, PR #2818 (https://github.com/FRRouting/frr/pulls/2818)
was merged into the FRR master code base.  This fixes Issue
#2493(https://github.com/FRRouting/frr/issues/2493), where zebra was
causing significant processing for route-map changes being made
to the system in both BGP and Zebra.

Here are some timings:
Pre-route-map #2818 improvements for ZEBRA:

ZEBRA:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   12      22568.749    121924      185    160855      162    414190 RWTEX TOTAL

BGP:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   10      31159.647    121679      256    117558      220    117713 RWTEX TOTAL

Create a Unused route-map:
robot# conf t
robot(config)# route-map BLAR permit 10
robot(config-route-map)# end


ZEBRA:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   12      40671.587    136545      297    214461      226    414190 RWTEX TOTAL

BGP:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   10      32043.610    122392      261    117558      227    117713 RWTEX TOTAL

This is aproximately 19 cpu seconds split between BGP and zebra to
handle a full BGP feed for a route-map change that no-process is
currently using.

After-route-map (#2818) improvements for ZEBRA:

ZEBRA:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   11      11592.894   1216075        9    152939        5    120621 RWTEX TOTAL

BGP:
Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
    9       8306.451     40216      206    116589      193    116801 RWTEX TOTAL

Create a Unused route-map:
robot# conf t
robot(config)# route-map BLAR permit 10
robot(config-route-map)# end

Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
   11      11596.799   1216183        9    152939        5    120621 RWTEX TOTAL


Total thread statistics
-------------------------
                      CPU (user+system): Real (wall-clock):
Active   Runtime(ms)   Invoked Avg uSec Max uSecs Avg uSec Max uSecs
Type  Thread
    9       8320.976     40365      206    116589      193    116801 RWTEX TOTAL

This adds up to negligible amounts of cpu time.

This is a wonderful improvement in processing of route-map changes for
zebra( and consequentially for bgp ).  I'd like to thank Soman for
doing this work.

thanks!

donald



More information about the frog mailing list