O que significam os diferentes contadores de memória no FreeBSD?

20

top me diz:

last pid: 64807;  load averages:  0.99,  0.97,  0.92                                          up 189+04:47:22 09:16:17
45 processes:  1 running, 44 sleeping
CPU:  0.4% user,  0.0% nice,  0.2% system,  6.4% interrupt, 93.0% idle
Mem: 222M Active, 2151M Inact, 2008M Wired, 823M Buf, 3499M Free
Swap: 8192M Total, 8192M Free

Munin mostra isso um pouco mais claramente:

uso anual de memória rtr1

Como você pode ver, o servidor possui cerca de 8 GB de RAM. Gostaria de saber se posso colocar esta fera em um servidor de 2 GB mais modesto . Agora eu sei o que ativos e buffers significam, eu acho. Mas estou realmente preocupado com as gotas de memória "conectadas" e "inativas". Esses não são mapeados para nenhum processo existente, até onde eu sei.

Observe como a linha verde "ativa" subiu em dezembro: foi quando começamos a usar um daemon BGP neste roteador. Não entendo exatamente o que aconteceu em abril e maio, mas lembro-me de fazer uma atualização do sistema e mudar para o pkgng nessa época.

Aqui está o roteador sobressalente para o primeiro, com menos ram (4 GB):

uso anual de memória rtr0

Parece que este mora perfeitamente bem com metade da RAM e ainda deixa cerca de 2 GB livres, o que me leva a acreditar que eu poderia mudar para uma caixa de 2 GB para este servidor, reduzindo custos e manutenção ...

Alguma sugestão? O que significam os vários contadores de memória mostrados na parte superior? Mais especificamente, o que faz:

  • Ativo
  • Inativo
  • Cache
  • Buffers
  • Com fio
  • Livre

... realmente significa? Eu encontrei algumas postagens explicando partes do subsistema VM e lembro de ter um "ah-ah!" momento compreendendo tudo isso cerca de 12 anos atrás, mas eu esqueci. :) Até o fiel manual do FreeBSD não respondeu à minha pergunta ...

Posso fazer o downgrade para 2 GB?

anarcat
fonte
Aqui é a versão Linux desta questão (explicando o freecomando do procps ): linux - uso de memória real
Adam Katz

Respostas:

25
  • Active: Memória atualmente sendo usada por um processo
  • Inactive: Memória que foi liberada, mas ainda é armazenada em cache, pois pode ser usada novamente. Se Freefor necessária mais memória, essa memória poderá ser limpa e liberada. Essa memória não é limpa antes de ser necessária, porque "a memória livre é memória desperdiçada", não custa nada manter os dados antigos, caso sejam necessários novamente.
  • Wired: Memória em uso pelo Kernel. Esta memória não pode ser trocada
  • Cache: A memória usada para armazenar dados em cache pode ser liberada imediatamente, se necessário
  • Buffers: Cache de disco
  • Free: Memória totalmente gratuita e pronta para uso. Inactive, CacheE Bufferspode tornar-se livre, se eles são limpos.

Portanto, você pode adicionar Inactiveà sua Freecontagem e considerá-la não utilizada. Wiredé a memória em uso pelo kernel, que inclui a pilha de rede. A execução netstat -mfornecerá um resumo do uso da memória pela pilha da rede.

Com base em seus gráficos, além do salto relativo na wiredmemória no início de março, sim, você deve poder executar essa carga de trabalho em 2 GB de RAM. Se o fizer, considere executar o i386 em vez do amd64, pois cada alocação de memória ocupará menos espaço, pois os ponteiros terão 32 bits em vez de 64 bits.

Allan Jude
fonte
1
Memória 'inativa' "Não pode ser realocada para outros processos", portanto, não deve ser considerada 'não utilizada'. Veja wiki.freebsd.org/Memory
humbads
1
O contador 'Inativo' foi dividido em 2 itens separados no FreeBSD mais recente. 'Inativo' e 'Lavanderia' (memória que ainda precisa ser liberada para troca ou disco antes de poder ser liberada). Explanação adicional aqui: lists.freebsd.org/pipermail/freebsd-arch/2016-November/…
Allan Jude