show memory question

Maria Matejka maria.matejka at nic.cz
Mon Jan 25 10:15:00 CET 2021


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?
> 


More information about the Bird-users mailing list