From 97f5af01808b1987df66d0f1c7a48bb413a4ef48 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Thu, 22 Feb 2018 09:48:45 -0500 Subject: 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 --- src/vnet/fib/ip6_fib.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/vnet/fib/ip6_fib.c') 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); } -- cgit 1.2.3-korg