Eu tenho a seguinte configuração:
C:\
C:\Users\Database User\Documents e Z:\ adicionalmente Em um sub-subdiretório de C:\Users\Database User\Documents , eu tenho cerca de 50.000 arquivos com cerca de 2 KB, em média, em cerca de 10 subdiretórios. (Um banco de dados de coluna bcolz.)
Com os pontos de junção NTFS de unidade cruzada, encontro grandes discrepâncias de desempenho, dependendo se o IO de um arquivo de processo está direcionado ao diretório de trabalho (ou a um subdiretório dele) ou a qualquer outro diretório.
Abaixo da junção NTFS, o desempenho aceitável é alcançado apenas no diretório de trabalho dos processos ou em um subdiretório do diretório de trabalho:
Diretório de trabalho C:\Users\Database User\Documents\abc\def : executar rmdir /Q /S mydata.bcolz é uma operação de limite de E / S (com limite de disco)
Diretório de trabalho C:\Users\Database User\Documents\abc : executar rmdir /Q /S def\mydata.bcolz é uma operação de limite de E / S (com limite de disco)
Diretório de trabalho C:\Users\Database User\Documents\abc\def\xyz : executar rmdir /Q /S ..\mydata.bcolz é uma operação vinculada à CPU
Nos dois primeiros casos, o processo cmd.exe dificilmente consome qualquer tempo de CPU, enquanto no segundo ele consome 100% de um núcleo. A operação é idêntica nos três casos. Apenas os diretórios de trabalho são diferentes.
Mas note:
Z:\abc\def\xyz : executar rmdir /Q /S ..\mydata.bcolz é novamente uma operação de limite de E / S! Esse fenômeno ocorre com qualquer arquivo IO rápido com um número muito grande de arquivos muito pequenos. Não está limitado a rmdir ou cmd.exe . O exemplo acima é apenas para ilustração.
Alguma ideia do que está acontecendo e como consertá-lo?