对英特尔网卡上的 Samba(Windows 共享)性能进行故障排除

对英特尔网卡上的 Samba(Windows 共享)性能进行故障排除

在家里,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

网卡驱动程序设置

相关文档和论坛主题:

相关内容