VPP buffer不足

現(xiàn)象

VPP在轉(zhuǎn)發(fā)時(shí),如果有莫名丟包。而且在命令行輸入vppctl show error的時(shí)候出現(xiàn)某個(gè)節(jié)點(diǎn)no available buffer字樣。或者在show interface的時(shí)候出現(xiàn)out of buffer等字樣。 說明可能是buffer不足導(dǎo)致的丟包。

調(diào)試

在命令行輸入vppctl show buffers看一下avail字段是否變?yōu)?了。如果是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  

目前發(fā)現(xiàn)造成這個(gè)問題的原因可能有幾個(gè),主要是調(diào)整啟動(dòng)配置文件startup.conf,啟動(dòng)dpdk項(xiàng)里面,num-rx-queues 4和num-tx-queues 4等字段會(huì)影響buffer占用,這個(gè)隊(duì)列的數(shù)值越大,占用的buffer越多。可以適當(dāng)調(diào)小試一下。
也可以增大buffer的空間,我使用的VPP版本是19.04 release版本,可以在startup.conf中添加下面的內(nèi)容,數(shù)值可以自行調(diào)整。

buffers
{
    buffers-per-numa 30000
}

由于VPP的版本更新比較快,但是資料更新很慢,所以很多資料上的參數(shù)都可能已經(jīng)不適用了,我這個(gè)也不保證不同版本可以適用。主要的思路就是查看自己版本對(duì)應(yīng)的VPP源碼,找到src\vlib\buffer.c目錄,查看vlib_buffers_configurebuffer模塊的配置函數(shù),例如我這個(gè)版本代碼是下面,解析命令行時(shí),有解析關(guān)鍵字buffers-per-numa所以就可以使用buffers-per-numa去嘗試添加到startup.conf文件中調(diào)試。

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);
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容