FIB: optimise for src memory allocations
Most FIB entries will only ever have one source providing forwarding
information. Currently the source infom is stored in a vector of sources
on the FIB entry. Change this to a union of one source inline and a vector.
This saves the need to alloc a vector of sources for each FIB entry.
before:
vpp# ip route add count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
4.
392857e5 routes/sec
vpp# ip route del count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
9.
175464e5 routes/sec
vpp# ip route add count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
5.
193375e5 routes/sec
vpp# sh fib mem
FIB memory
Name Size in-use /allocated totals
Entry 72
1500011/
1500011 108000792/
108000792
Entry Source 32
1500011/
1500011 48000352/
48000352
after:
vpp# ip route add count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
4.
726560e5 routes/sec
vpp# ip route del count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
1.
041629e6 routes/sec
vpp# ip route add count
1500000 1.0.0.1/32 via 10.10.10.2 loop0
5.
702895e5 routes/sec
vpp# sh fib mem
FIB memory
Name Size in-use /allocated totals
Entry 96
1500011/
1500011 144001056/
144001056
Entry Source 32 0 / 0 0/0
Change-Id: Ic71e413eaff1ec152656beda3b94186f7894ea49
Signed-off-by: Neale Ranns <nranns@cisco.com>