【问题标题】:Writing files locally vs. remote file system?在本地写入文件与远程文件系统?
【发布时间】:2013-05-05 08:22:25
【问题描述】:

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

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

假设您在 X 上有两个同时线程。

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

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

或者

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

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

我的问题是针对微软网络或 NFS 等 Windows 支持的远程文件系统

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2017-06-08
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多