Проблемы с производительностью в перекрестных переходах NTFS

У меня есть следующие настройки:

  • Windows 8.1 32-битная
  • Диск 0: системный диск, SSD, NTFS, смонтированный на C:\
  • Диск 1: диск с данными, магнитный жесткий диск, NTFS, смонтированный на C:\Users\Database User\Documents а также Z:\ дополнительно

В под-подкаталоге C:\Users\Database User\Documents У меня около 50 000 файлов размером около 2 КБ в среднем в 10 подкаталогах. (База данных столбца bcolz.)

С точками соединения NTFS между приводами я обнаружил огромные расхождения в производительности в зависимости от того, нацелен ли файловый IO процесса на его рабочий каталог (или его подкаталог) или любой другой каталог.

Ниже места соединения NTFS приемлемая производительность достигается только в рабочем каталоге процессов или подкаталоге рабочего каталога:

  • Рабочий каталог C:\Users\Database User\Documents\abc\def: выполнение rmdir /Q /S mydata.bcolz это операция ввода-вывода (связанная с диском)

  • Рабочий каталог C:\Users\Database User\Documents\abc: выполнение rmdir /Q /S def\mydata.bcolz это операция ввода-вывода (связанная с диском)

  • Рабочий каталог C:\Users\Database User\Documents\abc\def\xyz: выполнение rmdir /Q /S ..\mydata.bcolz это операция с процессором

В первых двух случаях процесс cmd.exe практически не потребляет процессорного времени, тогда как в последнем он потребляет 100% одного ядра. Операция идентична во всех трех случаях. Только рабочие каталоги отличаются.

Но обратите внимание:

  • Рабочий каталог Z:\abc\def\xyz: выполнение rmdir /Q /S ..\mydata.bcolz снова операция, связанная с IO!

Это явление происходит с любым быстрым файловым вводом-выводом с очень большим количеством очень маленьких файлов. Это не ограничено rmdir или же cmd.exe, Приведенный выше пример только для иллюстрации.

Есть идеи, что происходит и как это исправить?

0 ответов

Другие вопросы по тегам