① 网络基准测试
表示链路的最大传输速率,单位是b/s(比特 / 秒)。
表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制
表示从网络请求发出后,一直收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。
Packet Per Second(包 / 秒) 的缩写,表示以网络包为单位的传输速率。PPS通常用来评估网络的转发能力。
Linux 内核自带的高性能网络测试工具 pktgen。pktgen 支持丰富的自定义选项,方便你根据实际需要构造所需网络包,从而更准确地测试出目标服务器的性能。
不过,在 Linux 系统中,你并不能直接找到 pktgen 命令,因为 pktgen 作为一个内核线程来运行,需要你加载 pktgen 内核模块后,再通过 /proc 文件系统来交互。
根据上面的结果,我们发现,PPS 为 12 万,吞吐量为 61 Mb/s,没有发生错误。那么,12 万的 PPS 好不好呢?
作为对比,你可以计算一下千兆交换机的 PPS。交换机可以达到线速(满负载时,无差错转发),它的 PPS 就是 1000Mbit 除以以太网帧的大小,即 1000Mbps / ((64+20)*8bit) = 1.5 Mpps(其中,20B 为以太网帧前导和帧间距的大小)。
即使是千兆交换机的 PPS,也可以达到 150 万 PPS,比我们测试得到的 12 万大多了。所以,看到这个数值你并不用担心,现在的多核服务器和万兆网卡已经很普遍了,稍做优化就可以达到数百万的 PPS。
而且,如果你用了DPDK 或 XDP ,还能达到千万数量级。
iperf 和 netperf 都是最常用的网络性能测试工具,用来测试TCP 和 UDP的吞吐量。它们都以客户端和服务器通信的方式,测试一段时间内的平均吞吐量。这里以 iperf 命令为例。
从上面可以看出目标机器的吞吐量为866 Mb/s。
测试HTTP的性能,也有大量工具可以使用,比如 ab,webbench等。这里以 ab 为例
TODO