Meu laptop tende a ser executado com cerca de 256MB contados como "Buffers" - em /proc/meminfo
e free -w -h
- em cerca de 8 GB de RAM.
Estou interessado no uso da memória. Eu às vezes tenho problemas em usar demais. Não estou preocupado com o uso de 256MB de "Buffers", mas estou curioso.
Eu tenho trabalhado em qual software o usa, e o uso parece ser (quase inteiramente?) desnecessário 8-). Eu tenho dois sistemas de arquivos ext4 montados, cada um com um tamanho de diário de 128MB. O uso de 256MB "Buffers" é basicamente todas as gravações em cache do ext4 revistas .
Não vejo necessidade de armazenar em cache todo o arquivo de diário de cada sistema de arquivos. (Na maioria das vezes, apenas uma pequena quantidade da revista terá "dados em tempo real" nela! Não estou usando data=journalled
). Estou interessado neste uso desnecessário de "Buffers". Eu entendo que pode haver outros usos e alguns deles podem ser mais necessários. Por exemplo. Por tudo o que sei, pode ser útil colocar em cache a parte da revista que faz detém atualmente dados em direto.
Quando eu estava investigando, notei que "Buffers" eram 30% da RAM física em um sistema menor!
A minha pergunta é: quão bem o Linux faz questão de descartar a maior parte desses "Buffers" desnecessários, quando a memória é solicitada para qualquer outra finalidade, inclusive para cache de páginas? Por favor, cite a evidência de que suas crenças são baseadas em.
Eu não estou especificamente interessado em diferenças históricas, apenas o comportamento de um sistema "atual". Se você estiver interessado, meu laptop está atualmente executando o Fedora 28, versão do kernel 4.18.16-200.fc28.x86_64. (Ou o sistema menor está executando o Debian 9, versão do kernel 4.9.0-8-marvell).
Sinto-me mais familiarizado com a ideia do cache de páginas - Cached
in /proc/meminfo
e free -w -h
- do que com o comportamento de "Buffers".
Recentemente, li novamente este tópico: Quais algoritmos de substituição de página são usados no kernel Linux para cache de arquivos do SO?
Acessos a páginas de arquivos não armazenados em cache, por exemplo as leituras e gravações ao copiar um arquivo não armazenado em cache são armazenadas em cache na lista LRU "inativa". Ao recuperar a memória do cache de páginas, o kernel prefere começar com as páginas "inativas" que foram usadas menos recentemente. Ele prefere isso nas páginas "ativas", que são páginas que foram acessadas mais de uma vez, mesmo que sejam mais antigas.
Em particular, observe que isso permite que você execute uma cópia de arquivo arbitrariamente grande, sem trocar todos os seus programas em execução. Todas as páginas de memória importantes de seus programas em execução estão na lista "ativa", porque as páginas importantes terão sido acessadas mais de uma vez.
Esta é uma primeira aproximação às complexidades do gerenciamento de memória do Linux. Eu uso algumas palavras vagas como "prefere" aqui, porque eu não sou um especialista nessas complexidades.
Idealmente , gostaria que qualquer "Buffers" desnecessário fosse recuperado primeiro, antes de recuperar qualquer cache de página. (No caso de você contar "Buffers" como parte do cache de páginas, você deve entender que eu gostaria que quaisquer "Buffers" desnecessários fossem recuperados antes de quaisquer arquivos regulares armazenados em cache).
Então estou curioso. Os "Buffers" desnecessários serão recuperados antes de qualquer cache de página "inativo"? Ou posso apenas dizer que eles tendem a ser recuperados antes do cache de páginas "ativo"? Ou há mais detalhes que devem ser explicados antes que possamos fazer qualquer comparação com o cache de páginas?