天天看點

vpp 配置檔案中 corelist-workers 和 workers 之間的對應關系

        最近在測試 vpp 時,遇到了一個 SIGBUS 錯誤,最後查明是配置檔案中 corelist-workers 與 workers 配置不一緻導緻的。下面就簡單記錄一下。

1)在 src/vlib/threads.c:1004 行會根據 *(tr->coremask) 的值來啟動若個線程,線程的個數和 *(tr->coremask) 變量中被置位的數量相同;

2)*(tr->coremask) 的值在配置檔案中指定,比如:corelist-workers 20-23,即指定 4 個位;

3)在 src/vlib/threads.c:803 行會根據 workers 的值初始化對應數量的線程執行環境;

4)workers 的值在配置檔案中指定,比如:workers n,即指定 n 個 worker。

異常情況:

        如果配置的 workers 的值小于 corelist-workers 中核的數量,則會導緻在啟動某些線程時沒有對應的執行環境,進而報錯。

解決方法1:

        在配置檔案中不要指定 corelist-workers。

解決方法2:

        指定 corelist-workers 時,確定核的數量與 workers 的值相同。