Linux性能优化-网络性能优化思路

第三类,在长连接的场景中,通常使用 Keepalive 来检测 TCP 连接的状态,以便对端连接断开后,可以自动回收。比如,就以 VXLAN 为例,它在原来报文的基础上,增加了 14B 的以太网头部、 8B 的 VXLAN 头部、8B 的 UDP 头部以及 20B 的 IP 头部。自然,链路层的优化,也是围绕这些基本功能进行的。虽然网络性能优化的整体目标,是降低网络延迟(如 RTT)和提高吞吐量(如 BPS 和 PPS),但具体到不同应用中,每个指标的优化标准可能会不同,优先级顺序也大相径庭。
摘要由CSDN通过智能技术生成

【推荐阅读】

深入理解SR-IOV和IO虚拟化

浅析linux内核网络协议栈--linux bridge

virtio-net 实现机制【一】(图文并茂)

一,确定优化目标

优化前,首先要确定观察到的网络性能指标,要达到多少才合适?

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

NAT 网关通常需要达到或接近线性转发,也就是说, PPS 是最主要的性能目标。

对于数据库、缓存等系统,快速完成网络收发,即低延迟,是主要的性能目标。

而对于我们经常访问的 Web 服务来说,则需要同时兼顾吞吐量和延迟。

为了更客观合理地评估优化效果,我们首先应该明确优化的标准,即要对系统和应用程序进行基准测试,得到网络协议栈各层的基准性能。

Linux 网络协议栈,是我们需要掌握的核心原理。它是基于 TCP/IP 协议族的分层结构,用一张图来表示这个结构。

由于底层是其上方各层的基础,底层性能也就决定了高层性能。底层性能指标就是对应高层的极限性能。

  • 首先是网络接口层和网络层,它们主要负责网络包的封装、寻址、路由,以及发送和接收。每秒可处理的网络包数 PPS,就是它们最重要的性能指标(特别是在小包的情况下)。可以用内核自带的发包工具 pktgen ,来测试 PPS 的性能。
  • 再向上到传输层的 TCP 和 UDP,它们主要负责网络传输。对它们而言,吞吐量(BPS)、连接数以及延迟,就是最重要的性能指标。可以用 iperf 或 netperf ,来测试传输层的性能。不过要注意,网络包的大小,会直接影响这些指标的值。所以需要测试一系列不同大小网络包的性能。
  • 最后,再往上到了应用层,最需要关注的是吞吐量(BPS)、每秒请求数以及延迟等指标。可以用 wrk、ab 等工具,来测试应用程序的性能。

测试场景要尽量模拟生产环境,这样的测试才更有价值。可以到生产环境中,录制实际的请求情况,再到测试中回放。

二,网络性能工具

建议从指标和工具两个不同维度出发,整理记忆网络相关的性能工具。

第一个维度,从网络性能指标出发,把性能工具同系统工作原理关联起来,对性能问题有宏观的认识和把握。当想查看某个性能指标时,就能清楚知道,可以用哪些工具。

下图可以把它当成一个“指标工具”指南来使用

再来看第二个维度,从性能工具出发。可以更快上手使用工具,迅速找出想要观察的性能指标。特别是在工具有限的情况下,要充分利用好手头的每一个工具,用少量工具也要尽力挖掘出大量信息。

下图可以当成一个“工具指标”指南使用,需要时查表即可:

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值