Qual é a diferença entre o relatório de uso de memória no Monitor do Sistema e o que é gratuito?

14

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

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

cat / proc / meminfo | grep MemFree dar

MemFree:           34536 kB

A situação permaneceu a salvo por vários minutos. Eu comecei um monte de processo com um script e o script está aguardando a memória livre ficar mais baixa. De acordo com o que estou vendo na aba Process (ou com top), o número no System Monitor parece muito fechado ao total da memória do processo que o reportado por free.

Obrigado

    
por Guillaume Coté 27.10.2010 / 06:11

2 respostas

15

A diferença é se as memórias "buffers" e "cacheadas" estão ou não incluídas na contagem "usada".

Geralmente, a memória do sistema Linux é usada pelo kernel para duas finalidades: processos e cache / buffers de arquivo / rede. Se você olhar de perto para a saída de free , isso já é mostrado:


             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, em seguida, subtrair isso da coluna "used", você obterá a segunda linha em "used" (a linha que começa com -/+ buffers/cache ), que mostra 2.3G (2384512) em uso, que corresponde à memória relatada em uso que o Monitor do Sistema está relatando (está ignorando os buffers / armazenados em cache porque eles irão embora para liberar espaço para mais processos).

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

    
por Kees Cook 27.10.2010 / 08:36
0

Quando recebi minha mão no monitor do sistema, o uso de memória relatado na guia "Recursos" era o mesmo que a coluna free em /usr/bin/free .

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

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

Eu sei, isso é um pouco enganador, porque a maioria (l) dos usuários não entende que a memória física livre é um desperdício de dinheiro e desempenho. Enfrentei o mesmo problema no trabalho: em todas as segundas-feiras, os servidores reinicializavam e, nas próximas 24 horas, todos os servidores disparavam um alerta de "memória cheia". Então eu tive a computação de memória livre fixada no software de supervisão, assim como no monitor do sistema.

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

    
por Benoît 31.01.2011 / 11:37