在家里,Windows 7 和 Windows 10 上的原生 Windows 共享客户端性能不佳。它通过千兆交换机连接到 Samba 服务器。读取速率约为 60 MB/s,而写入服务器的吞吐量达到可接受的 114 MB/s。
理论最大值为 125 MB/s(1000 Mbit / 8 字节),不理想的读取性能困扰了我很长时间。
设置如下:
Client: Server:
- Windows 10 - Linux 4.1.12
- Ethernet: Intel I218-LM (gigabit) - Ethernet: Realtek RTL8111/8168/8411
- Samba 3.6.25
Switch:
- Cheap but solid 8-port gigabit switch by Netgear (2007)
在尝试解决这个问题时,人们可能会发现过时的在网上找到一些关于调整 Samba 服务器的建议。我发现更改套接字选项和读写参数没有明显改善:
/etc/samba/smb.conf
; useless tweaks for a home network 2014-2015. oversized buffers do not help...
[global]
read size = 365536
read prediction = true
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=158192 SO_SNDBUF=158192
write raw = yes
read raw = yes
使用 iperf (cygwin) 对网络吞吐量进行基准测试,结果约为 930 Mbit/s。遗憾的是,当 CrystalDiskMark 从已安装的网络共享读取数据时,网络性能(任务管理器)从未显示超过 560 MBit 的链路饱和度。
作为最后一次尝试解决问题,我在 Windows 客户端机器上启动了 Knoppix 来挂载并测试了共享:
mount -o user=foo //192.168.1.3/data /mnt/remote
iozone -o -r 4m -s 1200mb -i{0,1}
这产生了接近物理极限的结果。您对解决此问题有什么建议吗?
答案1
该问题可能与 Windows 中的 TCP 或以太网驱动程序设置有关。
有消息称,禁用这些参数有助于:
- IPv4 校验和卸载
- 大型发送卸载版本 2
- TCP 校验和卸载
- UDP 校验和卸载
我可以证实这些发现,此外,我发现下面指示的设置也有帮助:
- 自适应帧间间隔 -> 关闭
- 巨型数据包 -> 9014 字节
- 中断审核 -> 已禁用
- 中断调节率 -> 关闭
调整 NIC 驱动程序设置可大幅提高性能:
网络适配器设置
Control Panel -> Network
-> change adapter settings
-> right-click>properties -> advanced