O que é a coluna de buffers na saída de livre?

3

Estes questions lista brevemente o formato do comando free, observando que buffers é a memória do kernel que deve ser gravada no disco e o cache é um arquivo de dados que não precisa ser gravado em disco .

No meu sistema, diferentemente da maioria das vezes em que corro livremente, os buffers ocupam mais de 10% da RAM. Normalmente, os buffers são um valor pequeno, quase simbólico.

Minha pergunta é: o que exatamente está na área chamada buffers? Posso procurá-lo com lsof ? Consiste em regiões de arquivos abertos que não foram liberados? São regiões de arquivos mapeadas na memória? O que é isso?

O sistema roda bem e pouca troca é usada, então o desempenho é bom.

    
por casualunixer 18.03.2012 / 02:47

2 respostas

5

free extrai seus dados de /proc/meminfo

slkwr133701:/usr/src/linux # free

             total       used       free     shared    buffers     cached
Mem:       2053456     434572    1618884          0      77888     201820

slkwr133701:/usr/src/linux # cat /proc/meminfo

MemTotal:        2053456 kB
MemFree:         1618736 kB
Buffers:           77928 kB
....

Refere-se à memória usada para armazenamento de E / S de bloco temporário. O kernel tem que atribuir e liberar constantemente as mesmas unidades de tamanho, como transferências de E / S de bloco, pacotes de rede e buffers de soquete

Você pode ver melhor os caches e as alocações de buffer executando slabtop

Em resposta à sua pergunta de uso: O sistema normalmente aloca mais blocos do que o necessário, mas à medida que a "pressão da memória" aumenta, esses blocos adicionais serão liberados.

    
por 18.03.2012 / 03:55
1

Metadados mais prováveis do sistema de arquivos, incluindo o conteúdo do diretório. Esse uso do cache "buffer" depende do sistema de arquivos, mas eu suponho que você esteja usando ext3 ou ext4.

Como sugerido na outra resposta, acho que o cache do buffer deve ser totalmente recuperável sob a pressão da memória, exatamente da mesma maneira que o cache da página (coluna "cache").

Notei que "buffers" podem parecer altos, quando eu tenho sistemas de arquivos com diários JBD / JBD2 e a máquina tem uma quantidade relativamente pequena de RAM. As gravações no diário passam pelo cache do buffer. Talvez sua configuração seja semelhante à minha.

Link: 30% da RAM é "buffers". O que é isso?

link

On Sun, Feb 17, 2013 at 11:25:39AM +0100, Martin Steigerwald wrote:

What I never really understand was what is the clear distinction between dirty pages and disk block buffers. Why isn´t anything that is about to be written to disk in one cache?

     

O cache do buffer é indexado pelo número do bloco físico e cada buffer   no cache de buffer é o tamanho do tamanho do bloco usado para E / S para o   dispositivo.

     

O cache da página é indexado por e cada página   é o tamanho de uma página de VM (por exemplo, 4k para sistemas x86, 16k para Power   sistemas, etc.)

     

Certos sistemas de arquivos, incluindo ext3, ext4 e ocfs2, usam o jbd ou   jbd2 camada para lidar com o seu diário de bloco físico, e esta camada   fundamentalmente usa o cache de buffer, uma vez que está preocupado com   controlando quando blocos de sistema de arquivos específicos são permitidos   escrito de volta para o disco rígido.

     

Outros sistemas de arquivos podem não suportar blocos do sistema de arquivos menores que 4k.   Isso pode facilitar o uso do cache de páginas para   blocos de metadados, embora eu não saiba o que acontece se você tentar   montar um sistema de arquivos btrfs formatado com blocos de 4k em uma arquitetura   como Power, que tem 16k páginas. Não sei se vai funcionar, ou   explodir em uma espetacular exibição de faíscas. : -)

     

Na prática, isso realmente não importa. O armazenamento de dados real para   o cache de buffer (ou seja, onde o campo b_data aponta para a estrutura   buffer_head) está, na verdade, no cache de páginas, portanto, de um espaço   perspectiva não importa realmente. Sistemas de arquivos como ext3 e ext4   que usam o cache de buffer para blocos de metadados precisa ser cuidadoso do que   quando um diretório (que é metadados) é excluído, que os blocos em   o cache de buffer são zapped de modo que se o espaço no disco é reutilizado por   arquivo de dados (que é armazenado em cache no cache da página), que as entradas obsoletas   no cache de buffer não corre o risco de ser gravado de volta no disco.   Mas isso é apenas um pequeno detalhe de implementação ...

     

- Ted

    
por 28.04.2018 / 12:44