rsync --整个文件与增量传输协议 CPU 使用率和复制速度

rsync --整个文件与增量传输协议 CPU 使用率和复制速度

我正在测试通过局域网复制文件的速度。我已经生成了 1GB 的 /dev/urandom 数据,并在超过 1Gbps 的网络上复制到另一台机器。

rsync 传输速度(仅 -a 选项)约为 17MB/s 附加 -W 的 rsync 传输速度稳定为 110MB/s

我的特殊情况是,我希望整个文件都被复制,因为我每次在复制之前都会生成它。如果没有 -a 选项,总共 4 个核心中的一个将显示 100% 使用率。我认为这是因为 rsync 计算要传输的增量,这似乎是瓶颈。

问题:是否有可能使增量计算成为“多核”?现在仅使用了 25% 的 CPU。

答案1

对于一个文件,您不会获得任何带宽优化,也不会使用多核进行计算,但是当有更多文件时,尤其是数千个文件,其中一些只需要更新,您可以使用 xargs,如下所示

ls /your/local/folder/ | xargs -n1 -P4 -I% rsync -Pa % ursrv.com:/remote/folder/

此命令行将列出所有文件夹/文件,然后运行 ​​4 个 rsync 实例,并将输入参数作为文件夹或文件。这不是直接多核,但会运行 rsync 的多个实例,这肯定会更有效地加载您的 CPU。

答案2

最初,用户创建一个单个文件随机数据在源服务器上:

Delta Transfer 使用一种算法来更新一台计算机上的文件,使其与另一台远程计算机上的文件相同。该算法识别源文件中与目标文件中某些部分相同的部分,并仅发送无法以这种方式匹配的部分。实际上,该算法计算一组差异,而无需将两个文件放在同一台机器上。通常,当两台机器通过低带宽、高延迟的通信链路连接时,Delta Transfer 工作得非常好。在这种情况下,两台机器之间的连接是整个系统的主要瓶颈。通过显着减少通过链路发送的字节量,操作效率将大大提高。 --源无处不在

用户在远程服务器上没有相应文件的情况下进行传输,因此复制文件而不同步,初始传输--whole-file效率更高。


为了以 CPU 周期换取网络开销,我建议使用-z压缩选项。压缩的类型和级别也可以调整:

--compress-choice= --compress-level=
兹标准 0-9
lz4 0-9
兹利布克斯 0-9
兹库 0-9

在支持的文件系统上,与用户的随机数据不同,公共数据可以通过设置开关保存为稀疏文件--sparse,然后在后续的 rsync 中,将--inplace开关设置为就地写入。


添加--update开关会跳过接收器上较新的文件,从而节省浪费的写入。


--append开关允许用户将数据附加到较短的文件中。


以下设置可以提供帮助增加整体的冗长性测试期间:

--verbose, -v            increase verbosity
--stats                  give some file-transfer stats
--human-readable, -h     output numbers in a human-readable format
--progress               show progress during transfer

相关内容