Por que demora mais para adicionar novos arquivos a um diretório que possui um grande número de arquivos?

1

Em 2011, tivemos um problema peculiar.

Notamos que a ferramenta de processamento de um de nossos clientes estava demorando muito tempo processando ~ 20000 p / hr. Como precisávamos processar mais de 3 milhões de arquivos por mês, possivelmente em um período de três dias, isso era um problema para nós.

Também notamos que esse não era um problema de utilização da CPU, que era de cerca de 10%. Essa ferramenta é usada para gravar os arquivos em uma pasta nomeada pelo código abreviado da área (por exemplo, DEL para Delhi). Uma pasta poderia, eventualmente, conter entre 5.000 a 200.000 arquivos depois que o trabalho de processamento terminasse.

Também observamos que, embora os arquivos estivessem sendo gravados em uma pasta, se removêssemos os arquivos que foram gravados anteriormente para essa pasta (quando > ~ 10000) em uma subpasta, isso acelerou consideravelmente o trabalho.

Eventualmente, o problema foi resolvido quando nosso fornecedor de ferramentas modificou a ferramenta para gravar arquivos em pastas nomeadas por código postal dentro da pasta com o nome do código de área (DEL / 110012 e assim por diante). Cada uma dessas pastas agora continha até um máximo de aproximadamente 2000 arquivos.

Editar 1: O sistema operacional usado foi o HP-UX. Editar 2: tamanho médio do arquivo no intervalo de 25 a 50 KB.

Então, por que demora mais para adicionar novos arquivos a um diretório com um grande número de arquivos?

    
por SidK 01.05.2018 / 10:19

1 resposta

0

Se houver muitos arquivos, há mais para pesquisar / misturar ao adicionar um novo arquivo. Uma maneira de contornar isso é particionar o diretório, ou seja, criar subdiretórios para o primeiro caractere do nome (ou por aí, o git (1) usa os dois primeiros dígitos hexadecimais do hash do objeto que ele usa como nome do arquivo; primeira letra em minúsculas).

    
por 17.05.2018 / 19:53