Quanto tempo as dentárias permanecem no dcache?

4

No Linux, quando eu crio um novo arquivo e o abro, uma entrada sobre ele é criada na tabela de hash do dcache, certo? Quanto tempo essa entrada fica lá? Será removido quando nada mais estiver usando o arquivo ou ficará lá até que o cache esteja cheio e o kernel decida remover coisas dele para criar espaço para novas entradas de dcache?

Se este for o caso, exatamente como o kernel determina quais entradas remover quando o dcache está cheio?

(Referências à fonte do kernel seria legal.)

    
por thejh 31.01.2014 / 17:56

1 resposta

3

Q1: On Linux, when I create a new file and open it, an entry about it is created in the dcache's hash table, right?

Correto.

Q2: How long does that entry stay there?

Até que o espaço que eles ocupam seja necessário para algum outro propósito.

Q3: If the latter is the case, how exactly does the kernel determine which entries to remove when the dcache is full?

A partir da documentação do kernel do Linux em memória virtual (VM) :

trecho

vfs_cache_pressure

Controls the tendency of the kernel to reclaim the memory which is used for caching of directory and inode objects.

At the default value of vfs_cache_pressure=100 the kernel will attempt to reclaim dentries and inodes at a "fair" rate with respect to pagecache and swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer to retain dentry and inode caches. When vfs_cache_pressure=0, the kernel will never reclaim dentries and inodes due to memory pressure and this can easily lead to out-of-memory conditions. Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes.

Então, para responder à sua pergunta geral, dentries permanecerá em cache até que o espaço ocupado por eles seja necessário por outra coisa

Notas adicionais

Essa filosofia é permeada por todo o kernel. Não há razão para liberar memória RAM, até que seja uma necessidade real de fazê-lo. Se você gostaria de analisar o conteúdo do cache ou soltar as dentries, dê uma olhada em seu Q & A intitulado: Existe alguma maneira ou ferramentas para despejar o cache de memória e buffer? .

    
por 01.02.2014 / 02:28