VPP buffer不足

现象

VPP在转发时,如果有莫名丢包。而且在命令行输入vppctl show error的时候出现某个节点no available buffer字样。或者在show interface的时候出现out of buffer等字样。 说明可能是buffer不足导致的丢包。

调试

在命令行输入vppctl show buffers看一下avail字段是否变为0了。如果是0的话那就是没有可用的buffer了。如下所示,Avail字段就为0了

vpp# show buffers 
Pool Name            Index NUMA  Size  Data Size  Total  Avail  Cached   Used  
default-numa-0         0     0   2496     2048    16800    0       0     16800 
default-numa-1         1     1   2496     2048    16800  16800     0       0  

目前发现造成这个问题的原因可能有几个,主要是调整启动配置文件startup.conf,启动dpdk项里面,num-rx-queues 4和num-tx-queues 4等字段会影响buffer占用,这个队列的数值越大,占用的buffer越多。可以适当调小试一下。
也可以增大buffer的空间,我使用的VPP版本是19.04 release版本,可以在startup.conf中添加下面的内容,数值可以自行调整。

buffers
{
    buffers-per-numa 30000
}

由于VPP的版本更新比较快,但是资料更新很慢,所以很多资料上的参数都可能已经不适用了,我这个也不保证不同版本可以适用。主要的思路就是查看自己版本对应的VPP源码,找到src\vlib\buffer.c目录,查看vlib_buffers_configurebuffer模块的配置函数,例如我这个版本代码是下面,解析命令行时,有解析关键字buffers-per-numa所以就可以使用buffers-per-numa去尝试添加到startup.conf文件中调试。

while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
    {
      if (unformat (input, "buffers-per-numa %u", &bm->buffers_per_numa))
	;
      else if (unformat (input, "default data-size %u",
			 &bm->default_data_size))
	;
      else
	return unformat_parse_error (input);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章