Temos um processo de servidor Linux que grava alguns milhares de arquivos em um diretório, exclui os arquivos e, em seguida, grava mais alguns milhares de arquivos no mesmo diretório sem excluir o diretório. O que estou começando a ver é que o processo de escrita está ficando cada vez mais lento.
Minha pergunta é a seguinte: O tamanho do diretório da pasta cresceu de 4.096 para mais de 200.000, como pode ser visto nesta saída de ls -l.
root@ad57rs0b# ls -l 15000PN5AIA3I6_B total 232 drwxr-xr-x 2 chef chef 233472 30 de maio 21:35 códigos de barras
No ext3, esses tamanhos grandes de diretório podem diminuir o desempenho?
Obrigado.
Aarão
Responder1
Sim, diretórios grandes podem ser um problema. Geralmente é melhor evitá-los fazendo hash dos arquivos em subdiretórios. Se isso não for uma opção, existe um recurso ext3 que pode melhorar drasticamente o desempenho da pesquisa em diretórios grandes:
tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE
Isso permite hashes de árvore B de dados de índice de diretório, melhorando drasticamente o tempo de pesquisa. Claro, é possível que sua instalação já tenha isso habilitado. Você pode verificar executando este comando e procurando dir_index
na saída:
tune2fs -l /dev/$DEVICE | grep 'features:'
EDITAR:
Além disso, você pode considerar a configuração noatime
como uma opção de montagem. Não é um ajuste específico para diretórios grandes, mas pode oferecer melhorias consideráveis de desempenho sempre que houver muita atividade no sistema de arquivos.