我有两个相同型号的驱动器,它们使用 SATA 连接。
当使用 来对读取速度进行基准测试时hdparm -t /dev/sdX
,160MB/s
返回的速度约为。当使用 来对写入速度进行基准测试时dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasync
,返回的速度约为140MB/s
。
然而,当使用复制单个10GB文件时rsync --progress /mnt/hd1/file /mnt/hd2/file
,写入速度仅为约35MB/s
。
为什么这么慢?我怎样才能让它更快?
答案1
根据我在研究此问题时发现的许多网站(例如这一),这是很正常的,因为 rsync 的瓶颈通常是 CPU 能力。
dd 和 cp 的结果接近我最初测试的速度。看来 2.2Ghz 双核对于硬盘速度的 rsync 来说还不够。
在进一步的研究中,我还发现这:
正确,rsync 没有选项可以完全禁用传输后校验和。我为 rsync 2.6.9 实施了一个补丁,该补丁添加了一个选项 --trust-append,将传输后校验和限制为添加的部分,而不是整个文件。补丁已附加。这应该足够好了,但如果您真的想完全禁用校验和,只需注释掉 match.c 和receiver.c 中剩余的 sum_update 调用即可。
Rsync 总是对整个文件进行校验,这需要花费很多时间。使用上面提到的补丁,我设法将 rsync 速度提高到大约 90MB/s。仍然不是很好,但比以前好多了。遗憾的是,该补丁尚未进入 rsync-trunk。
答案2
我遇到了完全相同的问题(在 Linux 上),即:35BM/s。
事实证明,rsync 受 CPU 限制,并且不会触发 CPU 按需调节器,因此 CPU 停留在最慢的速度(我的情况是 800MHz,而我的情况是 3000MHz)
您可以使用以下方法进行测试:
cat /proc/cpuinfo | grep MHz
修复方法是调整 CPU 调节器。
回显“70”> /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
为了使其永久生效,请将其放入 /etc/rc.local
请参阅解释: http://random-linux-stuff.blogspot.co.nz/2013/01/boost-performance-of-ondemand-cpu.html