0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使Linux網(wǎng)絡(luò)協(xié)議棧中RFS功能優(yōu)化 MPSoC APU 的并行處理能力

FPGA技術(shù)江湖 ? 來(lái)源:FPGA技術(shù)江湖 ? 2023-06-17 08:59 ? 次閱讀

本文介紹如何使能 Linux 網(wǎng)絡(luò)協(xié)議棧中的 RFS(receive flow steering)功能以優(yōu)化 MPSoC APU 的并行處理能力,解決丟包問(wèn)題。

問(wèn)題描述:

在測(cè)試 ZCU102 PL 10G Ethernet with MCDMA 設(shè)計(jì)的性能時(shí),遇到 UDP 接收丟包率很高的情況,測(cè)試使用的工具是 iperf3。

測(cè)試過(guò)程:

Board side:在 core1~3 上各開一個(gè) iperf3 服務(wù)端用于收包,命令如下:

94988b74-0ca4-11ee-962d-dac502259ad0.png

Server side:使用與 zcu102 用光纖相連的服務(wù)器發(fā)送 UDP 幀,命令如下:

94af35ae-0ca4-11ee-962d-dac502259ad0.png

雙方的網(wǎng)卡都工作在 MTU1500 模式下,故數(shù)據(jù)段長(zhǎng)度設(shè)為 1472B,總帶寬暫設(shè)為 2400M。

94c92338-0ca4-11ee-962d-dac502259ad0.png

測(cè)試結(jié)果如上圖所示,丟包率超過(guò)了百分之十,故實(shí)際傳輸速度也達(dá)不到設(shè)定的帶寬,使用 mpstat 命令觀察 CPU 使用狀況,發(fā)現(xiàn)接收工程中 CPU0 的軟中斷占用達(dá)到93.3%。

解決方案:

使用 RFS 接收流導(dǎo)向,RFS 是 Linux 網(wǎng)絡(luò)協(xié)議棧提供的一項(xiàng)輔助性功能,RFS 的目標(biāo)是通過(guò)將數(shù)據(jù)包在內(nèi)核中的處理引導(dǎo)到使用該數(shù)據(jù)包的應(yīng)用程序線程對(duì)應(yīng)的 CPU 來(lái)提高數(shù)據(jù)緩存的命中率,詳情可參考 Linux 內(nèi)核文檔https://www.kernel.org/doc/html/latest/networking/scaling.html

在本文的測(cè)試中 Board side 上運(yùn)行了三個(gè) iperf 服務(wù)端在三個(gè) CPU 上,RFS 可以將發(fā)給某個(gè)服務(wù)端的數(shù)據(jù)包的部分處理工作交給這個(gè)服務(wù)端對(duì)應(yīng)的 CPU 執(zhí)行,以此平衡工作負(fù)載。
按照文檔中的說(shuō)明,rps_sock_flow_entries 設(shè)置為32768,本文使用的設(shè)計(jì)中 MCDMA 共有16個(gè)接收通道,所以 rps_flow_cnt 為32768/16=2048,另外共開啟了三個(gè) iperf 服務(wù)端,所以暫時(shí)只設(shè)置 rx-0~rx-2,綜上,執(zhí)行命令如下:

952af07c-0ca4-11ee-962d-dac502259ad0.png

重新測(cè)試后結(jié)果如上圖所示,丟包率大大降低,實(shí)際傳輸速度也達(dá)到了設(shè)定值,使用 mpstat 命令監(jiān)控傳輸期間的 CPU 狀況,發(fā)現(xiàn) CPU0 的軟中斷占用時(shí)間降低,而 CPU1~3 的軟中斷占用升高,可以看出實(shí)現(xiàn)了負(fù)載的分配,但是從總體來(lái)看,四個(gè) CPU 的總負(fù)載升高,說(shuō)明 RFS 還是有一定的額外工作開銷。

總結(jié):

使用 RFS 可以一定程度上解決 MPSoC 10G 以太網(wǎng)應(yīng)用(使用 MCDMA 時(shí))中的 UDP 接收丟包問(wèn)題,但是會(huì)產(chǎn)生額外的 CPU 開銷,如果丟包率在接受范圍內(nèi)可以選擇不開啟。
責(zé)任編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6754

    瀏覽量

    88613
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11161

    瀏覽量

    208462
  • APU
    APU
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    23673

原文標(biāo)題:如何解決 MPSoC 萬(wàn)兆以太網(wǎng)應(yīng)用中 UDP 接收丟包問(wèn)題

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    結(jié)合pppoe協(xié)議分析Linux網(wǎng)絡(luò)的實(shí)現(xiàn)方式

    這個(gè)標(biāo)題起得比較糾結(jié),之前熟知的PPPOE是作為PPP協(xié)議的底層載體,而實(shí)際上它也是一個(gè)完整的協(xié)議,不過(guò)它的實(shí)現(xiàn)比較簡(jiǎn)單,由它出發(fā),可以很容易理清楚Linux網(wǎng)絡(luò)
    的頭像 發(fā)表于 10-26 15:21 ?2576次閱讀
    結(jié)合pppoe<b class='flag-5'>協(xié)議</b>分析<b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>棧</b>的實(shí)現(xiàn)方式

    通信網(wǎng)絡(luò)協(xié)議之UDP協(xié)議技術(shù)解析

    在通常的網(wǎng)絡(luò)協(xié)議,TCP/IP協(xié)議是一個(gè)常見(jiàn)的示例,其中UDP和TCP都是傳輸層
    發(fā)表于 02-01 11:00 ?791次閱讀
    通信<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>之UDP<b class='flag-5'>協(xié)議</b>技術(shù)解析

    網(wǎng)絡(luò)協(xié)議-lwip2.1.2移植

    本篇目標(biāo):上一篇freertos的優(yōu)化(stm32f4_os_app),RTOS的移植已經(jīng)告一段落了,接下來(lái)就是移植重要的網(wǎng)絡(luò)協(xié)議-lw
    發(fā)表于 08-16 08:08

    使Linux內(nèi)核的SCSI協(xié)議

    U盤使用 SCSI協(xié)議,因此要先使Linux內(nèi)核的 SCSI協(xié)議,配置路徑如下:我們還需要使能 USB Mass Storage,也就
    發(fā)表于 12-16 06:27

    介紹RL-TCPnet網(wǎng)絡(luò)協(xié)議

    第4章 RL-TCPnet網(wǎng)絡(luò)協(xié)議簡(jiǎn)介本章節(jié)介紹RL-TCPnet網(wǎng)絡(luò)協(xié)議,讓大家對(duì) RL-
    發(fā)表于 03-02 06:30

    CH582如何優(yōu)化BLE協(xié)議的RAM占用?

    請(qǐng)問(wèn),如何能優(yōu)化下BLE協(xié)議的RAM空間,我編譯BLE中最基本的一個(gè)示例,光BLE協(xié)議就占去了16K RAM,分析map文件,發(fā)現(xiàn)其中6
    發(fā)表于 09-19 09:23

    基于網(wǎng)絡(luò)處理器的VxWorks高層協(xié)議開發(fā)

    基于網(wǎng)絡(luò)處理器的VxWorks高層協(xié)議開發(fā)
    發(fā)表于 03-29 12:27 ?21次下載

    LINUX網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)分析-SKBUFF的實(shí)現(xiàn)

    了解網(wǎng)絡(luò)協(xié)議的人都知道,網(wǎng)絡(luò)協(xié)議是一個(gè)有層次的軟件結(jié)構(gòu),層與層之間通過(guò)預(yù)定的接口傳遞
    發(fā)表于 04-07 22:32 ?26次下載

    Linux平臺(tái)雙協(xié)議主機(jī)網(wǎng)絡(luò)管控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    Linux平臺(tái)雙協(xié)議主機(jī)網(wǎng)絡(luò)管控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_賈銳
    發(fā)表于 01-07 19:00 ?2次下載

    Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議

    今天給大家介紹Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議 。 我們先看一下抽象的網(wǎng)絡(luò)協(xié)議
    的頭像 發(fā)表于 06-29 15:14 ?2291次閱讀

    如何解決MPSoC萬(wàn)兆以太網(wǎng)應(yīng)用UDP接收丟包問(wèn)題

    本文介紹如何使Linux 網(wǎng)絡(luò)協(xié)議RFS
    的頭像 發(fā)表于 06-14 10:10 ?837次閱讀
    如何解決<b class='flag-5'>MPSoC</b>萬(wàn)兆以太網(wǎng)應(yīng)用<b class='flag-5'>中</b>UDP接收丟包問(wèn)題

    tcpip協(xié)議是什么?tcpip協(xié)議有哪些協(xié)議?tcpip協(xié)議中報(bào)文封裝和解封裝過(guò)程

    tcpip協(xié)議是什么? TCP/IP協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)中使用的最常見(jiàn)的網(wǎng)絡(luò)
    的頭像 發(fā)表于 08-01 17:51 ?7967次閱讀
    tcpip<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>是什么?tcpip<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>有哪些<b class='flag-5'>協(xié)議</b>?tcpip<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>中報(bào)文封裝和解封裝過(guò)程

    Linux網(wǎng)絡(luò)技術(shù)的相關(guān)知識(shí)

    網(wǎng)絡(luò)是一個(gè)很復(fù)雜的協(xié)議,今天網(wǎng)絡(luò)這么發(fā)達(dá),網(wǎng)絡(luò)協(xié)議起到關(guān)鍵性作用。 這里就給大家詳細(xì)描述一
    的頭像 發(fā)表于 08-24 10:33 ?613次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>技術(shù)<b class='flag-5'>棧</b>的相關(guān)知識(shí)

    CAN協(xié)議與LIN協(xié)議介紹

    CAN協(xié)議 汽車CAN協(xié)議是一種軟件組件,用于實(shí)現(xiàn)汽車電子系統(tǒng)的CAN總線通信功能。它包含
    的頭像 發(fā)表于 10-27 16:16 ?2753次閱讀
    CAN<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>與LIN<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>介紹

    Linux網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作
    的頭像 發(fā)表于 09-10 09:51 ?194次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的實(shí)現(xiàn)