Problemas de desempenho com junções NTFS de unidade cruzada

2

Eu tenho a seguinte configuração:

  • Windows 8.1 de 32 bits
  • Unidade 0: unidade do sistema, SSD, NTFS, montado em C:\
  • Unidade 1: unidade de dados, disco rígido magnético, NTFS, montado em 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:

  • Diretório de trabalho 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?

    
por ARF 30.01.2015 / 14:27

0 respostas