网络延迟:100Mbit和1Gbit


11

我有一个当前连接为100Mbit的Web服务器,我的提供商提供了到1Gbit的升级。我知道这是指吞吐量,但是数据包越大,它们传输的速度也就越快,因此我预计响应时间会略有减少(例如ping)。有人曾经以此为基准吗?

负载为30字节的示例(100mbit到100mbit服务器):

> 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

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

> 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-我希望这对于1gbt到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

新的gbit以太网卡和电缆也有不同的编码(10b / 12b?),因此在10x(饱和时)与100Mbit的基础上,它可能具有%25的性能提高?
huseyin tugrul buyukisik

Answers:


15

仅当当前100Mbit链路饱和时,延迟才会显着下降。如果它不饱和,您可能不会注意到任何变化。

此外,您关于1Gbit链路将能够支持更大数据包的假设是不正确的。最大数据包大小由数据包沿路径使用的各种设备的MTU决定-从服务器上的NIC一直到客户计算机的MTU。在内部LAN应用程序中(当您控制路径上的所有设备时),有时可以增加MTU,但是在这种情况下,您会陷入默认MTU 1500的困境。如果发送的数据包大于这样,它们最终将变得支离破碎,从而实际上降低了性能。


2
这里“关键词”是关键词。我刚刚检查了两台具有相同硬件和低网络负载但具有不同以太网速度的服务器。平均Ping时间(本地,Ping源在同一子网上)从0.21毫秒下降到0.17毫秒。从家里对相同的服务器执行ping操作,每个服务器的时间为53毫秒。提供商无法控制的因素太多,无法进行有意义的升级。
Mike Renfro

1
+1从技术上讲是有区别的,但是,除非特定的应用程序对延迟非常敏感,否则这是完全无法理解的。
克里斯·S

谢谢您的测试!从0.21到0.17改进了20%,这是很大的。我不担心在家中执行ping操作(50毫秒),但是请求停留在提供程序上的时间。我们最大程度地调整了所有处理(CPU)和非驱动器IO(RAM / Cache / etc。),因此现在我质疑服务器之间的网络速度究竟增加了多少总延迟。例如,对于一个Web服务器请求,我们进行约20次Redis请求。@MikeRenfro:可以在更高的负载大小下进行相同的测试吗?正常ping是30字节,平均。Redis大约为250。我希望两者之间的差异会增加。
Andreas Richter

2
@Andreas; 我认为您完全错过了这些评论的重点。改进了40纳秒。这是人类完全无法意识到的。这不是一个累计数字,并不是每个请求都需要40纳秒的时间;而是 它只是第一个要快得多,所以第二个都可以在任一后面排成一行。
克里斯S

1
@ChrisS:问题不是关于可感知性的问题-这是一个问题,是否有人测试过,而Mike做了。它也不是40纳秒,而是微秒,因此您按1000倍...点亏了。相信我,我知道自己在做什么... 20%足以证明额外费用的合理性。
Andreas Richter

12

是,由于以下原因,gbit的延迟较低:

  • 相同数量的字节可以更快地传输

但是,当数据包具有一定大小时,这种改进才有意义

  • 56字节包=>几乎没有更快的传输
  • 1000字节包=> 20%更快的传输
  • 20000字节包=>传输速度提高80%

因此,如果您的应用程序对延迟非常敏感(4毫秒对0.8毫秒,往返20 kb)并且需要传输更大的包,那么从100兆位切换到千兆位可以减少延迟,即使您使用远低于平均100 Mbps的速度(=链路未永久饱和)。

服务器(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

服务器(gbit)->交换机(gbit)->服务器(gbit):

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%

(如果只有一个链接是gbit,则对于20kb的ping操作,您的延迟仍将减少5%)。


1
在存储和转发大多数网络设备的情况下,必须先将一个数据包由交换机/路由器完全接收,然后再传递。更快的连接减少了此时间,这也减少了延迟(只要连接没有从多个并行链接获得速度)。
布赖恩

1
根据说明,此答案是目前页面上最好的答案。其他人似乎想通过假设一个特殊情况来解释这一事实-跨长距离/多交换机的网络性能。考虑这一点很重要,特别是考虑到OP的关注点(Web服务器),但是此答案还显示了单跳中切换速度可以产生多少差异。
泰勒(Tyler)

3

我认为您对带宽延迟和“速度”有一个基本的误解。速度是带宽和延迟的函数。例如,考虑一下在全国范围内运送了3天才能到达的DVD上的数据。将其与通过Internet发送数据进行比较。互联网具有较低的延迟连接,但是要使连接的“速度”与您要以每秒9.6MB的速度接收到的货物相匹配(此来源的参考示例)。

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


这是不正确的-只需将ping与当前MTU以下的不同有效负载进行比较:ping服务器-i0.05 -c200 -s30与ping服务器-i0.05 -c200 -s300 ...或者在您的示例中说:装有1mio DVD的卡车行驶速度较慢,因为它比装有1 DVD的卡车重。
Andreas Richter

2
@andreas ping时间不是全部内容-因此,让我们继续争论的是,低于MTU的数据包到达速度要快于处于完整MTU的数据包。区别在于,在2个数据包到达相同的时间内,您没有1个数据包具有完整mtu的所有数据。延迟是所有数据到达所需的时间。回到卡车的类比,即使一辆载有1 Cd的卡车要在一半时间内到达,因为载有500 cd的卡车仍然需要500趟路程才能交付数据(750天vs 3)。
Jim B

@JimB:是的,正如我提到的,我的问题不是关于负载大小,而是关于速度:整辆卡车需要10个小时才能被海关扫描,小卡车只需要1个小时。100mbit / s也意味着,一个100bit的数据包需要理论最小值为0,000954ms,而一个1000bit的数据包则需要理论最小值为0,00954ms。当然处理时间等 在网卡/交换机/等上。在整个延迟中占了更大的一部分,但我也希望它们在1gbit的交换机中会更快,等等。
Andreas Richter

@ andreas-与您的问题无关的同一子网中的 20%
Jim B

1
@andreas 20毫秒以下的ping仍然是1毫秒以下的ping。在您的测试中,即使是亚毫秒级ping的150%,在现实世界中也无关紧要。您是否真的有一个应用程序很重要,您的数据是否在0.0003秒而不是0.0002秒就到达了?
Shane Madden

2

您正在通过针孔观察世界。对以不同速度进行的延迟差异的有效测试将是在使用交叉连接电缆连接的两个相同的NIC之间。将NIC的计算速度设置为10mb,100mb和1000mb。这将表明在不同速度下延迟几乎没有差异。无论使用的最大带宽如何,所有数据包均以相同的线速传输。添加具有存储和正向缓存的开关后,一切都会改变。通过交换机测试延迟必须仅通过与交换机的两个连接来完成。任何其他流量都可能影响测试的延迟。即使这样,交换机也可能会翻转日志,调整数据包类型计数器,更新内部时钟等。一切都会影响延迟。

是的,由于硬件更改,不同的NIC,不同的交换机,不同的驱动程序,从100mb切换到1gb可能更快(更低的延迟)。我发现由于驱动程序差异而导致的ping延迟变化比其他任何变化都大。带宽,交换机,NIC卸载等。

切换将是下一个最大的变化,直通速度明显快于单次发送测试的存储和转发速度。但是,设计良好的存储和前向开关在高负载下的整体性能可能会超过直通开关。在千兆位的早期,我看到10mb高性能背板交换机的延迟比便宜的千兆位交换机低。

使用Internet时,Ping测试实际上与性能分析无关。它们是快速测试,可以使您对测试瞬间运输中发生的事情有个大致的了解。生产性能测试要比ping操作复杂得多。高性能交换机是计算机,在高负载下的行为有所不同-延迟变化。

设置较慢的NIC或将NIC设置为较慢的速度,实际上可以通过使用交换机缓存限制对服务器的输入来帮助服务器进行并发突发。一次重传可能会否定等待时间的减少。通常,中到高负载流量级别很重要,而不是单个ping测试。例如,当负载负载不足70%时,旧的Sun Ultrasparc(单次ping的等待时间较长)的性能要优于用作开发服务器的新型廉价千兆桌面。台式机具有更快的gb NIC,更快的gb-gb连接,更快的内存,更多的内存,更快的磁盘和更快的处理器,但是它的性能不如优化的服务器类硬件/软件。这并不是说当前运行gb-gb的经过调优的服务器并不比旧硬件快,即使它能够处理更大的吞吐量负载。“

找出您的提供商是否为100mb和1gb连接使用了不同的交换机。如果他们使用相同的交换机背板,则仅在流量水平超过较低带宽时才为增加费用付费。否则,您可能会发现,在很短的时间内,许多其他用户将切换到千兆位,而留在旧交换机上的少数用户现在具有更高的性能-更低的延迟,在交换机高负载期间(总的交换机负载,而不仅仅是服务器负载) )。

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

较低的延迟并不总是与更快的交付相关。您在提供单个页面的20个请求中提到了MySQl。该流量不应与页面请求位于同一NIC上。将所有内部流量移至内部网络将减少冲突和传出NIC上的总数据包计数,并提供比单个数据包0.04毫秒的延迟增益更大的增益。减少每页的请求数,以减少页面加载延迟。压缩页面,html,css,javascript,图像以减少页面加载时间。这三个变化将带来更大的整体收益,而不是为不浪费0.04毫秒的延迟而支付带宽。ping需要运行24小时并进行平均以查看实际的延迟变化。现在,智能交换机可以进行自适应RTSP类型的节流,初始带宽增加较小,而传输量较大。根据您的页面大小(图形,大html / css / javascript),您可能会看到初始连接延迟/带宽比大页面或整页传输要低/高。如果页面的一部分正在流式传输,则页面和流之间的性能可能会完全不同。


感谢您的所有宝贵意见:1.)这是同一开关,2.)第二个用于内部/外部声音的NIC听起来很合理,值得一试-即使是MySQL / etc。都是双向的,因此冲突将“减少”一半。3)现实世界的测试仅比Nic-Nic更可取,Mike使用子网进行了测试,并获得了您期望的reg。硬件:“ 56字节=改善19%,200字节= 27%,1000字节= 59%!因此,数据包越大,越重要。千兆位仅从0.17ms(56字节)增加到0.23ms(1000字节) )=> 35%,而100 Mbit从0.21增加到0.56 => 166%”。
Andreas Richter

1

假设有300个字节的数据包(如果使用的-s 300话,由于头的原因实际上会更大)。

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

0.024ms大约是发送帧所需的实际时间(不计算媒体访问时间或标题)。

在乒乓序列中,该时间将花费两倍的时间(0.048毫秒),再加上操作系统处理查询的时间。

对我来说,这意味着您的延迟是由多个开销因素中的90%引起的。我不确定您是否会对Gb看到很大的不同。可能不到1毫秒的差异不会在Web服务器上引起注意。

无论如何,您可以尝试使用1400字节这样的大数据包吗?


有人已经为特定服务器运行了数字,而差异又回到了40纳秒。您的估计值相差太大了25倍。
克里斯S

@LatinSuD:感谢您的建设性方法,而不是怪我不知道我在做什么。我将结果发布到实际问题中,因为我可以在那里进行格式化。但是顺便说一句。我也希望90%的开销会增加速度,因为网卡等中的处理器对于GBit来说也更快(希望如此)。@ChrisS:微秒,我不明白你与25是什么意思
安德烈亚斯里克特

我很抱歉将微米和纳米混合在一起;无论如何,这是不可能的。LatinSuD估计相差1整毫秒,比Mike发现的40微秒大25倍。
克里斯·S

@ChrisS:不用担心。0,04ms是用于38字节ping的,如果我们的平均服务器-服务器数据包约为300字节,则差可能是0.4ms。如果我们现在对一个Web服务器请求(Redis,MySQL等)发出20个请求,这将导致速度提高8毫秒,对于当前的Web请求,速度将提高10%,并且完全可以证明额外的费用是合理的。我只是没有自己在这里进行测试的资源,而是让我相信,即使人类无法感知它,它仍然可能是有意义的。像电或神。
Andreas Richter

1
@安德烈亚斯,我非常怀疑它会像那样缩放;数据包大小增加10倍,延迟减少10倍,数据包增加20倍,速度提高20倍。如果成功了,那就意味着网络开销减少了10%,您仍然必须考虑应用程序中花费的时间,这可能比网络延迟组件长一到几个数量级。我希望无论如何它都能为您带来成功。
克里斯·S

1

这取决于您要连接的交换机的类型。在某些供应商(例如Crisco ...我的意思是Cisco)上,ICMP数据包将流回CPU(gag)。

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

归根结底,延迟将下降到交换机上的转发速率以及交换机体系结构的详细信息(将ASIC放置在板上,如何处理线卡之间的锁定等)。祝您测试顺利。


谢谢,我仅指代Host-Switch-Host测试,但我不了解所有的交换机内部。我只是想看看是否有人进行过基准测试:主机-(100mbit)-交换机-(100mbit)-主机,主机-(100mbit)-交换机-(1gbit)-主机和主机-(1gbit)-交换机-(1gbit )-不同数据包大小的主机延迟。如果没有人这样做,我会做,然后在此处发布答案。
Andreas Richter

1
我曾经转售开关设备。可以这么说,您的发现向我暗示您已插入Cisco交换机。还有其他选择可以提供较低的延迟。正如您正确指出的那样,更多的带宽并不能转化为较低的延迟(Comcast是在这方面使人们变得愚蠢的主要罪魁祸首)。考虑到您处于托管环境中,您可能会卡在其硬件上(由于在托管环境中,额外的几微秒并不是至关重要的)。向我显示数百万pps的稳态值,我将有兴趣提供更多详细信息。:)
肖恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.