Preciso obter um uso de memória em% do vmstat, mas não entendo bem alguns dos números relacionados à memória exibidos no vmstat.
Em particular, dada uma saída como esta
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 139728 45396 199128 1236360 1 2 4 622 3 1 51 4 43 2 0
Qual é a quantidade total de memória do sistema? É 'swpd' + 'free' + 'buff' + 'cache', que totaliza 1620612?
Qual é a quantidade livre de memória do sistema? É 45396, conforme exibido na coluna 'grátis'?
O problema é que eles não somam ou nem parecem próximos do que foi relatado 'top'. A saída de 'top' que eu peguei na mesma época que 'vmstat's acima é:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Então ... estou assumindo que deve haver números / opções ocultos no 'vmstat' que eu não conhecia?
Eu preciso usar 'vmstat' para esse fim e não outros comandos, pois é isso que o requisito declarou.
Idealmente, o que eu quero alcançar com 'vmstat' é o% de uso de memória, como em:
<used_memory>/<total_memory> * 100%.
Obrigado!
Respostas:
O que você está procurando é a saída do "free":
Aqui está um tour:
Esta é uma caixa com 768 MB de RAM física e uma partição de troca de 500344KB.
759456 KB é "usado" (segunda coluna, linha superior). Dessa memória "usada", 23132KB são buffers (quinta coluna, linha superior) e 592484KB (sexta coluna, linha superior) são cache, deixando 144840KB (segunda coluna, segunda linha) de memória física que está sendo usada pelos processos ativos.
Quando você considera que a memória usada por buffers e cache pode ser usada para processos, isso deixa 630716KB (3ª coluna, 2ª linha) de memória física livre.
A partição de troca, como eu disse, é 500344KB (1ª coluna, linha inferior). 21972KB (segunda coluna, linha inferior) do arquivo de troca está em uso, deixando 478372KB (terceira coluna, linha inferior) livre.
Portanto, sua definição de% de memória livre depende se você está contando buffers e cache ou não, e se você está contando swap ou não.
Isso deve lhe dar o suficiente para calcular uma porcentagem como achar melhor.
Aqui está a saída do top e grátis:
Você pode ver como o top e o free concordam (embora com uma pequena diferença - esta é uma máquina multiusuário e o uso da memória dos programas top e free são refletidos nele).
Adicione um "-s" ao chamar vmstate e você verá a mesma saída, apenas em uma forma diferente:
Você pode ver que o vmstat está mostrando todos os mesmos números de graça.
fonte
Eu tenho a mesma pergunta com você e crie uma fórmula
Eu testei na versão vmstat do procps-ng 3.3.10 e vmstat do procps-ng 3.3.9
fonte
Eu recomendaria que você leia este IBM Redbook "Linux Performance and Tuning Guidelines" ( http://www.redbooks.ibm.com/abstracts/redp4285.html?Open ). Ele possui detalhes sobre os dados retornados por vários comandos e deve ajudá-lo.
Eu normalmente usei o comando "free" no Linux ou "cat / proc / meminfo".
fonte
Aqui está uma função de shell POSIX que arredonda a porcentagem desejada para o número inteiro mais próximo (para fins de script, isso pode ser mais útil, pois os testes de comparação aritmética POSIX do shell funcionam apenas com números inteiros):
Saída (no meu sistema):
A mesma coisa, com
free
:fonte