Claudio Jeker(cje...@diehard.n-r-g.com) on 2018.11.01 10:38:41 +0100:
> 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

sorry about that, i missed those the commits since the 26th

indeed its much less with an updated bgpctl

RDE memory statistics
    716318 IPv4 unicast network entries using 27.3M of memory
     59024 IPv6 unicast network entries using 3.2M of memory
   2323991 rib entries using 142M of memory
   4814319 prefix entries using 367M of memory
    530183 BGP path attribute entries using 36.4M of memory
           and holding 4814319 references
    137056 BGP AS-PATH attribute entries using 5.5M of memory
           and holding 530183 references
     32708 BGP attributes entries using 1.2M of memory
           and holding 891572 references
     32707 BGP attributes using 708K of memory
     61964 as-set elements in 58064 tables using 1.4M of memory
    103150 prefix-set elements using 4.3M of memory
RIB using 584M of memory
Sets using 5.6M of memory

RDE hash statistics
        path hash: size 131072, 530183 entries
            min 0 max 17 avg/std-dev = 4.045/1.907
        aspath hash: size 131072, 137056 entries
            min 0 max 8 avg/std-dev = 1.046/0.952
        attr hash: size 16384, 32708 entries
            min 0 max 10 avg/std-dev = 1.996/1.419

Reply via email to