Hello!
My first thought would be that BIRD called free() on that memory, not
necessarily returning the memory back to the kernel.
This may change in some new versions with changing at least some of the
memory allocations to mmap/munmap. This should help a lot with this
specific problem, anyway it is not going to happen in the next version.
It may also sometimes be possible to run reconfiguration several times
to trigger the LibC's internal memory release algorithms, anyway all of
this magic is mostly just a cargo cult.
Maria
On 1/25/21 8:08 AM, Alarig Le Lay wrote:
Hi,
On one of my routers, I needed to free some RAM temporally, so I shut
all my BGP sessions. With `birdc show memory` I saw that it should have
worked, however htop was still seeing 1.2G used by bird.
5311 root 20 0 1296M 1220M 1724 S 0.0 61.1 59h01:29 ├─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.conf -
5314 root 20 0 1296M 1220M 1724 S 0.7 61.1 6h31:09 │ └─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.con
bird> show memory
BIRD memory usage
Routing tables: 49 MB
Route attributes: 842 kB
Protocols: 300 kB
Total: 50 MB
So, I added the `disabled` option to my sessions and restarted bird, and
then birdc and htop were almost consistent.
25724 root 20 0 107M 32600 2224 S 0.7 1.6 0:00.62 ├─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.conf -
25726 root 20 0 107M 32600 2224 S 0.7 1.6 0:00.16 │ └─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.con
bird> show memory
BIRD memory usage
Routing tables: 28 MB
Route attributes: 46 kB
Protocols: 304 kB
Total: 29 MB
When I re-enabled the BGP sessions, the RAM utilisation was a bit lower
(the original process was two months old).
25724 root 20 0 1147M 1072M 2072 R 1.3 53.7 2:33.80 ├─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.conf -
25726 root 20 0 1147M 1072M 2072 S 0.7 53.7 0:07.84 │ └─
/usr/sbin/bird -s /run/bird.ctl -c /etc/bird.con
bird> show memory
BIRD memory usage
Routing tables: 399 MB
Route attributes: 528 MB
Protocols: 102 MB
Total: 1029 MB
Perhaps bird thinks that some RAM has been freed while it’s not actually
the case?