在本地编写文件与远程文件系统?

时间:2013-05-05 08:22:26

标签: multithreading file-io filesystems nfs distributed-filesystem

我的问题是Windows上的远程文件系统。

假设你有工作站X可以访问网络上的文件系统 - 比如 - \\ServerY\MYDir\

想象一下你在X上有两个同步线程的场景。

  1. 线程1正在将文件写入X中的本地硬盘驱动器目录 - C:\MYDir\
  2. 线程2正在\\ServerY\MYDir\
  3. 中写入远程文件

    我想知道这两个IO操作实际上是独立的,即线程1仅使用X的硬盘控制器而线程2仅使用网络并将所有数据传递给线路上的服务器,其中实际上写入了服务器上的硬盘驱动器。

    或者

    线程2是否也在X中创建了一些本地缓存数据(因此在X上使用硬盘控制器)。在这种情况下,线程2的IO操作可能会干扰thread1的操作,这可能会导致性能损失。

    基本上 - 在本地文件和远程文件上并行写入会有什么好处吗?

    我的问题特定于Windows网络支持的远程文件系统,如Microsoft网络或NFS

1 个答案:

答案 0 :(得分:0)

通常,Thread2不会在本地缓存写入,并且两个线程是独立的。 所以一般来说,是的,你会看到同时访问这两个文件带来的性能优势。

您通常也会看到访问位于不同磁盘上的两个本地文件的性能优势 - 即使它们位于同一个控制器上。

即使文件位于同一磁盘上,您也经常可以看到性能优势,因为这样可以让磁盘保持忙碌状态 - 但为了避免颠倒,您需要在大块中执行IO。 如果本地驱动器是闪存然后没有寻道时间,那么读取/写入多个线程并不会像在硬盘驱动器上那样降低性能。

可能会影响这一点的一些事情: 1:Windows支持“脱机文件”,允许客户端缓存远程文件系统的文件,在本地驱动器上进行读写。过去,当客户端只在离线时使用本地缓存时。我不知道Win8是否改变了这一点。

2:“\ ServerY”实际上可能是指本地机器。