Qual é a diferença entre o relatório de uso de memória no System Monitor e o relatório de graça?

14

Estou usando o System Monitor 2.28.0. Quando olho para a guia Recursos, vejo um bom gráfico com memória e troca. A memória é de cerca de 60%, 2,3 GiB de 3,8. Quando digito o comando livre, recebi:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

cat / proc / meminfo | greFree MemFree dar

MemFree:           34536 kB

A situação permaneceu a salvo por vários minutos. Comecei muito processo com um script e o script aguarda que a memória livre fique mais baixa. De acordo com o que estou vendo na guia Processo (ou com a parte superior), o número no System Monitor parece muito fechado para o total da memória do processo relatado gratuitamente.

obrigado

Guillaume Coté
fonte

Respostas:

15

A diferença é se a memória "buffers" e "em cache" está incluída na contagem de "usado".

Geralmente, a memória do sistema Linux é usada pelo kernel para dois propósitos: processos e cache / buffers de arquivos / rede. Se você observar atentamente a saída de free, ela já será mostrada:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Se você adicionar "buffers" e "cache" e subtrair isso da coluna "used", a segunda linha -/+ buffers/cacheserá exibida em "used" (a linha que começa com ), que mostra cerca de 2,3G (2384512) em use, que corresponde à memória relatada em uso que o Monitor do Sistema está relatando (está ignorando os buffers / armazenados em cache porque esses desaparecerão para abrir espaço para mais processos).

Seu grep /proc/meminfona verdade corresponde à coluna "livre" da primeira linha (32512 está perto o suficiente de 34536 - provavelmente mudou entre as duas saídas de comando).

Kees Cook
fonte
Obrigado, gostaria de saber por que o sistema precisava de 1,5 Gig em cache, mas isso deixa claro.
Guillaume Coté
1
É menos uma questão de "necessidade" do que de "usado". Naquele momento, ele lera pelo menos muito do disco rígido e o mantinha em memória sobressalente, caso precisasse usá-lo novamente.
Kees Cozinhe
0

Quando coloquei a mão no monitor do sistema, o uso de memória relatado na guia "Recursos" era o mesmo da freecoluna /usr/bin/free.

O problema é que a memória física livre é quase 0, mais cedo ou mais tarde: o Linux armazena em cache de forma agressiva, para que o dinheiro gasto na compra de RAM seja usado com eficiência. E isso significava que o gráfico mostraria constantemente> 98% do uso de memória, o que era inútil.

Então decidimos fazer exatamente como a -/+ buffers/cache:linha de /usr/bin/free. Dessa forma, o gráfico é significativo e permite que o usuário observe o uso da memória ~ application / userland em vez do estado físico da memória.

Eu sei, isso é um pouco enganador, porque a maioria dos usuários não entende que a memória física gratuita é um desperdício de dinheiro e desempenho. Enfrentei o mesmo problema no trabalho: a cada segunda-feira, os servidores reiniciavam e, nas próximas 24 horas, todos os servidores acionavam um alerta de "memória cheia". Então, eu corrigi o cálculo da memória livre no software de supervisão, como no monitor do sistema.

O Solaris atual tem o mesmo problema: o ZFS Cache (ARC) não está incluído na memória livre relatada por ferramentas como a vmstatque faz com que estúpidos administradores de banco de dados se queixem de que "o ZFS é ruim" :)

Benoît
fonte