learning:Buffers monitoring plugin

2023-03-07 17:31:05 浏览数 (1)

本文介绍一下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泄漏问题有很大帮助。

0 人点赞