CDC 文件传输
Content Defined Chunking (CDC) 内容定义分块文件传输,是将文件分成块,以文件或流式文件形式从 Windows 传输到 Linux 的工具。
产生背景
在 Stadia,游戏开发人员可以访问 Linux 云实例来运行游戏。 不过,大多数开发人员都是在 Windows 上编写游戏的。 因此,他们需要一种方法让它们在远程 Linux 实例上可用。
由于开发人员可以通过 SSH 访问这些实例,因此他们可以使用 scp
来复制游戏内容。 然而,这是不切实际的,尤其是在大流行期间转向在家工作且互联网连接不佳的情况下。 scp
总是复制完整的文件,没有“增量模式”来只复制改变的东西,对于许多小文件来说速度很慢,并且没有快速压缩。
为了解决这种情况,我们开发了两个工具,cdc_rsync
和 cdc_stream
,它们使开发人员能够快速迭代他们的游戏,而不会重复产生传输数十 GB 的成本。
CDC同步
cdc_rsync
是一个将文件从 Windows 机器同步到 Linux 设备的工具,类似于标准的 Linux rsync
。 它基本上是一个复制工具,但针对目标目录中已有旧版本文件的情况进行了优化。
- 如果时间戳和文件大小匹配,它会快速跳过文件。
- 它对所有数据传输使用快速压缩。
- 如果文件发生更改,它会确定更改了哪些部分并仅传输差异部分。
远程差异算法基于 CDC。 在我们的测试中,它比 rsync 中使用的快 30 倍(1500 MB/s 对比 50 MB/s)。
下图显示了在 Windows 上的 Cygwin 下运行的 cdc_rsync 和 Linux rsync 的比较。 测试数据包括提供给我们用于评估目的的某些游戏的 58 个开发版本。 构建大小为 40-45 GB。 对于这个实验,我们上传了第一个构建,然后将第二个构建与两个工具中的每一个同步并测量了时间。 例如,使用 Cygwin rsync 从构建 1 同步到构建 2 需要 210 秒,但使用 cdc_rsync 只需 75 秒。 这三个异常值可能是来自另一个开发分支的特性下降,那里的增量要高得多。 总的来说,cdc_rsync 同步文件的速度比 Cygwin rsync 快大约 3 倍。
CDC 流
cdc_stream
是一种将文件和目录从 Windows 机器流式传输到 Linux 设备的工具。 从概念上讲,它类似于 sshfs,但针对读取速度进行了优化。
- 它在 Linux 设备上缓存流数据。
- 如果文件在 Windows 上更改后在 Linux 上重新读取,则只会再次流式传输差异。 其余的从缓存中读取。
- 由于目录元数据(文件名、权限等)以流式友好的方式提供,因此统计操作非常快。
为了有效地确定文件的哪些部分发生了更改,该工具使用与 cdc_rsync 相同的基于 CDC 的差异算法。 Windows 文件的更改几乎会立即反映在 Linux 上,延迟大约为(0.5s + 0.7s x 已更改文件的总大小(GB))。
Nearby
- 上一篇 › 远程管理家庭的网络/服务
- 下一篇 › gail.com 常见问题