Como o número de arquivos na mesma pasta afeta o desempenho de E / S em um sistema de arquivos ext4?

0

Estou usando o Gabinete Kyoto (um armazenamento de valor-chave) para meu projeto. O tipo específico de DB que estou usando é DirDB que cria muitos arquivos em um diretório para armazenar a chave pares de valor. O servidor em que estou executando este projeto tem o sistema de arquivos ext4. O problema que estou encontrando é que a latência de E / S aumenta à medida que o número de arquivos no diretório aumenta. Além disso, quando o diretório tem muitos arquivos (digamos, mais de 1 milhão de arquivos), quando eu tento excluir a pasta inteira, demora uma eternidade (já mais de 5 horas e ainda em execução). Alguém pode explicar por que a latência de E / S aumenta à medida que o número de arquivos aumenta e por que o rm leva uma eternidade para excluir a pasta?

    
por Awaken 09.06.2013 / 05:20

1 resposta

0

O exemplo mais simples de atrasos é que, obviamente, o tempo para listar o diretório inteiro varia de acordo com o tamanho do diretório.

Em segundo lugar, dependendo das configurações do sistema de arquivos, o ext4 usa listas vinculadas ou uma b-árvore com hash para pesquisas de diretório. Você só precisa pesquisar como essas duas estruturas de dados funcionam para ter uma ideia das diferenças que a configuração incorreta pode fazer. A versão curta é que as listas encadeadas são muito lentas e adequadas apenas para diretórios pequenos, enquanto que os hashes são muito mais rápidos e muito mais adequados para grandes diretórios.

Processar uma lista encadeada significa passar por todos os itens da lista, porque, na maioria das vezes, apenas o item n-1 sabe onde o item n está, portanto você deve ler o item n primeiro.

O processamento de uma árvore de hash envolve calcular um número na memória e saltar diretamente para detalhes com base nesse número. Embora possa ter que fazer isso algumas vezes para diretórios grandes, é muito mais rápido do que processar todos os nós.

De qualquer forma, se você realmente quer entender os detalhes, toda a documentação está disponível online. Você poderia começar aqui, por exemplo: link

    
por 09.06.2013 / 19:46