3

我的问题是关于Windows上的远程文件系统。本地写文件与远程文件系统?

假设您的工作站X有权访问网络上的文件系统 - 比如说说\\ServerY\MYDir\

试想一下,你有十两个同步线程

  1. 线程1在X写入文件到本地硬盘目录中的场景 - C:\MYDir\
  2. 线程2正在写入\\ServerY\MYDir\的远程文件。

我想知道这两个IO操作实际上是独立的,也就是说线程1只使用X的硬盘控制器,而线程2只使用网络并将所有数据传递到服务器上,其实是写到serverY上的硬盘上。

或者

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

基本上 - 在写本地文件和写在远程文件上会有什么收获?

我的问题是具体由像微软网络或Windows NFS支持远程文件系统

回答

0

通常线程2将不缓存写入本地和两个线程是独立的。 因此,一般来说,您会看到同时访问这两个文件的性能优势。

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

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

有几件事会影响到这一点: 1:Windows支持允许客户端缓存远程文件系统的文件的“脱机文件”,这两个文件都可以在本地驱动器上读写。它曾经是当客户端在离线时只使用本地缓存。我不知道Win8是否会改变这一点。

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