Este não é realmente um grande problema com sistemas de arquivos mais recentes como XFS e ext4, mas em sistemas de arquivos mais antigos ou mal configurados pode ser um problema sério.
Com sistemas de arquivos Linux mais antigos, como o ext3, um diretório é apenas uma lista de arquivos não ordenada .
A desordem é importante, porque significa que a única maneira de o sistema localizar um arquivo em um diretório é pesquisá-lo do começo ao fim.
Se um diretório contiver 3.000 arquivos, será necessária uma média de 1.500 comparações para localizar um arquivo aleatório no diretório. Mas se o diretório contiver 300.000 arquivos, será necessária uma média de 150.000 comparações para encontrar um arquivo aleatório nesse diretório.
Em ambos os casos, se a entrada de diretório já não estiver armazenada em cache na RAM, ela deverá ser carregada do disco, o que adicionaria uma quantidade significativa de tempo ao acesso ao arquivo, proporcional ao tamanho do diretório. Obviamente, um pequeno dentry pode ser carregado mais rápido que um grande.
Assim, é muito mais rápido quando você usa uma estrutura de diretórios mais hierárquica para separar grandes números de arquivos em diretórios exclusivos.
O XFS não sofre com esse problema, pois usa uma tabela de hash para entradas de diretório de pesquisa. Assim, ele pode manipular um diretório com centenas de milhares de arquivos quase tão facilmente quanto um diretório com um arquivo. Mas ainda tem a penalidade de precisar carregar a estrutura de dados maior do disco. Se você tem RAM suficiente no sistema, isso não é realmente um problema prático.
O Ext4 também usa um índice de diretório hash.