[FUG-BR] Memory leak no openbgpd?

Renato Ornelas renato.ornelas em gmail.com
Terça Setembro 8 23:45:13 BRT 2009


Prezados amigos,
Estou usando o openbgpd (4.2) no Free 7.2 e acho que tem um mem leak nele..
Quando eu dou um reload ele da um pico de memoria no processo do route
decision engine e depois diminui.. so que ele nunca volta ao patamar de
antes.. sempre consome um pouco de memoria a cada reload. Por exemplo:

No dia 01/09 antes do reload o processo em questao consumia (segundo o top):

41650 _bgpd         1  44    0   587M   586M select 1   5:39  0.00% bgpd

Durante o reload, peguei um pico de (mas chegou a ir alem disto):

41650 _bgpd         1  97    0   857M   856M CPU0   0   7:15  8.69% bgpd

Apos o reload ele ficou com:

41650 _bgpd         1  44    0   592M   592M select 3   7:25  1.66% bgpd

Nao foi mudado nada na configuracao, so dado o bgpctl reload mesmo...

Hoje o processo esta consumindo:
41650 _bgpd         1  44    0  1839M  1840M select 1  50:50  0.00% bgpd

O comando bgpctl sh rib mem retorna (foi dado agora):
bgpctl sh rib mem
RDE memory statistics
    301586 IPv4 network entries using 9.2M of memory
   1570831 prefix entries using 47.9M of memory
    279575 BGP path attribute entries using 21.3M of memory
    140411 BGP AS-PATH attribute entries using 5.7M of memory,
   and holding 279575 references
      8948 BGP attributes entries using 210K of memory
   and holding 225840 references
      8947 BGP attributes using 193K of memory
RIB using 84.6M of memory


Pela minha experiência, após ele chegar a uns 2300M o bgp morre e tenho que
comecar tudo de novo.

A versão mais nova do ports ta com um pau que nao deixa vc dar o reload
(testado em outro servidor), dando o seguinte erro no syslog:
Aug 28 12:04:17 bgp2 bgpd[2948]: /usr/local/etc/bgpd.conf:271: rib
"Adj-RIB-In" allready exists.
Aug 28 12:04:17 bgp2 bgpd[2948]: /usr/local/etc/bgpd.conf:271: rib "Loc-RIB"
allready exists.
Aug 28 12:04:17 bgp2 bgpd[2948]: config file /usr/local/etc/bgpd.conf has
errors, not reloading

Alguém já viu algum problema parecido? Tenho 3 sessões full, 4 parciais e 28
com clientes. Num outro servidor (mesmas versoes de tudo) com 2 sessoes
full, 2 parciais e 8 de clientes acontece o mesmo (so que consome somente
uns 2M a mais a cada reload). Neste 2o servidor, somente um dos clientes
recebe a tabela full...

Se alguém tiver o ports da versão 4.4.1_2 pra me mandar para que eu teste
aqui (ou me ensinar como pego uma versao velha do ports, pois sou novato no
Free), seria otimo...

Caso ninguem tenha ideia do que possa ser, o que seria melhor: abrir um bug
report ou postar numa lista como a freebsd-net antes disto?

Abraços,

Renato


Mais detalhes sobre a lista de discussão freebsd