跨驱动NTFS连接的性能问题

我有以下设置:

  • Windows 8.1 32位
  • 驱动器0:系统驱动器,SSD,NTFS,安装在C:\
  • 驱动器1:数据驱动器,磁盘驱动器,NTFS,另外安装在C:\Users\Database User\DocumentsZ:\

C:\Users\Database User\Documents的子子目录中,我有大约5万个文件,平均约10KB的子目录大约2KB。 (一个bcolz列数据库。)

对于跨驱动NTFS交接点,根据进程的文件IO是以其工作目录(或其子目录)还是任何其他目录为目标,我发现性能差异很大。

在NTFS交汇点下方,可接受的性能只能在进程的工作目录或工作目录的子目录中实现:

  • 工作目录C:\Users\Database User\Documents\abc\def :执行rmdir /Q /S mydata.bcolz是一个IO绑定(磁盘绑定)操作

  • 工作目录C:\Users\Database User\Documents\abc :执行rmdir /Q /S def\mydata.bcolz是一个IO绑定(Disk bound)操作

  • 工作目录C:\Users\Database User\Documents\abc\def\xyz :正在执行rmdir /Q /S ..\mydata.bcolz是一个CPU绑定操作

在前两种情况下,cmd.exe进程几乎不消耗任何CPU时间,而后者则占用一个核心的100%。 这三种情况的操作都是相同的。 只有工作目录不同。

但请注意:

  • 工作目录Z:\abc\def\xyz :正在执行rmdir /Q /S ..\mydata.bcolz又是一个IO绑定操作!

这种现象发生在有很多非常小的文件的任何快速文件IO上。 它不限于rmdircmd.exe 。 上面的例子只是为了说明。

任何想法是怎么回事,如何解决它?