求教,Xilinx Zynqmp,4核cortex-a53,主頻1.3GHz,SMP架構無NUMA,單獨L1 Cache,共享L2 Cache,外接10G以太網,ARM單核性能弱,iperf3測驗TCP只有280MB/s,網卡支持多達16通道通道DMA,但是所有發送通道共用一個中斷,所有接收通道共用一個CPU中斷,也就是說總共兩個中斷,驅動中斷函式中通過讀暫存器判斷是哪個通道的中斷(所以這里即使多通道不共用中斷,中斷函式也沒有根據中斷號直接定位哪個通道進行資料收發),驅動支持NAPI,NAPI的權重設定為64,測驗發現,此數值改大改小均會引起性能下降,由于單核性能上不去,打算運行兩個TCP socket,希望帶寬可以乘以2,兩個iperf3用-A進行綁核到CPU2和CPU3,網卡中斷在CPU0,top命令也看到綁核成功,兩路iperf3帶寬相加還是280MB/s,將發送和接收中斷分別放到CPU0和CPU1,性能下降。嘗試針對每個通道預分配多個skb,用完再一次性分配多個skb,此時該通道NAPI驅動的接收函式應該會卡住一小段時間,這個時候CPU會自動從其他通道發送嗎,實際測驗性能下降,看來還是CPU還是一核干活,多核圍觀,求教了。
uj5u.com熱心網友回復:
NAPI實際是中斷+輪詢的方式運行的,可以分析下輪詢有沒有正常運行。轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/111761.html
標籤:內核源代碼研究區
