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

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

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

Linux網(wǎng)絡(luò)性能瓶頸和解決方案

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:Linux閱碼場 ? 2023-04-06 14:43 ? 次閱讀

我們的活動在互聯(lián)網(wǎng)上每天都會產(chǎn)生海量的數(shù)據(jù)。我們知道這是一個“很大”的數(shù)字,但你知道到底有多大嗎?

據(jù)粗略估算,目前互聯(lián)網(wǎng)上每天新增的數(shù)據(jù)量超過 1.15 EB 。而預(yù)測到 2025 年,這一數(shù)字會增長到 491 EB。如果看不出來這個數(shù)字有多大,那么看下這個單位換算公式:1 EB = 1*1024*1024*1024 GB。

因為物聯(lián)網(wǎng)也在超快地發(fā)展,無處不在的 IoT 設(shè)備會產(chǎn)生更多的數(shù)據(jù),所以互聯(lián)網(wǎng)數(shù)據(jù)會呈指數(shù)級增長。那么無論是云計算、大數(shù)據(jù)分析應(yīng)用,還是 AI 處理,網(wǎng)絡(luò)傳輸能否及時“吞”下暴漲的數(shù)據(jù),就決定了服務(wù)的能力。

但目前承載互聯(lián)網(wǎng)服務(wù)的主流操作系統(tǒng) Linux卻存在網(wǎng)絡(luò)性能瓶頸,問題出在哪里呢?

1Linux 網(wǎng)絡(luò)的瓶頸

當(dāng) Linux 在 20世紀90 年代初設(shè)計開發(fā) Linux 內(nèi)核時,還無法預(yù)料到未來30年全球互聯(lián)網(wǎng)的規(guī)模,所以也不可能按現(xiàn)在的數(shù)據(jù)流量去做設(shè)計。而 Linux 內(nèi)核的基本結(jié)構(gòu)也保持到現(xiàn)在。

因此問題就在于 Linux 內(nèi)核網(wǎng)絡(luò)協(xié)議棧的實現(xiàn),相對于當(dāng)下的數(shù)據(jù)吞吐量需求,有以下三個原因會產(chǎn)生網(wǎng)絡(luò)傳輸瓶頸:

應(yīng)用程序和網(wǎng)絡(luò)協(xié)議棧在交換數(shù)據(jù)時,會頻繁地在用戶態(tài)與內(nèi)核態(tài)之間切換,導(dǎo)致延時產(chǎn)生;

數(shù)據(jù)要在用戶空間緩存與內(nèi)核空間緩存之間往來復(fù)制,耗費時間;

內(nèi)核協(xié)議棧需要對數(shù)據(jù)進行封裝和解析工作,占用 CPU 時鐘

48f54248-d43c-11ed-bfe3-dac502259ad0.png

內(nèi)核協(xié)議棧方案的數(shù)據(jù)流

辦法總比困難多,《Linux高性能網(wǎng)絡(luò)詳解:從DPDK、RDMA到XDP》一書就針對上述問題給出了包括軟件與硬件的解決辦法。本書的作者是業(yè)內(nèi)資深專家,他在書中以理論結(jié)合實踐,說明了 DPDK、RDMA、XDP 實現(xiàn) Linux 高性能網(wǎng)絡(luò)以及保障傳輸安全的方案。

2DPDK:低成本的高性能網(wǎng)絡(luò)技術(shù)

DPDK(Data Plane Development Kit,數(shù)據(jù)平面開發(fā)工具包)是在用戶態(tài)運行的一組軟件庫和驅(qū)動程序。它的一大優(yōu)點是可以在所有主要 CPU 體系上加速網(wǎng)絡(luò)數(shù)據(jù)包的處理,這樣一來,現(xiàn)有硬件無須升級,只要在內(nèi)核加裝相應(yīng)驅(qū)動就可以提升網(wǎng)絡(luò)性能,是一種低成本的實現(xiàn)方案。

DPDK 技術(shù)原理是繞過 Linux 內(nèi)核協(xié)議棧直接訪問網(wǎng)卡硬件,從而提高網(wǎng)絡(luò)數(shù)據(jù)包的處理速度和吞吐量。DPDK 將網(wǎng)卡的數(shù)據(jù)包直接映射到用戶空間,然后使用高效的數(shù)據(jù)包處理庫進行數(shù)據(jù)包的處理和轉(zhuǎn)發(fā),最后再將數(shù)據(jù)包發(fā)送回網(wǎng)卡。

在數(shù)據(jù)中心、云計算、虛擬化、網(wǎng)絡(luò)安全等應(yīng)用場景中,DPDK可以提高網(wǎng)絡(luò)應(yīng)用的性能和吞吐量、降低網(wǎng)絡(luò)延遲、提高網(wǎng)絡(luò)應(yīng)用的響應(yīng)速度和穩(wěn)定性,還可以支持多種網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)包格式,具有很好的靈活性和可擴展性。

DPDK 為處理數(shù)據(jù)包實現(xiàn)了一個“運行到完成”(run to completion)的模型,在執(zhí)行數(shù)據(jù)平面處理邏輯之前,必須先分配所有資源,然后以邏輯核上執(zhí)行單元(線程)的形式運行。該模型不支持調(diào)度器,以輪詢的方式訪問所有設(shè)備。

DPDK 的核心是一組庫,下圖是核心組件以及它們之間的依賴關(guān)系。

48fd0de8-d43c-11ed-bfe3-dac502259ad0.png

DPDK 核心組件

《Linux高性能網(wǎng)絡(luò)詳解:從DPDK、RDMA到XDP》詳細說明了 DPDK 的內(nèi)存管理與優(yōu)化、DPDK 的編譯與運行方法,介紹了測試和分析高性能網(wǎng)卡的工具與方法,是手把手式的貼心教程。這對于講述內(nèi)核驅(qū)動開發(fā)來說,是相當(dāng)友好的學(xué)習(xí)體驗。

接下來,我們了解一種軟硬件結(jié)合的解決方案。

3RDMA:軟硬兼施的高性能網(wǎng)絡(luò)技術(shù)

RDMA(Remote Direct Memory Access,遠程直接內(nèi)存訪問)提供了一種消息服務(wù),應(yīng)用程序可基于該服務(wù)直接讀寫遠程計算機上的虛擬內(nèi)存。

RDMA 相對于 DPDK 技術(shù),不僅繞過了軟件協(xié)議棧,最大的優(yōu)點是將數(shù)據(jù)封裝和解析工作放在了網(wǎng)卡里,由硬件來實現(xiàn)。這樣就降低了 CPU 的負載,特別適合高性能計算場景,例如分布式神經(jīng)網(wǎng)絡(luò)計算。

它的工作原理是通過操作系統(tǒng)的通信機制建立通道,由應(yīng)用程序在用戶態(tài)直接操作硬件,數(shù)據(jù)無須流經(jīng)內(nèi)核,從而實現(xiàn)高效的網(wǎng)絡(luò)傳輸性能。

下面我們從數(shù)據(jù)在兩臺主機之間的傳輸過程來了解一下 RDMA 的工作方式:

發(fā)送端網(wǎng)卡從本機內(nèi)存用戶空間復(fù)制數(shù)據(jù)到硬件緩沖區(qū),并添加協(xié)議頭,完成封裝工作;

發(fā)送端網(wǎng)卡將數(shù)據(jù)通過網(wǎng)線或光纖將數(shù)據(jù)發(fā)往對端;

接收端網(wǎng)卡收到數(shù)據(jù)后,進行協(xié)議解封裝,然后將數(shù)據(jù)從硬件緩沖區(qū)復(fù)制到本機用戶空間內(nèi)存中。

49088268-d43c-11ed-bfe3-dac502259ad0.png

RDMA 方案的數(shù)據(jù)流

由上述可知,采用 RDMA 方案可以穩(wěn)定獲得網(wǎng)卡最大速率傳輸能力,而不會因為 CPU 負載變化造成傳輸效能波動。但在部署組網(wǎng)時,必須采購支持 RDMA 的特殊網(wǎng)卡。

《Linux高性能網(wǎng)絡(luò)詳解:從DPDK、RDMA到XDP》對 RDMA 組網(wǎng)方案與性能評估測試有詳細說明,對于提供高性能計算服務(wù)的企業(yè)極具參考價值。

4XDP:高效傳輸?shù)谋U?/p>

DPDK 在傳輸數(shù)據(jù)時采用了操作系統(tǒng)內(nèi)核旁路方式,這固然提升了效率,但也失去了操作系統(tǒng)安全機制提供的防護。這樣就存在數(shù)據(jù)被截獲、盜取的風(fēng)險,因此需要有對數(shù)據(jù)的保護措施,同時保證高效傳輸。

XDP(eXpress Data Path,快速數(shù)據(jù)通路)是一種 BPF 的程序/代碼,可以理解為掛載在 BPF 處理流程內(nèi)的掛鉤方法。它能夠在網(wǎng)絡(luò)數(shù)據(jù)到達網(wǎng)卡時就對其處理,而不過多占用 CPU 計算資源。

BPF 提供了在內(nèi)核事件與應(yīng)用程序事件發(fā)生時執(zhí)行一段程序的機制。這使得內(nèi)核可編程,XDP 即基于 BPF 特性為數(shù)據(jù)高速傳輸提供了保障。目前,XDP 已經(jīng)是 Linux 內(nèi)核的一部分,與現(xiàn)有的內(nèi)核網(wǎng)絡(luò)協(xié)議棧完全兼容,二者可以協(xié)同工作 。

XDP 的典型處理流程如下:

從網(wǎng)卡收到數(shù)據(jù)包,提取數(shù)據(jù)報頭信息;

讀取或更新一些元數(shù)據(jù);

根據(jù)需要修改或者重寫數(shù)據(jù)包;

根據(jù)策略決定是丟包、重傳,還是重定向至內(nèi)核協(xié)議棧等。

4913a6b6-d43c-11ed-bfe3-dac502259ad0.png

典型的 XDP 程序的執(zhí)行流程

XDP 擁有諸多優(yōu)點。第一,它由 Linux 內(nèi)核社區(qū)維護,長期使用有保障,也無須額外安裝組件;第二,它可以與內(nèi)核協(xié)同,可復(fù)用內(nèi)核安全模型;第三,BPF能夠識別并拒絕執(zhí)行不安全指令;第四,它不會獨占 CPU,節(jié)約計算資源。

所以,在規(guī)劃高性能網(wǎng)絡(luò)實施方案時,需要將 DPDK 等技術(shù)與 XDP 相結(jié)合,盡可能地在性能與穩(wěn)定、安全之間取得最佳平衡。

5結(jié)語

對于企業(yè)來說,在規(guī)劃和實施網(wǎng)絡(luò)方案時,一定要從自身業(yè)務(wù)特點出發(fā),切忌巨額投資之后卻是高射炮打蚊子的效果。這也需要技術(shù)團隊對 Linux 網(wǎng)絡(luò)技術(shù)原理有透徹理解,然后才能選擇最適合的技術(shù)方案。

例如,業(yè)務(wù)發(fā)展穩(wěn)定且已部署大量 Linux 服務(wù)器的企業(yè),為了提升網(wǎng)絡(luò)效能,可以選擇 DPDK、XDP 技術(shù)。對于意欲進軍 AI 業(yè)務(wù)的新興企業(yè)來說,就要考慮充分解放算力,獲得最優(yōu)傳輸效能,可以選擇 RDMA 技術(shù)路線。而擁有諸多復(fù)雜服務(wù)的云計算廠商,則要混合部署多種網(wǎng)絡(luò)傳輸方案,同時保持穩(wěn)定和速率。

《Linux高性能網(wǎng)絡(luò)詳解:從DPDK、RDMA到XDP》就為實現(xiàn)上述需求提供了很好的指引。從對 DPDK、RDMA、XDP 技術(shù)的原理說明,到深入代碼級別的剖析,再以實例展示使用方法。企業(yè)據(jù)此就可以開展網(wǎng)絡(luò)環(huán)境評估、技術(shù)選型參考、規(guī)劃實施等工作。

在數(shù)據(jù)還將指數(shù)級暴增的未來,互聯(lián)網(wǎng)企業(yè)都要未雨綢繆,及時調(diào)整網(wǎng)絡(luò)環(huán)境,消除網(wǎng)絡(luò)傳輸瓶頸,在未來贏得先機!

審核編輯:湯梓紅

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

    關(guān)注

    54

    文章

    11163

    瀏覽量

    103392
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11312

    瀏覽量

    209713
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6838

    瀏覽量

    123385
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7571

    瀏覽量

    88883
  • 性能
    +關(guān)注

    關(guān)注

    0

    文章

    271

    瀏覽量

    19005

原文標題:Linux網(wǎng)絡(luò)性能上不去?三招打通瓶頸,從此網(wǎng)絡(luò)高性能

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    2009最新LED路燈技術(shù)設(shè)計和解決方案

    2009年11月19-20日,OFweek光電新聞網(wǎng),LEDWeekly將舉辦“2009最新LED路燈技術(shù)設(shè)計和解決方案”系列在線研討會。歡迎朋友們參加, 詳細情況看這里~: http://webinar.ofweek.com/index.action?user.id=2 有興趣的朋友可以來參加! 
    發(fā)表于 11-08 23:57

    儀表放大器--常見的應(yīng)用問題和解決方案

    儀表放大器--常見的應(yīng)用問題和解決方案很完整的資料!
    發(fā)表于 12-15 09:53

    高效輕型線程對Linux實時性能有什么影響

    簡介上個世紀,研發(fā)人員投入了大量精力提高Linux實時性能和行為,最著名的是PREEMPT_RT Linux實時擴展。最近,研發(fā)人員致力于研究適用于多核設(shè)備的Linux用戶空間
    發(fā)表于 05-16 10:45

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案
    發(fā)表于 09-17 06:53

    多核設(shè)備中的Linux實時性能怎么提高?

    解決方案允許從用戶空間中直接訪問基礎(chǔ)硬件,從而可避免因?qū)?Linux 內(nèi)核引入用戶空間應(yīng)用而帶來的額外系統(tǒng)開銷。這些用戶空間擴展(有多個)已首先由電信/網(wǎng)絡(luò)性能 IP 數(shù)據(jù)包處理系統(tǒng)
    發(fā)表于 04-06 08:17

    EMI耦合類型和解決方案

    、高性能和解決方案尺寸三個考慮因素通常相互沖突:只能優(yōu)先考慮一兩個,而放棄第三個,尤其當(dāng)設(shè)計期限臨近時。犧牲一些性能變得司空見慣;其實不應(yīng)該是這樣的。。
    發(fā)表于 10-22 14:10

    ADI鋰電池測試設(shè)備和解決方案

    ADI鋰電池測試設(shè)備和解決方案
    發(fā)表于 09-08 16:23 ?15次下載
    ADI鋰電池測試設(shè)備<b class='flag-5'>和解決方案</b>

    PFC+LLC的產(chǎn)品和解決方案分析

    PFC LLC英雄產(chǎn)品和解決方案
    的頭像 發(fā)表于 05-29 09:05 ?1.1w次閱讀
    PFC+LLC的產(chǎn)品<b class='flag-5'>和解決方案</b>分析

    Java:調(diào)用window的matlab遇到的問題和解決方案

    Java:調(diào)用window的matlab遇到的問題和解決方案
    的頭像 發(fā)表于 06-20 09:32 ?3350次閱讀
    Java:調(diào)用window的matlab遇到的問題<b class='flag-5'>和解決方案</b>

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案
    發(fā)表于 03-19 04:28 ?4次下載
    無線傳感器<b class='flag-5'>網(wǎng)絡(luò)</b>的挑戰(zhàn)<b class='flag-5'>和解決方案</b>

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案

    無線傳感器網(wǎng)絡(luò)的挑戰(zhàn)和解決方案
    發(fā)表于 03-21 13:41 ?1次下載
    無線傳感器<b class='flag-5'>網(wǎng)絡(luò)</b>的挑戰(zhàn)<b class='flag-5'>和解決方案</b>

    針對微處理器的Linux基礎(chǔ)和解決方案

    供了關(guān)鍵資源的網(wǎng)絡(luò)鏈接,旨在幫助嵌入式 Linux 解決方案的開發(fā)人員運行、構(gòu)建和使用這一功能豐富的生態(tài)系統(tǒng)。
    發(fā)表于 03-31 11:24 ?3次下載
    針對微處理器的<b class='flag-5'>Linux</b>基礎(chǔ)<b class='flag-5'>和解決方案</b>

    WP001-無線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案

    WP001-無線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案
    發(fā)表于 04-25 08:43 ?5次下載
    WP001-無線傳感器<b class='flag-5'>網(wǎng)絡(luò)</b>面臨的挑戰(zhàn)<b class='flag-5'>和解決方案</b>

    無線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案

    無線傳感器網(wǎng)絡(luò)面臨的挑戰(zhàn)和解決方案
    發(fā)表于 04-29 12:47 ?2次下載
    無線傳感器<b class='flag-5'>網(wǎng)絡(luò)</b>面臨的挑戰(zhàn)<b class='flag-5'>和解決方案</b>

    PCB金手指設(shè)計的常見問題和解決方案

    PCB金手指設(shè)計的常見問題和解決方案
    的頭像 發(fā)表于 12-25 10:09 ?2371次閱讀