本文介绍一下buffer监控插件,这个插件可以跟踪vpp所有node节点buffer缓冲区的使用情况。主要用途是检测buffer缓存区是否存在泄漏。通过跟踪node节点中缓存区分配和释放的数量,以及node节点输入帧和输出帧buffer的数量。计算一个节点中buffered缓存区的数量=alloc input-free-output。需要注意一点是buffer监控会影响性能。
此插件功能代码就一个C文件,总共代码量也就300来行,相当简洁。只支持命令行设置和查询,不支持api接口。下面就来介绍一个功能具体使用方法。
1、开启buffer监控功能
代码语言:javascript复制#打开和关闭buffer监控功能开关
set buffer traces [on|off]
2、查询监控数据
下面是创建一个tap0接口,并分别配置vpp和内核tap0接口ip地址,从内核ping vpp接口ip地址,查询相关node节点trace情况:
代码语言:javascript复制#查询监控开关状态
vpp# show buffer traces status
buffers tracing is on
#仅显示input类型node节点的数据情况
vpp# show buffer traces
Pool Name Index NUMA Size Data Size Total Avail Cached Used
default-numa-0 0 0 2496 2048 16800 15136 88 1576
Node Allocated Freed In Out Buffered
dpdk-input 0 0 0 37 -37
virtio-input 352 0 0 371 -19
#查询当前ping报文运行各个node节点的数据情况
vpp# show buffer traces verbose
Pool Name Index NUMA Size Data Size Total Avail Cached Used
default-numa-0 0 0 2496 2048 16800 15136 28 1636
Node Allocated Freed In Out Buffered
ip4-icmp-echo-request 0 0 89 89 0
arp-reply 0 0 3 3 0
arp-input 0 0 3 3 0
virtio-input 96 0 0 92 4
ip4-input 0 0 89 89 0
ip4-rewrite 0 0 89 89 0
ip4-receive 0 0 89 89 0
ip4-load-balance 0 0 89 89 0
ip4-lookup 0 0 89 89 0
ip4-icmp-input 0 0 89 89 0
ethernet-input 0 0 92 92 0
interface-output 0 0 3 3 0
tap0-tx 0 92 92 0 0
tap0-output 0 0 92 92 0
3、清除buffer监控统计数据
代码语言:javascript复制vpp# clear buffer traces
vpp# show buffer traces verbose
Pool Name Index NUMA Size Data Size Total Avail Cached Used
default-numa-0 0 0 2496 2048 16800 15136 88 1576
Node Allocated Freed In Out Buffered
要想了解node节点统计计数如何实现的,那就赶紧去阅读一下此插件吧,肯定对定位buffer泄漏问题有很大帮助。