Re: Bird 1.5 and 1.6 memory leak
Le 2018-04-17 14:27, Alexander Demenshin a écrit : On 2018-04-17 13:31, wi...@mailoo.org wrote: As I said, the mem leak does not apppear in the `birdc show memory` command. It is shown at the OS level, and is shown via the `free` command. What do you mean by "OS level"? Which exactly level? What is the actual process size as reported by ps ("ps axuw|grep bird")? By "OS Level" I mean the memory used as reported by the kernel from /proc/meminfo. The process size is rather standard: bird 1737 0.0 0.0 15540 2216 ? Ss Apr17 0:01 /usr/sbin/bird -f -u bird -g bird If I sum up the size of all processes, I don't even reach 1Gib. But the memory used reported by the kernel increases gradually until it reaches OOM. If ps shows size similar to what you see in birdc "show mem", then the leak is definitely not in bird (though it may be related) - it is in kernel or some other process. It might not be in bird, but it is definitely triggered by it. Thanks -- Willy
Re: Bird 1.5 and 1.6 memory leak
if it occurs also on 1.6.4, could you please add also "birdcl show route count" output and some logs with debug all switched on? I had to reinstall version 1.5.0, to remain in the ubuntu default PPA. The route count is ridiculously low though: $ birdc show route count BIRD 1.5.0 ready. 11 of 11 routes for 11 networks How does it get leaked, do you reconfigure many times? Does the memory consumption increase gradually or by larger amounts? It seems to leak at the kernel level, as the process memory doesn't increase. I'm not doing any reconfiguration. It increases gradually and is closely tied to the traffic crossing the router. If I stop any traffic from passing (eg, using iptables), the memleak stops. As I said, I also don't have this leak if I leave bird down and configure the routes statically.
Re: Bird 1.5 and 1.6 memory leak
> debian stretch, bird v 1.6.3-2 is rock solid > > FWIW i saw zero leaks or issues on debian wheezy, jessie, devuan jessie > either. > > on multiple rrs taking several million routes I am at: > > birdc > BIRD 1.6.3 ready. > bird> show mem > BIRD memory usage > Routing tables:126 MB > Route attributes: 93 MB > ROA tables:112 B > Protocols: 823 kB > Total: 219 MB As I said, the mem leak does not apppear in the `birdc show memory` command. It is shown at the OS level, and is shown via the `free` command. The leak was also present with v1.6.3 on ubuntu though. Note that I don't have that much routes (~20), so the leak is not related to that IMO. > alpine linux also works very well, no issues taking multiple full tables > on core/edge as well: > > (host: core1) (user: root) (time= 11:23:53) > > ~ # birdc > BIRD 1.6.0 ready. > bird> show mem > BIRD memory usage > Routing tables:182 MB > Route attributes: 156 MB > ROA tables:192 B > Protocols: 686 kB > Total: 339 MB > bird> Unfortunately, switching to alpine or debian is not an option in my case. Thank you for the input!
Bird 1.5 and 1.6 memory leak
Hello, I installed different version of bird on Ubuntu 16.04 (namely, 1.5.0, 1.6.3, 1.6.4). After leaving the daemon running for ~1 hour, the memory used by the host is over 8Gib. However, when running `birdc show memory`, I get the following: BIRD memory usage Routing tables: 21 kB Route attributes: 11 kB ROA tables:192 B Protocols: 22 kB Total: 102 kB My config is pretty basic (edited, see attached) as we have 2 BGP protocols using 2 ASN (one public, one private), each exporting the routes learnt from the other. The leak seems to be related to the traffic going through the server, as the memory of the host remains still when there is no traffic going on. It is triggered by bird though, because I don't have the leak when the routes are configured statically and bird is shut down. The weird thing about this is that the memory is not used by the bird process itself. It's shown as used memory by the host, but no process is actually using this memory. I know that it's leaking because of bird though because it's the only process installed and running on this host. Has anyone ever encountered such a behavior, or can see an issue in my configuration? Thanks in advance for your help -- Willyrouter id 1.2.3.4 define ASPUB = 12345; define ASPRV = 42; filter private_in prefix set private_networks; { private_networks = [ 1.1.1.0/24+, 2.2.2.0/24+ ]; if (net ~ private_networks) then accept; reject; } filter public_in prefix set public_networks; { public_networks = [ 3.3.0.0/16+, 0.0.0.0/0 ]; if (net ~ public_networks) then accept; reject; } filter private_out prefix set private_networks; { private_networks = [ 0.0.0.0/0 ]; if (source = RTS_BGP && net ~ private_networks) then accept; reject; } filter public_out prefix set public_networks; { public_networks = [ 1.1.1.0/24+, 2.2.2.0/24+ ]; bgp_path.empty; bgp_path.prepend(ASPUB); if (source = RTS_BGP && net ~ public_networks) then accept; reject; } protocol kernel { scan time 5; import none; export all; } protocol device { scan time 10; } protocol bgp public { local as ASPUB; neighbor 1.2.3.5 as 54321; next hop self; export filter public_out; import filter public_in; }; protocol bgp private { local as ASPRV; neighbor 10.11.12.13 as 420001; next hop self; export filter private_out; import filter private_in; };