网络性能指标

我们去评测网络的质量时,不能笼统的说这个网络质量好,得有一个量化的指标去描述。

在Linux网络中,通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。

  • 带宽 表示链路的最大传输速率,单位通常为b/s(比特/秒)
  • 吞吐率 表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,网络的使用率 = 吞吐量 / 带宽
  • 延时 表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟
  • PPS 是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率,通常用来评估网络的转发能力

除了这些指标,网络的可用性、并发连接数、丢包率、重传率(重新传输的网络包比例)等也是常用的性能指标。

实际上,虽然网络性能优化的整体目标,是降低网络延迟(如 RTT)和提高吞吐量(如 BPS 和 PPS),但具体到不同应用中,每个指标的优化标准可能会不同,优先级顺序也大相径庭。

比如 NAT 网关,由于其直接影响整个数据中心的网络出入性能,所以 NAT 网关通常需要达到或接近线性转发,也就是说PPS是最主要的性能目标。再如,对于数据库、缓存等系统,快速完成网络收发,即低延迟,是主要的性能目标。

瓶颈排查及测试

为了客观合理地评估优化测试和效果,首先应该明确优化的标准,即要对系统和应用程序进行基准测试,得到网络协议栈各层的基准性能。在进行基准测试时,我们就可以按照协议栈的每一层来测试。由于底层是其上方各层的基础,底层性能也就决定了高层性能。

网络层

首先是网络接口层和网络层,它们主要负责网络包的封装、寻址、路由,以及发送和接收。每秒可处理的网络包数 PPS,就是它们最重要的性能指标(特别是在小包的情况下)。可以用内核自带的发包工具 pktgen ,来测试 PPS 的性能。

对于两端的路由情况,我们可以使用MTR 来探测路由。

传输层

再向上到传输层的 TCPUDP,它们主要负责网络传输。对它们而言,吞吐量(BPS)、连接数以及延迟,就是最重要的性能指标。可以使用 iperfnetperf ,来测试传输层的性能

应用层

最后在应用层,最需要关注的是吞吐量(BPS)、每秒请求数以及延迟等指标。可以用 wrkab 等工具,来测试应用程序的性能。

Last Updated:
Contributors: isno