top's página de manual não descreve os campos, mas free' s faz:
tampões
Memória usada pelos buffers do kernel ( Buffersin /proc/meminfo)
cache
Memória usada pelo cache da página e pelas lajes ( Cachede
SReclaimabledentro /proc/meminfo)
buff / cache
Soma de buffers e cache
acessível
Estimativa da quantidade de memória disponível para iniciar novos aplicativos, sem troca. Ao contrário dos dados fornecidos pelos campos de cache ou livres, este campo leva em cache de página conta e também que nem todas as placas de memória recuperável será recuperada devido a itens que estão sendo em uso ( MemAvailableno
/proc/meminfo, disponível em kernels 3,14, emulados em kernels 2.6.27+ , caso contrário, o mesmo que grátis)
Basicamente, o "buff / cache" conta a memória usada para os dados que estão no disco ou deve terminar lá em breve e, como resultado, é potencialmente utilizável (a memória correspondente pode ser disponibilizada imediatamente, no caso de cache, ou com tempo suficiente, no caso de buffers - estes últimos devem permanecer pequenos de qualquer maneira); “Disponível” mede a quantidade de memória que pode ser alocada e usada sem causar mais trocas (consulte Como posso obter a quantidade de memória disponível de forma portável nas distribuições? Para muito mais detalhes).
Buffers / cache não são disponibilizados com tempo suficiente ; são segmentos de memória que estão disponíveis imediatamente, caso algum programa exija a alocação de alguma memória. Veja também linuxatemyram.com
DopeGhoti 5/17/17
4
Apenas para esclarecer um pouco, os buffers se referem aos dados que estão sendo gravados - que a memória não pode ser recuperada até que a gravação seja concluída.
O cache se refere aos dados que foram lidos - eles são mantidos por aí, caso precisem ser lidos novamente, mas podem ser recuperados imediatamente, pois sempre podem ser lidos novamente a partir do disco.
Isso não é realmente o que significa aqui. /proc/meminfotem um campo para Writebackespecificamente. Há um campo separado Buffers, e é isso que é mostrado como buffersem free -w. Um motivo comum para Bufferso uso da memória é mostrado aqui: " 30% da RAM são" buffers ". O que é isso? "
sourcejedi
A partir disso ( access.redhat.com/solutions/406773 ), entendo que o Writeback é a parte dos buffers que ainda não foi gravada no disco. Ou você está dizendo outra coisa?
WallStProg
Essa descrição seria enganosa. Buffersé (agora) uma parte do cache da página; não é contado Cached, mas é contado como parte de Active(file) + Inactive(file). Veja comentários sobre a resposta de Stephen Kitt. Dirtyé a parte do cache da página que foi gravada e, portanto, precisa ser gravada novamente no disco. Writebacknão incluiDirty . Portanto, Writebacknão é uma parte do valor de Buffers.
sourcejedi 15/02
O que Buffersrealmente significa é o cache da página associado ao dispositivo de bloco. Alguns sistemas de arquivos usam isso internamente; outros não o usam. / vai corrigir minha resposta na pergunta "30% da minha RAM são buffers".
Buffers : o armazenamento relativamente temporário de blocos de disco bruto não deve ser muito grande (cerca de 20 MB) em
cache : cache na memória para arquivos lidos no disco (o cache da página). Não inclui SwapCached.
Você também pode encontrar mais alguns detalhes aqui .
O cache de página do Linux ("em cache :" do meminfo) é o maior consumidor único de RAM na maioria dos sistemas. Sempre que você faz uma leitura () de um arquivo no disco, esses dados são lidos na memória e vão para o cache da página (1).
O cache do buffer (" Buffers :" no meminfo) é um close relativo aos caches de dentry / inode.
Apenas para esclarecer um pouco, os buffers se referem aos dados que estão sendo gravados - que a memória não pode ser recuperada até que a gravação seja concluída.
O cache se refere aos dados que foram lidos - eles são mantidos por aí, caso precisem ser lidos novamente, mas podem ser recuperados imediatamente, pois sempre podem ser lidos novamente a partir do disco.
fonte
/proc/meminfo
tem um campo paraWriteback
especificamente. Há um campo separadoBuffers
, e é isso que é mostrado comobuffers
emfree -w
. Um motivo comum paraBuffers
o uso da memória é mostrado aqui: " 30% da RAM são" buffers ". O que é isso? "Buffers
é (agora) uma parte do cache da página; não é contadoCached
, mas é contado como parte deActive(file) + Inactive(file)
. Veja comentários sobre a resposta de Stephen Kitt.Dirty
é a parte do cache da página que foi gravada e, portanto, precisa ser gravada novamente no disco.Writeback
não incluiDirty
. Portanto,Writeback
não é uma parte do valor deBuffers
.Buffers
realmente significa é o cache da página associado ao dispositivo de bloco. Alguns sistemas de arquivos usam isso internamente; outros não o usam. / vai corrigir minha resposta na pergunta "30% da minha RAM são buffers".A fonte canônica dessas informações é /usr/src/linux/Documentation/filesystems/proc.txt
Você também pode encontrar mais alguns detalhes aqui .
Ou analise o código fonte como este .
A quantidade de
buffers
é o valor de retorno da funçãonr_blockdev_pages(void)
A quantidade de
cached
:fonte