Por que o cache de inode é necessário?

2

Estou confuso porque todas as dentries têm ponteiros para objetos inode. Tanto quanto eu sei, você sempre olha através de dentries para encontrar o seu inode. Então, por que há um cache de inode?

    
por CuriousKimchi 02.01.2017 / 09:24

2 respostas

1

Você está perguntando sobre o cache de inodes implementado como parte do Linux Virtual File System (VFS). Caches, incluindo o cache de inode, não são usados apenas para fornecer funcionalidade, como acessar entradas de inode, pois há outros mecanismos para isso, como você aponta.

Os caches podem ser usados para melhorar o desempenho e, neste caso, procurar dados inode de um dispositivo io como um disco é muito lento, portanto, armazenar dados inode acessados anteriormente na memória torna o acesso ao sistema de arquivos muito mais rápido.

    
por 02.01.2017 / 10:28
1

Entradas de diretório e inodes são objetos diferentes, então eles obtêm caches separados: o cache dentry em dcache.c , o cache de inode em inode_hashtable in inode.c . Mas o cache do inode é um escravo do dcache:

The dcache is a master of the icache — whenever a dcache entry exists, the inode will always exist.

Como você já deve saber, o objetivo desses caches é aumentar o desempenho e evitar acessos constantes ao disco, especialmente para o inode, que pode ser atualizado muitas vezes enquanto o arquivo está aberto.

    
por 02.01.2017 / 10:30

Tags