中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種面向云架構(gòu)的高性能網(wǎng)絡(luò)接口實現(xiàn)技術(shù)

        一種面向云架構(gòu)的高性能網(wǎng)絡(luò)接口實現(xiàn)技術(shù)

        作者: 時間:2015-03-02 來源:網(wǎng)絡(luò) 收藏

          0概述

        本文引用地址:http://www.antipu.com.cn/article/270287.htm

          在傳統(tǒng)的電信IT產(chǎn)品中,高性能一般采用特殊的硬件模塊來實現(xiàn),比如網(wǎng)絡(luò)處理器、ASIC、等等。這些特殊硬件模塊一般會采用特殊的架構(gòu)和指令集對網(wǎng)絡(luò)數(shù)據(jù)收發(fā)過程進行優(yōu)化以達到更好的性能。然而,這也相應(yīng)使得開發(fā)和維護這些模塊的成本非常的昂貴,同時還有一個無法解決的問題是基于這些特殊硬件模塊實現(xiàn)的不能移植到云中,因為它們跟硬件的耦合度太高了。摩爾定律的出現(xiàn),使得通用處理器的性能得到了極大的提升,這也為基于通用處理器實現(xiàn)高性能提供了可能,同時也為移植到云中提供了前提條件。

          

         

          圖1 網(wǎng)絡(luò)接口實現(xiàn)的發(fā)展趨勢

          本文對基于通用X86架構(gòu)處理器和Linux下的傳統(tǒng)網(wǎng)絡(luò)接口實現(xiàn)模式進行了分析,同時針對其不足提出了一種高性能網(wǎng)絡(luò)接口實現(xiàn)方案-HPNI.

          1傳統(tǒng)網(wǎng)絡(luò)接口實現(xiàn)分析

          傳統(tǒng)網(wǎng)絡(luò)接口實現(xiàn)如圖2所示,Linux下傳統(tǒng)網(wǎng)絡(luò)接口處理流程一般包含以下幾個步驟:

          

         

          圖2 傳統(tǒng)網(wǎng)絡(luò)接口實現(xiàn)

          (1)系統(tǒng)啟動之后,內(nèi)核中的驅(qū)動程序進行相應(yīng)的資源分配以及網(wǎng)卡寄存器配置,比如分配數(shù)據(jù)包緩沖區(qū),使能DMA傳輸通道等等;

          (2)網(wǎng)卡初始化完成以后,當(dāng)網(wǎng)卡從網(wǎng)絡(luò)收到數(shù)據(jù)包的時候,會將數(shù)據(jù)包通過DMA方式傳送到內(nèi)核中的數(shù)據(jù)包緩沖區(qū)中,并生成相應(yīng)的數(shù)據(jù)包描述符存放在環(huán)形隊列里面;

          (3)網(wǎng)卡觸發(fā)硬中斷通知內(nèi)核,內(nèi)核在中斷處理程序中產(chǎn)生相應(yīng)軟中斷給應(yīng)用程序收包任務(wù);

          (4)應(yīng)用程序收包任務(wù)通過系統(tǒng)調(diào)用收取數(shù)據(jù)包,數(shù)據(jù)包也將從內(nèi)核空間拷貝到用戶空間;

          (5)收包任務(wù)通過共享隊列把數(shù)據(jù)包傳遞給處理任務(wù);

          (6)處理任務(wù)通過共享隊列把處理好的數(shù)據(jù)包傳遞給發(fā)包任務(wù);

          (7)發(fā)包任務(wù)通過系統(tǒng)調(diào)用把數(shù)據(jù)包傳遞給內(nèi)核,通過采用一次內(nèi)存拷貝實現(xiàn);

          (8)驅(qū)動程序根據(jù)存放在環(huán)形隊列里面的數(shù)據(jù)包描述符啟動相應(yīng)的DMA傳輸任務(wù);

          (9)數(shù)據(jù)包傳輸完成后,網(wǎng)卡觸發(fā)中斷通知內(nèi)核做相應(yīng)處理。

          下面先對傳統(tǒng)網(wǎng)絡(luò)接口的性能關(guān)鍵點進行分析。

          1.1中斷和系統(tǒng)調(diào)用

          Linux下傳統(tǒng)網(wǎng)絡(luò)接口實現(xiàn)的一個關(guān)鍵因素是中斷技術(shù),網(wǎng)卡通過中斷與內(nèi)核保持同步。但中斷處理會引入很大的性能損失,因為當(dāng)CPU處理中斷的時候,它必須儲存和恢復(fù)自己的狀態(tài),進行上下文切換以及在進入和退出中斷處理程序的時候可能引入緩存(cache)操作。在進行大流量數(shù)據(jù)包處理的時候,由于CPU被頻繁地中斷,由此帶來的性能損失會非常嚴(yán)重。

          當(dāng)使用Linux系統(tǒng)提供的標(biāo)準(zhǔn)socket接口來實現(xiàn)網(wǎng)絡(luò)通信時,會觸發(fā)大量的系統(tǒng)調(diào)用,當(dāng)應(yīng)用程序通過socket系統(tǒng)調(diào)用進行網(wǎng)絡(luò)通信時,需要經(jīng)歷從用戶態(tài)到內(nèi)核態(tài)的切換以及其反向過程,在切換過程當(dāng)中需要進行上下文的保存,比如對相關(guān)寄存器進行堆棧壓棧操作,保存當(dāng)前指令指針等等。這些操作都會消耗系統(tǒng)資源,當(dāng)處理高速的數(shù)據(jù)流量時,隨著系統(tǒng)調(diào)用數(shù)量的急劇增加而導(dǎo)致系統(tǒng)資源的大量消耗。

          1.2內(nèi)存相關(guān)性能問題

          1.2.1內(nèi)存拷貝

          在使用標(biāo)準(zhǔn)套接字進行數(shù)據(jù)包收發(fā)時,數(shù)據(jù)在應(yīng)用程序和內(nèi)核之間進行傳遞必須通過內(nèi)存拷貝來完成,原因在于用戶空間的內(nèi)存和內(nèi)核空間的內(nèi)存是處在物理內(nèi)存不同的位置上。內(nèi)存拷貝是一個非常消耗資源的過程,當(dāng)需要收發(fā)的數(shù)據(jù)包流量很大時,這種開銷將會極大地影響系統(tǒng)的性能。


        上一頁 1 2 3 4 5 下一頁

        關(guān)鍵詞: 網(wǎng)絡(luò)接口 FPGA

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉