为什么我的rsync这么慢?


42

我的笔记本电脑和工作站都连接到千兆交换机。两者都在运行Linux。但是,当我使用复制文件时rsync,它的性能很差。

我得到约22 MB / s。从理论上讲我不应该达到125 MB / s的速度吗?这里的限制因素是什么?

编辑:我进行了一些实验。

在笔记本电脑上写性能

便携式计算机具有带全盘加密功能的xfs文件系统。它使用aes-cbc-essiv:sha256具有256位密钥长度的密码模式。磁盘写入性能为58.8 MB / s

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

在工作站上读取性能

我复制的文件位于5个HDD上的软件RAID-5上。在raid之上是lvm。卷本身使用相同的密码加密。该工作站具有FX-8150 CPU,该CPU具有本机AES-NI指令集,可加快加密速度。磁盘读取性能为256 MB / s(缓存很冷)。

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

网络性能

我在两个客户之间运行了iperf。网络性能为939 Mbit / s

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec

3
rsync://协议还是通过SSH建立隧道?后者¹中存在非常明确的性能限制。
ephemient'4

Answers:


18

减轻高CPU使用率但仍保留rsync功能的另一种方法是从rsync / SSH迁移到rsync / NFS。您可以通过NFS导出要复制的路径,然后从NFS挂载本地使用rsync到目标位置。

在WD MyBook Live网络磁盘上进行的一项测试中,在通过NFS和从NFS共享本地同步到两个磁盘的速度总计为45MB /秒(两个USB2磁盘都达到最大),并且CPU使用率很小。使用rsync / SSH时,磁盘利用率约为6%,而使用rsync / NFS时,磁盘利用率接近24%,而两个USB2磁盘的利用率均接近100%。

因此,我们有效地将瓶颈从NAS CPU转移到了两个USB2磁盘上。


4
但是请注意,NFS不提供安全性(即:加密)。
WhyNotHugo 2013年

这很棒!现在,当我之前仅获得〜100 Mb / s的速度时,其速度几乎达到了全千兆位。
PHLAK 2014年

1
您能指出如何使用rsync / NFS吗?我正在尝试在2个MyCloud驱动器之间传输8TB,并且它会通过ssh(4MB /秒)的rsync永久占用
FMaz008 2009年

26

原因可能包括:压缩,加密,要复制的文件的数量和大小,源系统和目标系统的磁盘I / O功能,TCP开销...这些都是可能影响您正在进行的传输类型的因素。

请发布您正在使用的rsync命令,并提供有关两台计算机规格的详细信息。


编辑:加密通常是rsync速度的限制因素。您可以使用ssh和较轻的加密密码(例如arcfour

就像是: rsync -e "ssh -c arcfour"

或者,您可以使用修改后的rsync / ssh来禁用加密。请参阅hpn-ssh:http://psc.edu/networking/projects/hpn-ssh

但是,与工作站相比,笔记本电脑的驱动器速度较慢。写入可能被阻止,正在等待I / O进入笔记本电脑。您真正的表现期望是什么?


1
笔记本电脑通常使用速度较慢的磁盘(7200 rpm-5400 rpm),因为它们消耗的电量更少。根据rsync的实际情况,这很容易成为您的限制因素。
Ladadadada 2012年

1
谢谢。对于rsyncning从附加到原子处理程序的dm-crypt加密磁盘到ecryptfs ARM NAS盒的问题,这将我的传输速度从4MiB / s更改为6MiB / s。rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/pics有总比没有好。
塞巴斯蒂安

这个答案。从rsync -azP到rsync -aPe“ ssh -c arcfour”将两个MyCloud Mirror驱动器之间的传输速度从4MB /秒提高到25MB /秒。现在,接收单元的CPU已用尽。(认为​​这意味着我将以本机可以写入数据的速度进行传输)
FMaz008'9

10

经过更多测试后,我终于找到了答案。rsync默认情况下在ssh上使用隧道。加密使它变慢。所以我需要解决这些加密问题。

解决方案1:设置rsync服务器

要通过rsync协议使用它,您必须设置一个rsyncd服务器。/etc/init.d/rsync我的笔记本电脑上有一个脚本,所以我猜想rsyncd正在运行。我错了。/etc/init.d/rsync start当未在中启用rsync时,它会静默存在/etc/default/rsync。然后,您还必须在中配置它/etc/rsyncd.conf,这很麻烦。

如果完成所有这些操作,则必须使用rsync file.foo user@machine::directory。请注意,有两个冒号

解决方案2:老式rsh服务器

但是,配置对我来说太复杂了。因此,我刚安装并安装rsh-server在笔记本电脑上。-e rexec然后在工作站上使用rsh而不是ssh 调用rsync 。然后,性能几乎翻了一番,达到44.6 MB / s,这仍然很慢。速度在58 MB / s33 MB / s之间跳动,这表明可能存在一些缓冲区或拥塞控制问题。但这超出了这个问题的范围。


2
我们在这里广泛使用rsync,除非遍历数百万个4K文件,否则通常会获得完整的接口速度。除非您使用一些严重老化的硬件,否则我认为加密不是问题。
麦哲伦

ThinkPad R61中的Intel Core2 Duo T8100是否被视为严重损坏的硬件?如果不是,那么为什么ssh上的rsync比ssh上的rsync慢呢?
iblue 2012年

5
加密通常是rsync速度以及文件数量的限制因素。改善此问题的标准方法是使用更轻的加密密码运行rsync,rsync -e "ssh -c arcfour"或者尝试使用可禁用加密的经过修改的rsync / ssh。请参阅hpn-sshpsc.edu/networking/projects/hpn-ssh
ewwhite

2

这是一个非常古老的问题和答案,但是缺少一个重要的事情:如果要复制已经压缩或加密的数据,请关闭压缩。

如果您的数据既没有压缩也没有加密,那么您仍然只想压缩一次!Rsync使用-z压缩,而ssh使用-C压缩(默认情况下)。由于我的数据已压缩,因此我尚未测试哪种更好。

在执行此操作时,您可以关闭X转发和TTY分配,结果是:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

最后,确保(例如使用iptraf)您实际上正在使用您认为正在使用的网络接口。令我惊讶的是,我的OSX上的传出ssh绑定到默认传出接口上的IP,而不是应将数据包路由到的接口上的IP。我的两台笔记本电脑之间通过WiFi进行的直接GB交叉连接也没有使用。经过调查,这是由于使用了Mac放在所有接口上的169.254 / 16,并且即使请求来自其他接口,目标计算机仍在答复ARP请求。


选项有效,但是我发现-x -T和-o Compression = no对传输速度几乎没有影响。
FMaz008'9

4
还值得一提的是,OpenSSH 6.7禁用了arcfour。
bparker

真可惜@bparker!我们是否知道CPU上剩余的可用密码中哪一个最轻?
Law29年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.