云主机带宽测试一例:Windows Server 网络性能被 Linux 秒杀?

前情

用 iperf3 测试云主机不同系统之间能跑多少带宽。

怪现象

  1. 两台 Windows Server 2012 R2 测试,带宽只能到 2.4Gbps;
  2. 两台 CentOS 6.8 测试,可以达到 4Gbps,不限制带宽的环境下可以到 16Gbps;
  3. CentOS 做 Client,Windows 做 Server,也只能跑到 2.4Gbps。

排查过程

1. 怀疑虚拟机不在同一台物理机上

把测试用的虚拟机都迁移到一台物理机上,测试结果依然是 Linix 完胜 Windows Server。

2. 怀疑系统的 TCP wscale 值差异

抓包发现 iperf3 Windows 版用的 wscale 是 2,CentOS 版经过系统级的 TCP 参数调优后是 7,所以把目标放在调高 Windows 的 wscale。

netsh interface tcp set supplemental template=datacenter
netsh interface tcp set global autotuninglevel=experimental

结果发现,这样设置后,带宽确实提高到 3.5Gbps,但 wscale 并没有变化。

3. 怀疑 iperf3 Windows 版有毛病

因为上面的 2 条命令可以增加其它应用的 wscale 到 7,但 iperf3 不受影响,所以怀疑它有毛病。看了代码后,发现 Client 端用 -w 参数就可以让 Server 的 SO_RCVBUF 也使用 Client 设置的值,然后加上 -w 16000000 和 -w 32000000 分别测试,发现带宽还是无法提高,甚至有点下降。

但到这里,我们可以得出结论:Windows 机器之间带宽上不去,并非因为 wscale 小。

4. 怀疑是虚拟机服务器和客户机系统驱动之间有关联

云主机是虚拟机,它跑在 Linux 的物理机上,有可能一脉相承的 Linux 的驱动设计得比较好,所以 Linux 的虚拟机网络性能更高。

带着这个怀疑,稣在 Hype-V Server 上开了两个 Ubuntu 上测试,并优化了 TCP 参数:

echo "88584 118114 177168" | sudo tee /proc/sys/net/ipv4/tcp_mem

结果也才 2-3Gbps 左右……不玩了。总之,物理机什么系统,客户机最好也是一样的,毕竟有血缘关系。

转载于:https://my.oschina.net/umu618/blog/1617478

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值