Eu estou olhando para esta configuração:
- Windows Server 2012
- Unidade NTFS de 1 TB, clusters de 4 KB, ~ 90% cheios
- ~ 10 milhões de arquivos armazenados em 10.000 pastas = ~ 1.000 arquivos / pasta
- Arquivos geralmente muito pequenos <50 KB
- Unidade virtual hospedada na matriz de disco
Quando um aplicativo acessa arquivos armazenados em pastas aleatórias, leva de 60 a 100 ms para ler cada arquivo. Com uma ferramenta de teste, parece que o atraso ocorre ao abrir o arquivo. A leitura dos dados leva apenas uma fração do tempo.
Em resumo, isso significa que a leitura de 50 arquivos pode levar de 3 a 4 segundos, o que é muito mais do que o esperado. A gravação é feita em lote, portanto o desempenho não é um problema aqui.
Eu já segui conselhos sobre SO e SF para chegar a esses números.
- Usando pastas para reduzir o número de arquivos por pasta ( Armazenando um milhão de imagens no sistema de arquivos )
- Execute
contig
para desfragmentar pastas e arquivos ( /programming//a/291292/1059776 ) - 8.3 nomes e hora do último acesso desativados ( Configurando o sistema de arquivos NTFS para desempenho )
O que fazer com os tempos de leitura?
- Considere 60-100 ms por arquivo como ok (não é, não é?)
- Alguma idéia de como a configuração pode ser melhorada?
- Existem ferramentas de monitoramento de baixo nível que podem dizer exatamente quanto tempo é gasto?
ATUALIZAR
Conforme mencionado nos comentários, o sistema executa o Symantec Endpoint Protection. No entanto, desativá-lo não altera os tempos de leitura.
O PerfMon mede 10 a 20 ms por leitura. Isso significaria que qualquer leitura de arquivo leva ~ 6 operações de leitura de E / S, certo? Seriam as pesquisas de MFT e ACL?
O MFT tem um tamanho de ~ 8,5 GB, que é mais do que a memória principal.