赞
踩
l 带宽
表示链路的最大传输速率,单位是b/s 比特/秒,在位服务器选网卡时,带宽就是最核心的参考指标,常用的带宽有1000M,10G,40G,100G等
网络带宽测试,测试的不是带宽,而是网络吞吐量,Linux服务器的网络吞吐量一般会比带宽小,而对交换机等专门的网络设备来说,吞吐量一般会接近带宽
l 吞吐量
表示没有丢包时最大的数据传输速率,单位通常是b/s比特/秒,或B/s字节/秒,吞吐量受带宽的限制,吞吐量/带宽也是该网络链路的使用率
l 延迟
表示从网络请求发出后,一直到收到远端响应所需要的时间延迟,这个指标在不同场景中有不同含义,它可以表示建立连接需要的时间(TCP握手延时),或者一个数据包往返所需时间RTT
l PPS
Packet Per Second,表示已网络包为单位的传输速率,PPS通常用来评估网络的转发能力,基于Linux服务器的转发,很容易受到网络包大小的影响(交换机通常不会受太大影响,交换机可以线性转发)
PPS,通常用在需要大量转发的场景中,而对TCP或者Web服务器来说,更多会用并发连接数和每秒请求数(QPS Query per Second)等指标,他们更能反映实际应用程序的性能
Linux网络基于TCP/IP协议栈,不同协议层的行为不同,在测试之前,根据应用程序基于的协议层进行针对性网络性能评估,比如:
基于HTTP或HTTPS的Web应用程序,属于应用层,需要我们测试HTTP/HTTPS的性能
大多数游戏服务器,为了支持更大的同时在线人数,通常会基于TCP或UDP,与客户端交互,这时就需要测试TCP/UDP的性能
针对把Linux作为一个软交换机或路由器来用的场景,需要关注网络包的处理能力PPS,重点关注网络层的转发性能
低层协议是其上的各层网络协议的基础,低层协议的性能,也就决定了高层网络性能
网络接口层和网络层,主要负责网络包的封装,寻址,路由,转发和接收,在这两个网络协议层中,每秒可以处理的网络包数PPS,就是最终的性能指标,特别是64B小包的处理能力,值得我们特别关注?????
传输过程中,帧之间有间距(12个字节),每个帧前面还有前导(7个字节)、帧首界定符(1个字节)。
帧理论转发率= BitRate/8 / (帧前导+帧间距+帧首界定符+报文长度)
最大的以太网吞吐量是通过单个传输节点实现的,当以太网帧处于最大大小时,该传输节点不会发生任何冲突。
以太网的帧开销是18字节,目的MAC(6)+源MAC(6)+Type(2)+CRC(4)。局域网规定IP最大传输单元1500字节,实际上加上以太网帧的18字节,再加上8B就是1518字节
以太网是无连接的,不可靠的服务,采用尽力传输的机制。IEEE标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域直径。512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。这就是为什么以太网要最小64个字节,同样,在正常的情况下,碰撞信号应该出现在64个字节之内,这是正常的以太网碰撞,如果碰撞信号出现在64个字节之后,叫 late collision。这是不正常的。
框架部分 |
最小镜框尺寸 |
最大画面尺寸 |
帧间间隙(9.6毫秒) |
12字节 |
12字节 |
MAC前置码(+ SFD) |
8字节 |
8字节 |
MAC目标地址 |
6个字节 |
6个字节 |
MAC源地址 |
6个字节 |
6个字节 |
MAC类型(或长度) |
2字节 |
2字节 |
有效载荷(网络PDU) |
46个字节 |
1,500字节 |
校验序列(CRC) |
4字节 |
4字节 |
总框物理尺寸 |
84字节 |
1,538字节 |
百兆端口线速包转发率=100Mbps/672=0.1488095Mpps,约等于0.14881Mpps,14万pps
千兆端口线速包转发率=1000Mbps/672=1.488095Mpps,约等于1.4881Mpps,148万pps
万兆端口线速包转发率=10000Mbps/672=14.88095Mpps,约等于14.881Mpps,1488万pps
arrival为每个数据包之间的时间间隔。
rte:runtime environment 即运行环境。
eal: environment abstraction layer 即抽象环境层。
pktgen是linux内核自带的发包工具,省却了用户态socket的参与,纯粹在内核构造skb送netdev的txqueue上,可以达到极高pps。pktgen只有UDP协议,适合做吞吐量测试。
在性能测试中首先要做的是建立基线(Baseline),这样后续的调整才会有一个参考标准。值得注意的是,在测试基线的时候,一定要保证系统工作在正常的状态下。
1) 网络数据包来了之后通过中断模式进行通知,而cpu处理中断的能力是一定的,如果网络中有大量的小数据包,造成了网络的拥堵,cpu处理不及时。
2) 操作系统的协议栈是单核处理,没办法利用现在操作系统的多核。
网络数据包从网卡到内核空间,再到用户空间,进行了多次数据拷贝,性能比较差。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。