Copying Neale. He may not respond immediately since he's on PTO until May 13th.

HTH... Dave

-----Original Message-----
From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Andreas Schultz
Sent: Friday, May 10, 2019 5:54 AM
To: vpp-dev@lists.fd.io
Subject: Re: [vpp-dev] finding a virtual memory leak in VPP

Am Do., 9. Mai 2019 um 19:59 Uhr schrieb Dave Barach (dbarach)
<dbar...@cisco.com>:
>
> $ cat /proc/<pid>/maps
>
>
>
> You could also start vpp under gdb and set a breakpoint in mmap...

uhm, that lead to something unexpected:

Breakpoint 1, __GI___mmap64 (addr=0x0, len=33554432, prot=3, flags=34, fd=-1, 
offset=0) at ../sysdeps/unix/sysv/linux/mmap64.c:44
44 in ../sysdeps/unix/sysv/linux/mmap64.c
#0  __GI___mmap64 (addr=0x0, len=33554432, prot=3, flags=34, fd=-1,
offset=0) at ../sysdeps/unix/sysv/linux/mmap64.c:44
#1  0x00007ffff74c8cee in clib_mem_vm_alloc (size=33554432) at
/usr/src/vpp/src/vppinfra/mem.h:317
#2  0x00007ffff74ca431 in clib_bihash_init_24_8 (h=0x7fffb5ff4a80,
name=0x7ffff7759638 "Adjacency Neighbour table", nbuckets=4096,
memory_size=33554432) at
/usr/src/vpp/src/vppinfra/bihash_template.c:55
#3  0x00007ffff752c97a in adj_nbr_insert (nh_proto=FIB_PROTOCOL_IP4, 
link_type=VNET_LINK_IP4, nh_addr=0x7ffff76d29e0 <zero_addr>, sw_if_index=7, 
adj_index=7) at /usr/src/vpp/src/vnet/adj/adj_nbr.c:68
#4  0x00007ffff752ce6f in adj_nbr_alloc (nh_proto=FIB_PROTOCOL_IP4, 
link_type=VNET_LINK_IP4, nh_addr=0x7ffff76d29e0 <zero_addr>,
sw_if_index=7) at /usr/src/vpp/src/vnet/adj/adj_nbr.c:187
#5  0x00007ffff752cf74 in adj_nbr_add_or_lock (nh_proto=FIB_PROTOCOL_IP4, 
link_type=VNET_LINK_IP4,
nh_addr=0x7ffff76d29e0 <zero_addr>, sw_if_index=7) at
/usr/src/vpp/src/vnet/adj/adj_nbr.c:233
#6  0x00007ffff7508d3e in fib_path_attached_next_hop_get_adj
(path=0x7fffb5f15f34, link=VNET_LINK_IP4) at
/usr/src/vpp/src/vnet/fib/fib_path.c:653
#7  0x00007ffff7508dd6 in fib_path_attached_next_hop_set
(path=0x7fffb5f15f34) at /usr/src/vpp/src/vnet/fib/fib_path.c:674
#8  0x00007ffff750b6de in fib_path_resolve (path_index=51) at
/usr/src/vpp/src/vnet/fib/fib_path.c:1883
#9  0x00007ffff7504c4b in fib_path_list_resolve
(path_list=0x7fffb5f14634) at
/usr/src/vpp/src/vnet/fib/fib_path_list.c:578
#10 0x00007ffff750515a in fib_path_list_create 
(flags=FIB_PATH_LIST_FLAG_SHARED, rpaths=0x7fffb5ff495c) at
/usr/src/vpp/src/vnet/fib/fib_path_list.c:736
#11 0x00007ffff74f94bc in fib_entry_src_api_path_swap (src=0x7fffb5ff49bc, 
entry=0x7fffb5ff0cb4, pl_flags=FIB_PATH_LIST_FLAG_NONE, rpaths=0x7fffb5ff495c) 
at
/usr/src/vpp/src/vnet/fib/fib_entry_src_api.c:47
#12 0x00007ffff74f5fd8 in fib_entry_src_action_path_swap 
(fib_entry=0x7fffb5ff0cb4, source=FIB_SOURCE_PLUGIN_HI, 
flags=FIB_ENTRY_FLAG_ATTACHED, rpaths=0x7fffb5ff495c) at
/usr/src/vpp/src/vnet/fib/fib_entry_src.c:1658
#13 0x00007ffff74ea527 in fib_entry_create (fib_index=2, prefix=0x7fffb4bd9870, 
source=FIB_SOURCE_PLUGIN_HI, flags=FIB_ENTRY_FLAG_ATTACHED, 
paths=0x7fffb5ff495c) at
/usr/src/vpp/src/vnet/fib/fib_entry.c:736
#14 0x00007ffff74d4bfb in fib_table_entry_path_add2 (fib_index=2, 
prefix=0x7fffb4bd9870, source=FIB_SOURCE_PLUGIN_HI, 
flags=FIB_ENTRY_FLAG_ATTACHED, rpath=0x7fffb5ff495c) at
/usr/src/vpp/src/vnet/fib/fib_table.c:576
#15 0x00007ffff74d4aeb in fib_table_entry_path_add (fib_index=2, 
prefix=0x7fffb4bd9870, source=FIB_SOURCE_PLUGIN_HI, 
flags=FIB_ENTRY_FLAG_ATTACHED, next_hop_proto=DPO_PROTO_IP4, next_hop=0x0, 
next_hop_sw_if_index=7, next_hop_fib_index=4294967295, next_hop_weight=1, 
next_hop_labels=0x0,
path_flags=FIB_ROUTE_PATH_FLAG_NONE) at
/usr/src/vpp/src/vnet/fib/fib_table.c:548

My plugin uses a interface per session (like other tunnel implementation do) 
and the adds a route per session pointing into that interface (the 
fib_table_entry_path_add).
At the end this result in new pool instance for the adjacency. And a pool 
allocates some space by default. So, every session end up instantiating a new 
pool through the fib entry.

It is no surprise that this doesn't scale beyond a few thousand session.

I know can I can rewrite my tunnel code to use a mid chain adjacency.
But is that the only choice or do I do something wrong with the interface and 
fib entry?

How do the other tunnel implementations scale that use fib entries?

Many thanks
Andreas

Andreas

>
>
>
> D.
>
>
>
>
>
>
>
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Andreas 
> Schultz
> Sent: Thursday, May 9, 2019 12:18 PM
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] finding a virtual memory leak in VPP
>
>
>
> Hi,
>
>
>
> Something in VPP (most likely my UPF/GTP plugin) is causing an abnormal high 
> virtual memory consumption. `show memory` without and with memory-trace 
> enable can not explain it.
>
>
>
> With some 10k sessions I see as much as 1TB virtual memory usage, but only 
> about 200MB or so residential memory. `show memory` also only reports about 
> 200MB.
>
>
>
> My best guess is that something requests virtual memory pages from the OS and 
> does not return them.
>
> Any hint on how to track this down? What in VPP could request that much 
> virtual memory without actually using it?
>
>
>
> Many thanks
>
> Andreas
>
>
>
> --
>
> --
> Dipl.-Inform. Andreas Schultz
>
> ----------------------- enabling your networks ----------------------
> Travelping GmbH                     Phone:  +49-391-81 90 99 0
> Roentgenstr. 13                     Fax:    +49-391-81 90 99 299
> 39108 Magdeburg                     Email:  i...@travelping.com
> GERMANY                             Web:    http://www.travelping.com
>
> Company Registration: Amtsgericht Stendal        Reg No.:   HRB 10578
>
> Geschaeftsfuehrer: Holger Winkelmann          VAT ID No.: DE236673780
> ---------------------------------------------------------------------



--
--
Dipl.-Inform. Andreas Schultz

----------------------- enabling your networks ----------------------
Travelping GmbH                     Phone:  +49-391-81 90 99 0
Roentgenstr. 13                     Fax:    +49-391-81 90 99 299
39108 Magdeburg                     Email:  i...@travelping.com
GERMANY                             Web:    http://www.travelping.com

Company Registration: Amtsgericht Stendal        Reg No.:   HRB 10578
Geschaeftsfuehrer: Holger Winkelmann          VAT ID No.: DE236673780
---------------------------------------------------------------------
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#12977): https://lists.fd.io/g/vpp-dev/message/12977
Mute This Topic: https://lists.fd.io/mt/31557024/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to