networking延迟:100Mbit与1Gbit

我有一个100Mbit的当前连接的networking服务器,我的供应商提供了1Gbit的升级。 我知道这是指吞吐量,但数据包越大,传输的速度也越快,所以我希望响应时间略有下降(例如ping)。 有没有人有过这样的基准

示例(100mbit到100mbit服务器),30字节加载:

> ping server -i0.05 -c200 -s30 [...] 200 packets transmitted, 200 received, 0% packet loss, time 9948ms rtt min/avg/max/mdev = 0.093/0.164/0.960/0.093 ms 

示例(100mbit到100mbit服务器),300字节负载(低于MTU):

 > ping server -i0.05 -c200 -s300 [...] 200 packets transmitted, 200 received, 0% packet loss, time 10037ms rtt min/avg/max/mdev = 0.235/0.395/0.841/0.078 ms 

所以从30到300平均。 延迟从0.164增加到0.395 – 我预计这将是一个1gibt到1gbit连接缓慢增加。 我甚至希望100mbit到1gbit的速度更快,如果连接是通过一个交换机,首先等待它收到整个数据包。

更新: 请仔细阅读评论的答案! 这个连接并不饱和,我不认为这个速度的增加对于一个人的请求来说是重要的,但是这个请求会加起来(Redis,Database等)。

关于@LatinSuD的回答:

 > ping server -i0.05 -c200 -s1400 200 packets transmitted, 200 received, 0% packet loss, time 9958ms rtt min/avg/max/mdev = 0.662/0.866/1.557/0.110 ms 

如果当前的100Mbit链路饱和,延迟的唯一方法就会明显下降。 如果不饱和,你可能不会注意到任何改变。

另外,你假设1Gbit链路将能够支持更大的数据包是不正确的。 最大数据包大小由数据包沿path上的各种设备的MTU决定 – 从服务器上的NIC开始,一直到客户计算机的MTU。 在内部LAN应用程序中(当你可以控制path上的所有设备时),有时可以增加MTU,但是在这种情况下,你几乎被默认的MTU值设置为1500.如果发送的数据包大于他们最终会变得分散,从而实际上降低了绩效。

是gbit有一个较低的延迟,因为:

  • 相同数量的字节可以在更快的时间内传输

但是,如果数据包具有一定的大小,改进只是可观的:

  • 56字节包=>几乎没有更快的传输
  • 1000字节包=> 20%更快的传输
  • 20000字节的封装(S)=> 80%更快的传输

因此,如果您有一个对延迟非常敏感的应用(4ms对0.8ms,往返20kb),并且需要传输更大的包,从100mbit切换到gbit可以减less延迟,即使您使用远低于平均100mbit / s(=链路没有永久饱和)。

服务器(100mbit) – >交换机(gbit) – >服务器(100mbit):

 size: 56 :: rtt min/avg/max/mdev = 0.124/0.176/0.627/0.052 ms size: 100 :: rtt min/avg/max/mdev = 0.131/0.380/1.165/0.073 ms size: 300 :: rtt min/avg/max/mdev = 0.311/0.463/2.387/0.115 ms size: 800 :: rtt min/avg/max/mdev = 0.511/0.665/1.012/0.055 ms size: 1000 :: rtt min/avg/max/mdev = 0.560/0.747/1.393/0.058 ms size: 1200 :: rtt min/avg/max/mdev = 0.640/0.830/2.478/0.104 ms size: 1492 :: rtt min/avg/max/mdev = 0.717/0.782/1.514/0.055 ms size: 1800 :: rtt min/avg/max/mdev = 0.831/0.953/1.363/0.055 ms size: 5000 :: rtt min/avg/max/mdev = 1.352/1.458/2.269/0.073 ms size: 20000 :: rtt min/avg/max/mdev = 3.856/3.974/5.058/0.123 ms 

服务器(千兆位) – >交换机(千兆位) – >服务器(千兆位):

 size: 56 :: rtt min/avg/max/mdev = 0.073/0.144/0.267/0.038 ms size: 100 :: rtt min/avg/max/mdev = 0.129/0.501/0.630/0.074 ms size: 300 :: rtt min/avg/max/mdev = 0.185/0.514/0.650/0.072 ms size: 800 :: rtt min/avg/max/mdev = 0.201/0.583/0.792/0.079 ms size: 1000 :: rtt min/avg/max/mdev = 0.204/0.609/0.748/0.078 ms size: 1200 :: rtt min/avg/max/mdev = 0.220/0.621/0.746/0.080 ms size: 1492 :: rtt min/avg/max/mdev = 0.256/0.343/0.487/0.043 ms size: 1800 :: rtt min/avg/max/mdev = 0.311/0.672/0.815/0.079 ms size: 5000 :: rtt min/avg/max/mdev = 0.347/0.556/0.803/0.048 ms size: 20000 :: rtt min/avg/max/mdev = 0.620/0.813/1.222/0.122 ms 

=在多个服务器上的平均值20kb ping的80%延迟减less

(如果只有其中一个链接是千兆位,那么对于20千兆位的ping,您仍然可以减less5%的延迟。)

我想你对带宽延迟和“速度”有一个基本的误解。 速度是带宽和延迟的函数。 例如,考虑在全国发货的DVD上的数据需要3天才能到达。 比较一下,通过互联网发送数据。 互联网的延迟连接要低得多,但为了与连接速度相匹配,您必须以每秒9.6MB的速度接收( 参考资料来源 )。

在您的情况下,升级到更高的带宽将允许您为更多的并发用户提供服务,但不能改善任何个人用户的延迟。

你正在通过针孔看世界。 在不同速度下的延迟差异的有效testing将在与交叉连接电缆连接的两个相同的NIC之间进行。 设置网卡的速度为10mb,100mb和1000mb。 这将显示在不同速度下的延迟几乎没有差异。 所有数据包以相同的线速传输,而不pipe使用的最大带宽如何。 一旦你添加交换存储和转发caching一切变化。 通过交换机testing延迟只能通过两个连接到交换机来完成。 其他任何stream量都可能会影响testing的延迟。 即使这样,交换机可能会翻转日志,调整数据包types计数器,更新内部时钟等。一切都可能影响延迟。

是的,由于硬件更改,不同的网卡,不同的交换机,不同的驱动程序,从100MB切换到1GB可能会更快(更低的延迟)。 与其他更改相比,我发现驱动程序差异导致ping延迟发生较大变化; 带宽,交换机,卸载网卡等。

对于单传输testing来说,切换将是下一个最大的变化,切换的速度明显快于存储和转发。 然而,devise良好的存储和转发交换机在高负载下可能会超越总体性能的直通交换机。 在吉比特的早期,我看到10mb高性能背板交换机的低延迟比便宜的千兆交换机。

Pingtesting对于使用Internet时的性能分析几乎是无关紧要的。 他们是快速testing,以获得在testing的瞬间在交通工具上发生的事情。 生产性能testing比单纯的testing要复杂得多。 高性能交换机是计算机,在高负载下performance不同 – 延迟变化。

如果网卡速度较慢或网卡设置速度较慢,则实际上可以通过使用交换机caching来限制对服务器的input,从而帮助具有并发突发的服务器。 单次重传可能会否定延迟的减less。 通常中等到高负载的stream量水平是重要的,而不是单一的pingtesting。 例如旧的慢太阳Ultrasparc(一个ping的更高的延迟)胜过在低于70%100mb的带宽负载下用作开发服务器的新的便宜的千兆桌面。 桌面有更快的千兆网卡,更快的连接gb-gb,更快的内存,更多的内存,更快的磁盘和更快的处理器,但性能不如调优的服务器级硬件/软件。 这并不是说运行gb-gb的当前调优服务器不会比旧硬件更快,甚至能够处理更大的吞吐量负载。 “更高的performance”的问题比你似乎要求的要复杂得多。

了解您的提供商是否使用不同的交换机来实现100mb与1gb的连接。 如果他们使用相同的交换机背板,那么如果stream量水平超过了较低的带宽,那么我只会支付增加的费用。 否则,您可能会发现,在很短的时间内,很多其他用户将切换到千兆位,在交换机的高负载(交换机负载总量,而不仅仅是您的服务器)。

苹果和橘子的例子:本地ISP为捆绑服务,DSL和电话提供了一个新的交换机。 最初,用户看到了性能的提高。 系统被超卖了。 现在保留在旧交换机上的用户具有更高的一致性能。 在深夜,新系统上的用户速度更快。 在高负荷的晚上,旧的交换机客户端明显胜过新的过载系统。

较低的延迟并不总是与更快的交付相关联。 您提到了20个请求中的MySQl来提供一个页面。 该stream量不应与页面请求位于同一个NIC上。 将所有内部stream量转移到内部networking将减less输出NIC上的冲突和总数据包数量,并提供比单个数据包的.04ms延迟增益更大的增益。 减less每页的请求数量,以减less页面加载延迟。 压缩页面,HTML,CSS,JavaScript,图像,以减less页面加载时间。 这三个变化将带来更大的整体收益,而不是支付带宽不被用来获得0.04毫秒的延迟减less。 ping需要运行24小时,并进行平均以查看实际的延迟变化。 智能交换机现在执行自适应RTSPtypes节stream,初始带宽增加较小,传输大量节stream。 根据您的页面大小(graphics,大html / css / javascript),您可能会看到初始连接延迟/带宽比大页面或整页传输低得多/高。 如果您的页面的一部分是stream媒体,您可能会看到页面和stream之间的性能截然不同。

假设有300字节的数据包(如果使用-s 300那么它会因为标题而变得更大)。

 300 bytes = 2400 bits 2400 bits / 100Mbit/sec = 0.024ms 

大约是发送帧所需的实际时间(不包括介质访问时间和标题)。

在乒乓序列中,需要两倍的时间(0.048ms),再加上操作系统处理查询的时间。

这对我意味着你的延迟是由几个开销因素的90%造成的。 我不确定你是否会看到与Gb很大的区别。 可能小于1毫秒的差异将不会明显的Web服务器。

无论如何,你可以尝试一个像1400字节的大包吗?

这取决于你连接的交换机的types。 在一些供应商(如Crisco …我的意思是思科),ICMP数据包将stream回到CPU( gag )。

您可能会发现一个更好的testing是使用100Mbps和1Gbps链路(即不是主机到交换机或主机到路由器的testing)执行主机到主机的testing。

在一天结束时,延迟将降低到交换机的转发速率以及交换机架构的细节(ASIC放置在板上,线卡之间如何处理locking等)。 祝你好运,你的testing。