On Wed, Oct 31, 2018 at 11:55:51PM +0100, Sebastian Benoit wrote:
> Denis Fondras(open...@ledeuns.net) on 2018.10.31 21:02:17 +0100:
> > On Wed, Oct 31, 2018 at 04:24:49PM +0100, Claudio Jeker wrote:
> > > This diff introduces a real Adj-RIB-Out. It is the minimal change to
> > > introduce the new RIB. This removes the update_rib introduced before 6.4
> > > lock because that is now replaced with a real RIB.
> > > The code used by bgpctl show rib is now a fair amount easier since now one
> > > RIB runner can be used for all cases.
> > > path_update() is now returning if a prefix was not modified which is
> > > needed in the update path to suppress unneeded updates.
> > > The softreconfig out case becomes simpler because there is no more the
> > > need to run with both filters and check results.
> > > Last the shutdown code of the RDE had to be adjusted a bit to still work
> > > with the Adj-RIB-Out.
> > > 
> > > This may cause memory consumption to go up but my testing has shown that
> > > the result is actually not significant. Needs the commits from earlier
> > > today to apply.
> > 
> > On my Route Server, it is quite a big change (in percentage).
> > * Before :
> > RDE memory statistics
> >      11561 IPv4 unicast network entries using 452K of memory
> >        131 IPv6 unicast network entries using 7.2K of memory
> >      23370 rib entries using 1.4M of memory
> >      23517 prefix entries using 1.8M of memory
> >       4894 BGP path attribute entries using 344K of memory
> >            and holding 23517 references
> >       1720 BGP AS-PATH attribute entries using 76.4K of memory
> >            and holding 4894 references
> >       1061 BGP attributes entries using 41.4K of memory
> >            and holding 10565 references
> >       1060 BGP attributes using 25.6K of memory
> >     101809 as-set elements in 58041 tables using 2.1M of memory
> >     114429 prefix-set elments using 4.7M of memory
> > RIB using 4.1M of memory
> > Sets using 6.9M of memory
> > 
> > RDE hash statistics
> >         path hash: size 131072, 4894 entires
> >             min 0 max 3 avg/std-dev = 0.037/0.000
> >         aspath hash: size 131072, 1720 entires
> >             min 0 max 2 avg/std-dev = 0.013/0.000
> >         attr hash: size 16384, 1061 entires
> >             min 0 max 2 avg/std-dev = 0.065/0.000
> > 
> > * After:
> > RDE memory statistics
> >      11560 IPv4 unicast network entries using 452K of memory
> >        145 IPv6 unicast network entries using 7.9K of memory
> >      34991 rib entries using 2.1M of memory
> >      69844 prefix entries using 5.3M of memory
> >       4929 BGP path attribute entries using 347K of memory
> >            and holding 69844 references
> >       1727 BGP AS-PATH attribute entries using 76.6K of memory
> >            and holding 4929 references
> >       1066 BGP attributes entries using 41.6K of memory
> >            and holding 10643 references
> >       1065 BGP attributes using 25.6K of memory
> >     101809 as-set elements in 58041 tables using 2.1M of memory
> >     114429 prefix-set elments using 4.7M of memory
> > RIB using 8.4M of memory
> > Sets using 6.9M of memory
> > 
> > RDE hash statistics
> >         path hash: size 131072, 4929 entires
> >             min 0 max 3 avg/std-dev = 0.038/0.000
> >         aspath hash: size 131072, 1727 entires
> >             min 0 max 2 avg/std-dev = 0.013/0.000
> >         attr hash: size 16384, 1066 entires
> >             min 0 max 2 avg/std-dev = 0.065/0.000
> > 
> 
> ok this is a more interesting router:
> 
> [benoit@border2:~]$ cat before  
> RDE memory statistics
>     715727 IPv4 unicast network entries using 27.3M of memory
>      58953 IPv6 unicast network entries using 3.1M of memory
>    1549171 rib entries using 94.6M of memory
>    2897130 prefix entries using 265M of memory
>     562423 BGP path attribute entries using 60.1M of memory
>     149579 BGP AS-PATH attribute entries using 6.1M of memory,
>            and holding 562423 references
>      37007 BGP attributes entries using 1.4M of memory
>            and holding 880668 references
>      37006 BGP attributes using 912K of memory
>      61964 as-set elements in 58064 tables using 950K of memory
>     103150 prefix-set elments using 4.3M of memory
> RIB using 459M of memory
> Sets using 5.2M of memory
> 
> RDE hash statistics
>         path hash: size 131072, 562423 entires
>             min 0 max 20 avg/std-dev = 4.291/2.364
>         aspath hash: size 131072, 149579 entires
>             min 0 max 8 avg/std-dev = 1.141/0.835
>         attr hash: size 16384, 37007 entires
>             min 0 max 10 avg/std-dev = 2.259/1.378
> 
> [benoit@border2:~]$ cat now                                                   
>          
> RDE memory statistics
>    2323535 unspec network entries using 0B of memory
>     716246 IPv6 unicast network entries using 38.3M of memory

This bgpctl is out of sync. So I don't trust the numbers too much.

Also check the ps alx or top output. Since malloc has a fair amount of
fragmentation.

>      58933 IPv4 vpn network entries using 4.0M of memory
>    4806161 rib entries using 293M of memory
>    4806161 prefix entries using 440M of memory
>     529410 BGP path attribute entries using 56.5M of memory
>       1945 BGP AS-PATH attribute entries using 134K of memory,
>            and holding 5807738 references
>     529410 BGP attributes entries using 20.2M of memory
>            and holding 32706 references
>     725558 BGP attributes using 870K of memory
>    1426888 as-set elements in 32705 tables using 56.7K of memory
>      61964 prefix-set elments using 101K of memory
> RIB using 853M of memory
> Sets using 157K of memory
> 
> RDE hash statistics
>         path hash: size 131072, 529410 entires
>             min 0 max 17 avg/std-dev = 4.039/1.920
>         aspath hash: size 131072, 136842 entires
>             min 0 max 8 avg/std-dev = 1.044/0.954
>         attr hash: size 16384, 32706 entires
>             min 0 max 10 avg/std-dev = 1.996/1.420
> 

-- 
:wq Claudio

Reply via email to