3

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

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

想象一个场景,你在 X 上有两个并发线程。

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

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

或者

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

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

我的问题特定于 Microsoft Networks 或 NFS 等 Windows 支持的远程文件系统

4

1 回答 1

0

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

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

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

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

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

于 2013-09-30T18:52:50.500 回答