我有两个 Linux 盒子连接到千兆交换机。它们都有千兆网卡,电缆是 cat7。
使用 iperf 测试网络显示连接速度很快,但使用 rsync、scp 或 nfs 共享传输文件速度很慢。
我正在使用一个 1GB 的文件进行测试。
iperf 结果:
Client connecting to odroid, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.26 port 58788 connected with 192.168.1.32 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 979 MBytes 821 Mbits/sec
使用 rsync、scp 或 nfs 的传输速度大约为 13Mb/s
SCP-007:
scp bigfile odroid:/mnt/usb1/ [10:19:12]
bigfile 57% 590MB 12.2MB/s 00:35 ETA^CKilled by signal 2.
rsync:
rsync --progress bigfile /mnt/usb1/
bigfile
44,695,552 4% 12.15MB/s 0:01:11 ^C
网络文件系统 (NFS):
binaryplease➜~(master✗)» time cp bigfile /mnt/nfs/usb1/
cp -i bigfile /mnt/nfs/usb1/ 0.01s user 0.94s system 1% cpu 1:11.06 total
1024MB/71秒=14.42MB/秒
由于 iperf 测试显示网络连接速度很快,因此我假设存储设备速度慢存在问题,但事实似乎并非如此:
客户端,SSD,内部:
binaryplease➜~(master✗)» sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 20344 MB in 2.00 seconds = 10181.50 MB/sec
Timing buffered disk reads: 1498 MB in 3.00 seconds = 498.98 MB/sec
binaryplease➜~(master✗)» dd if=/dev/zero of=test oflag=direct bs=8M count=64
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 2.03861 s, 263 MB/s
binaryplease➜~(master✗)» dd if=test of=/dev/null iflag=direct bs=8M [12:29:01]
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 1.11392 s, 482 MB/s
服务器,USB 3.0 驱动器,外部:
➜ ~ git:(master) ✗ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1980 MB in 2.00 seconds = 991.66 MB/sec
Timing buffered disk reads: 266 MB in 3.01 seconds = 88.27 MB/sec
➜ usb1 dd if=/dev/zero of=test oflag=direct bs=8M count=64
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 6.53386 s, 82.2 MB/s
➜ usb1 dd if=test of=/dev/null iflag=direct bs=8M
64+0 records in
64+0 records out
536870912 bytes (537 MB) copied, 7.13567 s, 75.2 MB/s
客户端操作系统(Linux arch):
Linux binaryplease-laptop 4.3.3-2-ARCH #1 SMP PREEMPT Wed Dec 23 20:09:18 CET 2015 x86_64 GNU/Linux
服务器上的操作系统(odroid 的 Ubuntu 服务器):
Linux odroid 3.10.92 #1 SMP PREEMPT Tue Nov 17 00:15:24 BRST 2015 armv7l armv7l armv7l GNU/Linux
这两个系统均未出现 CPU 或 RAM 超载的情况。
如果我正确解读了结果,服务器驱动器的写入速度(82.2 MB/s)应该很容易与网络匹配。文件传输怎么这么慢?
我希望提供的信息足够并且有人可以帮助我找到瓶颈。
谢谢。
答案1
从您得到的数字来看,似乎您的网络中某些东西实际上并不是千兆位。
使用 ethtool 或类似工具检查每台机器 NIC 的速度。
检查交换机并确保端口确实以千兆速度活动(如果交换机支持管理,请检查 LED 或配置端口状态)。
运行 iperf 或客户端之间的替代程序。
最后,检查 CPU 使用率 - 也许那里出了问题。
答案2
非常感谢这篇文章,我遇到了完全相同的问题......所以,我只想扩展一下:
看来您的网络中有些东西实际上并不是千兆位。
所以,事实证明,问题出在我笔记本电脑上的 Wi-Fi 适配器上。
首先,我寻找检查网络适配器速度的方法,并咨询了https://www.systutorials.com/how-to-find-a-wireless-network-adapters-speed-in-linux/- 它建议ethtool
,但这对无线网络适配器不起作用。
然后我发现:
因此,我有:
$ iwconfig wlp3s0 | grep Rate
Bit Rate=270 Mb/s Tx-Power=15 dBm
$ rsync -aP /nfsshare/test.zip .
sending incremental file list
test.zip
51,412,992 17% 12.16MB/s 0:00:19 ^C
然后我尝试:
$ sudo iw dev wlp3s0 get power_save
Power save: on
$ sudo iw dev wlp3s0 set power_save off
$ sudo iw dev wlp3s0 get power_save
Power save: off
...然后,过了几秒钟rsync
,我得到了这个:
$ rsync -aP /nfsshare/test.zip .
sending incremental file list
test.zip
292,988,598 100% 259.41MB/s 0:00:01 (xfr#1, to-chk=0/1)
不确定是否有东西在此过程中被缓存,但这些数字给我留下了深刻的印象。
再说,git status
在同一台 PC/笔记本电脑上,对于同一个 NFS 共享中的 git 项目,似乎仍然像以前一样慢......