Existem alguns fatores que contribuem aqui.
-
Obter uma lista de todos os nomes de arquivos em um diretório requer a decodificação, análise e descriptografia dos nomes de arquivos inferiores.
-
As chamadas stat () de du causa uma pesquisa, que requer alocar um inode eCryptfs, ler parte dos metadados de arquivo inferiores, verificar se ele é um arquivo eCryptfs e depois analisar o tamanho do arquivo não criptografado para defina o campo i_size do inode do eCryptfs. Tenha em mente que ler os metadados do sistema de arquivos inferior envolve a leitura de uma página no cache de páginas do sistema de arquivos inferior.
Por causa do design do eCryptfs, ele tem uma sobrecarga infeliz ao lidar com um grande número de arquivos. Tenho certeza de que há algumas melhorias / aprimoramentos a serem feitos, apesar do design, mas otimizar essa parte do código não tem sido um foco meu anteriormente.