技术说明

技术说明

今天我第一次体验了令人震撼的千兆网络,我的 2011 MacMini 与 Windows 8 Pro 台式机通过 Cat.5e 连接到 Linksys WRT320N(支持 dd-WRT)。

在确保两个系统的线路速度都显示为 1Gbps 后,我开始将 2.4GB MP4 从 Mini 复制到 Win 8 桌面(SMB 共享)。虽然对 Teracopy 显示的 30-34 MB/s 感到满意(对我来说,这是从 10 MB/s 的适当提升),但我仍然对广告和实际速度之间的巨大差异感到好奇。

在 Google 上搜索了 2 个小时后,我相信还有其他因素导致速度变慢,SMB 就是其中之一。因此,为了测试,我对两个系统都进行了 iPerf 测试,猜猜结果如何 - 两个系统的速度都在 875mbps 左右!

然后我偶然发现这条小信息之后我关闭了 Teracopy,并通过 Windows 8 的常规复印机复制了同一个文件。109 MB/s。熔化的大脑 :)

到底是什么原因造成的?我可以通过 Teracopy 启用这样的速度吗?我真的很喜欢 Teracopy 的额外功能,现在肯定会很想念它们 :D

答案1

通过千兆连接,Teracopy 的速度为 31MB/s,而 Windows 8 的速度仅为每秒约 109MB?

到底是什么原因造成的?我可以通过 Teracopy 启用这样的速度吗?我真的很喜欢 Teracopy 的额外功能,现在肯定会很想念它们 :D

两个词:确认缓存

技术说明

这是使用 Windows 资源管理器复制文件的一般过程:

  1. 将源驱动器中的一块数据读入内存
  2. 通过系统发送块
  3. 将块写入目标驱动器
  4. 如果尚未完成,请返回步骤 1

这看起来很简单也很简短。使用此传输算法,文件的每个字节仅被处理两次:一次读取,一次写入。

但除此之外,Windows 还使用内存(驱动器本身也是如此)来缓存一些数据。因此,它无需等待前一个块完成写入,进而正在读取下一个块,可以读取新的块尽管前一个文件仍在写入中。显然,这种情况不可能永远持续下去,但 Windows 可以使用所有剩余的可用内存作为临时缓冲区,以存储正在内存中读取的文件的大部分(如果不是全部)内容。

您可以通过将一个大文件(或包含大量文件的文件夹)从一个驱动器复制到另一个驱动器,然后立即比较两者来查看缓存的实际作用。比较结果如下很多此时的速度比稍后执行的速度要快,因为文件仍然在内存中,所以实际上并没有从驱动器中读取它们。

由于内存非常快,并且读取速度往往比写入速度稍快,因此最终的传输速率仅受目标驱动器的写入速度的限制。

Teracopy 可以执行两项操作来减慢文件传输速度,而 Explorer 不会执行这些操作:

  • 放弃缓存并直接从驱动器读取

  • 验证目的地是否正确写入

与 Explorer 不同,它只能在传输过程中检查基本错误,而 Teracopy 实际上可以验证数据是否正确写入目标驱动器,以防止由于传输介质(网络/驱动器电缆/等)或驱动器本身(坏扇区等)的问题而导致的数据损坏。这意味着它必须读取文件从目的地并将其与原文进行比较。

根据使用的算法和文件的大小,验证可以优化到最低(但不低于)驱动器对每个文件/文件块执行操作,而不是 Explorer 的两个操作:从源读取文件、将文件写入目标以及从目标读取文件。

看看当你使用 Teracopy(使用针对 HDD 优化的算法)复制文件时会发生什么:

  1. 从源驱动器读取一个块
  2. 对从源驱动器读取的块进行哈希处理
  3. 通过系统发送块
  4. 将其写入目标驱动器
  5. 清除缓存
  6. 从目标驱动器读回块
  7. 对目标驱动器中的块进行哈希处理
  8. 比较哈希值
  9. 确定下一步
    • 如果哈希值不匹配,则给出错误并提示用户采取行动
    • 如果哈希匹配但未完成,则返回步骤 1

问题是,如果您在传输过程中缓存文件,则比较将变得毫无用处,因为您不是在读取目标驱动器上的实际数据,而是在读取源中缓存在内存中的副本。因此,要正确验证,您必须清除缓存。这可以在每次读写后完成(对于任何大文件来说,这是一个额外的操作,最终都会被执行无数次),也可以只执行一次整个文件已传输。

根据下面的截图,TeraCopy 进行验证文件传输时,而不是传输过程中。这意味着它改用这种针对 CPU/RAM 优化的传输算法:

  1. 从源驱动器读取一个块
  2. 通过系统发送块
  3. 将其写入目标驱动器
  4. 如果尚未完成,请返回步骤 1
  5. 复制完成,清除缓存并进行验证
  6. 从源驱动器读取一个块
  7. 对目标驱动器中的块进行哈希处理
  8. 从目标驱动器读取一个块
  9. 对目标驱动器中的块进行哈希处理
  10. 比较哈希值
  11. 确定下一步
    • 如果哈希值不匹配,则给出错误并提示用户采取行动
    • 如果哈希匹配但未完成,则返回步骤 6

虽然这种算法对 CPU 和 RAM 的压力略小,但它也给驱动器带来了更大的压力,因为现在必须处理每个文件次:从源读取整个文件,将其写入目标,然后再次从源读取,再从目标读取。

(如果 TeraCopy 针对网络传输进行了优化,那么它可以避免第二次发送整个文件进行验证,而只发送小得多的哈希值,但目前似乎并非如此,网络驱动程序被视为与本地驱动器相同,因此它实际上重新读取源。)

默认情况下,TeraCopy 不会验证或使用缓存。不验证会加快传输速度(或者更准确地说,不慢将其关闭),但不使用缓存放慢速度。

应用

要确定具体的速度结果,您必须检查设置,看看是否更改了设置。然后,您可以尝试估算不同设置下的速度(请注意,它们可能会相互影响,因此这不是简单的加减问题)。

也就是说,让我们用您的数字做一个粗略的计算:

  • 本地文件传输:875Mbps(即驱动器速度)
  • 网络速度:1Gbps = 119.21 MBps
  • 通过 Windows 资源管理器复制:109MBps
  • 通过 TeraCopy 复制:34MBps

我们马上就发现 Explorer 的文件传输几乎占用了网络吞吐量的最大值。1Gbps 链接相当于 1,000,000,000每秒,二进制单位字节,为 119MBps。Explorer 的时钟速度为 109MBps,其余 10MBps(有趣的是,这是您之前的最大限度 :^Þ) 可以很容易地通过开销、背景负载和碎片来解释。

(由于传输速率几乎等于网络速度,我们可以推测 Explorer 的文件传输是单向的,并且每个文件只发送一份副本。)Explorer 每个文件两次访问的速度为 110MBps。

现在来说说 TeraCopy。看起来 TeraCopy 的速度几乎刚好是 Explorer 的三分之一。

根据其首选项对话框是否准确指示了其使用的算法,TeraCopy 实际上可能会发送整个源文件两次,以便检查副本。这会立即将吞吐量减半。如果缓存已打开,那么这也会降低速度,因为它必须等待每次写入完成后才能发送新的块。如果与验证相结合,速度可能会进一步降低。

如果您启用验证并关闭缓存,34MBps 的传输速率似乎是合理的。如果您关闭验证并启用缓存,您应该获得与 Explorer 大致相同的传输速率(您仍可能会获得略低甚至略高的传输速率,具体取决于 TeraCopy 使用的文件传输代码与 Explorer 使用的文件传输代码的差异)。

如果您想要传输近 10GB 的数据,那么您也可以尝试改变设置,然后针对四种排列中的每一种重新进行传输,并记下您获得的速度(为了安全起见,请在运行之间关闭缓存:)V+C+, V+C-, V-C+, V-C-


具有默认设置的 TeraCopy 首选项对话框的屏幕截图

答案2

我怀疑这与 Windows 8 使用 SMB v. 3 有关,并且我怀疑 teracopy 是否兼容 SMB v.3 并且默认回到 SMB 2。只是猜测......

答案3

我无法完全回答您的问题,但我可以补充一些可能有帮助的内容。
我之所以改用 Teracopy,是因为 Windows 在执行任何操作之前必须“计算”所有内容,而这种计算本身有时会冻结整个过程。在其他帖子中,有人提到在 Windows 复制中复制的文件类型很重要,我无法肯定 Teracopy 是否也是如此,因为我没有看到有人提出这一点。但无论如何,我自己的尝试到目前为止都没有得到你想要的结果。我只是复制通用文件类型,而不是媒体(即照片/电影)文件。

我的测试从 Seagate 3TB NAS 开始,在 100% GB 网络上具有 GB NIC 访问权限,然后转移到 GB 系统。最佳情况是 14 Gbps。Windows 从 NAS 移动到系统 HD 的速度为 12.4GBps,启动时间稍长。没有什么能接近您的 30-34Mbps,更不用说 109Mb/s 了。

部分原因肯定是由于 NAS 即使在 GB 网络上也有流量控制。如果我能获得 34GB/s,我会非常高兴,如果我能获得 109 GB/s,我会更高兴。如果你找到更快的文件复制器,请发帖!:)

答案4

之前我通过 TeraCopy 也遇到过同样的传输缓慢问题。Celeron J1800 配有 Realtek Gigabit 8111C 内置局域网卡。我每秒只能获得 35-45 兆字节。真让人沮丧!

最终导致局域网卡驱动程序出现问题。

使用 OEM 驱动程序从头开始安装 Windows。我还做了以下事情:

在设备管理器/局域网卡/高级设置/禁用除流量控制之外的所有内容。

在 Windows 功能下,禁用远程差异压缩。

现在平均速度在 60-70 Mbps 之间

在此处输入图片描述

相关内容