diff options
author | Dave Barach <dave@barachs.net> | 2018-02-22 09:48:45 -0500 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2018-02-22 19:12:48 +0000 |
commit | 97f5af01808b1987df66d0f1c7a48bb413a4ef48 (patch) | |
tree | 6c9c152d3604393a6dc5e6094318e46200850372 /src/vnet/fib/ip6_fib.c | |
parent | cae7134a8c23b2ae3bb742b12789e5572aabf73d (diff) |
bihash table size perf/scale improvements
Directly allocate and carve cache-line-aligned chunks of virtual
memory. To a first approximation, bihash wasn't using
clib_mem_free(...).
We eliminate mheap object header/trailers, which improves space
efficiency. We also eliminate the 4gb bihash table size limit. An 8_8
bihash w/ 100 million random entries uses 3.8 Gbytes.
Change-Id: Icf925fdf99bce7d6ac407ac4edd30560b8f04808
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vnet/fib/ip6_fib.c')
-rw-r--r-- | src/vnet/fib/ip6_fib.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/vnet/fib/ip6_fib.c b/src/vnet/fib/ip6_fib.c index bb092cea1bf..9f58e4b6a9e 100644 --- a/src/vnet/fib/ip6_fib.c +++ b/src/vnet/fib/ip6_fib.c @@ -600,12 +600,20 @@ ip6_fib_table_show_one (ip6_fib_t *fib, u8 * format_ip6_fib_table_memory (u8 * s, va_list * args) { + uword bytes_inuse; + + bytes_inuse = + ip6_main.ip6_table[IP6_FIB_TABLE_NON_FWDING].ip6_hash.alloc_arena_next + - ip6_main.ip6_table[IP6_FIB_TABLE_NON_FWDING].ip6_hash.alloc_arena; + + bytes_inuse += + ip6_main.ip6_table[IP6_FIB_TABLE_FWDING].ip6_hash.alloc_arena_next + - ip6_main.ip6_table[IP6_FIB_TABLE_FWDING].ip6_hash.alloc_arena; + s = format(s, "%=30s %=6d %=8ld\n", "IPv6 unicast", pool_elts(ip6_main.fibs), - mheap_bytes(ip6_main.ip6_table[IP6_FIB_TABLE_NON_FWDING].ip6_hash.mheap) + - mheap_bytes(ip6_main.ip6_table[IP6_FIB_TABLE_FWDING].ip6_hash.mheap)); - + bytes_inuse); return (s); } |