Por que ls e mkdir demoram muito, embora existam apenas alguns arquivos no diretório de trabalho?

Por que ls e mkdir demoram muito, embora existam apenas alguns arquivos no diretório de trabalho?

Eu escrevi muitos arquivos em um sistema de arquivos de rede; Ele é escrito em uma estrutura de diretórios de forma que cada diretório folha na estrutura de diretórios tenha alguns (cerca de mil) arquivos. A parte da estrutura de diretórios que contém os arquivos relevantes é bastante plana.

Se eu executar ls ou mkdir foo, a operação correspondente demorará muito (cerca de 10 minutos).

Por que isso está acontecendo? Como posso executar operações como ls ou mkdir de maneira mais eficiente em termos de tempo?

Responder1

Você está usando um sistema de arquivos de rede, portanto sua velocidade pode ser limitada pela rede e não pelo disco.

Ao executar o ls, a operação básica é ler todos os arquivos, classificá-los e depois imprimi-los. Isso significa que cada um lsprecisará ler vários milhares de entradas de arquivo. O cache pode ajudar, mas ainda é um processo lento.

Da mesma forma, quando você executa mkdiro diretório precisa ser verificado, certifique-se de que ainda não o possui.

Uma solução seria reduzir o número de arquivos por diretório, tornando a estruturaestreito e profundoem vez dissoraso e largo.

informação relacionada