公務(wù)員期刊網(wǎng) 論文中心 正文

嵌入式平臺高并發(fā)低時延性能提升設(shè)計

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了嵌入式平臺高并發(fā)低時延性能提升設(shè)計范文,希望能給你帶來靈感和參考,敬請閱讀。

嵌入式平臺高并發(fā)低時延性能提升設(shè)計

摘要:一般嵌入式平臺的處理能力不及服務(wù)器,對于高并發(fā)低時延處理,通常采用select接收報文后,再使用多線程進行后續(xù)處理的機制實現(xiàn),這種設(shè)計對于高并發(fā)網(wǎng)絡(luò)數(shù)據(jù)的實時處理有一定的局限性。本文對軟硬件架構(gòu)進行設(shè)計,提出了一種epoll并發(fā)接收、內(nèi)存池隊列流轉(zhuǎn)及業(yè)務(wù)異步處理機制,實現(xiàn)對高并發(fā)網(wǎng)絡(luò)數(shù)據(jù)的低時延處理,能夠大幅提升處理性能

關(guān)鍵詞;高并發(fā);低時延;epoll;內(nèi)存池隊列;異步處理

對于系統(tǒng)來說,高吞吐量關(guān)系到系統(tǒng)單位時間內(nèi)能夠服務(wù)的用戶數(shù)量,是系統(tǒng)服務(wù)性能指標(biāo)的一個重要體現(xiàn),特別是對用戶數(shù)量規(guī)模巨大的系統(tǒng),必然會出現(xiàn)大量用戶并發(fā)請求處理的情況,如何保障系統(tǒng)能夠快速響應(yīng)所有用戶的業(yè)務(wù)請求是需要解決的重點。本文以某嵌入式平臺處理大量用戶高并發(fā)數(shù)據(jù)請求為基礎(chǔ),對高并發(fā)低時延處理進行了性能提升設(shè)計。

1硬件架構(gòu)設(shè)計

該嵌入式平臺主要由主控單元和計算引擎等功能模塊組成,以調(diào)用方式對系統(tǒng)發(fā)送的大量用戶數(shù)據(jù)(UDP)進行計算處理。主控單元直接與外部傳輸線路關(guān)聯(lián),完成外部網(wǎng)絡(luò)線路接入、協(xié)議解析、數(shù)據(jù)提取、計算引擎調(diào)度、協(xié)議封裝、數(shù)據(jù)發(fā)送等功能。主控單元對外提供千兆以太網(wǎng)接口,對內(nèi)通過業(yè)務(wù)轉(zhuǎn)發(fā)總線與計算引擎關(guān)聯(lián),調(diào)用計算引擎進行數(shù)據(jù)計算。計算引擎主要由國產(chǎn)FPGA組成,用于實現(xiàn)業(yè)務(wù)數(shù)據(jù)的高速計算處理。內(nèi)部集成高速算法模塊,通過標(biāo)準業(yè)務(wù)傳輸總線,與主控單元接口,實現(xiàn)數(shù)據(jù)的高速交互。

2軟件架構(gòu)設(shè)計

通常的select接收報文+多線程處理機制的局限性如下:一方面,select對能夠支持的socket數(shù)量是有一定限制的,默認最大值為1024,且當(dāng)select擁有一個很大的socket集合時,select每次調(diào)用都會線性掃描全部的集合,導(dǎo)致效率呈現(xiàn)線性下降;另一方面,大量業(yè)務(wù)線程的創(chuàng)建、維護及線程之間的調(diào)度,使得Linux系統(tǒng)開銷太大,無法應(yīng)對長時間的高并發(fā)數(shù)據(jù)處理。因此需要優(yōu)化軟件架構(gòu),提升高并發(fā)低時延處理性能。

2.1epoll并發(fā)接收

為實現(xiàn)高并發(fā)網(wǎng)絡(luò)數(shù)據(jù)的接入,軟件采用epoll并發(fā)接收機制進行處理。對epoll而言,最大支持的并發(fā)數(shù)上限為最大可以打開文件的數(shù)目,這個數(shù)字一般遠大于2048。并發(fā)處理對帶寬和時延指標(biāo)的影響較大,分析如下:(1)并發(fā)對帶寬指標(biāo)的影響多通道并發(fā)對性能幾乎沒有影響,因為對接收程序而言,大量數(shù)據(jù)包來自一個通道,還是來自N個通道(每個通道各幾個數(shù)據(jù)包),幾乎沒有本質(zhì)區(qū)別。(2)并發(fā)對時延指標(biāo)的影響并發(fā)對時延指標(biāo)的影響巨大。對于單通道收發(fā),所有數(shù)據(jù)包來自一個通道,嵌入式平臺連續(xù)從單通道中接收數(shù)據(jù)進行處理并依次向外應(yīng)答。對于多通道收發(fā),如圖2所示,如果把所有進入嵌入式平臺的報文看作來自一個通路,則和單通道沒有區(qū)別。但假設(shè)有多個通道(以3個通道為例)都以高速模式向嵌入式平臺發(fā)送數(shù)據(jù)。嵌入式平臺接收時,必然按數(shù)據(jù)發(fā)送的先后順序,先接收到3個通道各自的“包1”進行處理,再繼續(xù)接收到3個通道的“包2”。很明顯,第一個通道“包2”的應(yīng)答理論上一定在第3個通道“包1”的應(yīng)答之后。而時延是按照每個通道單獨計算的,因此當(dāng)前通道的報文會被其他通道先到的報文搶占嵌入式平臺的運算資源,導(dǎo)致排隊,進而時延加大。而且隨著通道數(shù)的增加,時延會進一步惡化。epoll的并發(fā)接收機制能夠很好地解決該問題。

2.2內(nèi)存池隊列處理模型

內(nèi)存池作用:接收突發(fā)的高速數(shù)據(jù)報文(≥10000包/秒),確保不丟包。由于數(shù)據(jù)包在處理過程中,計算處理一般比較耗時,如果采用接收一包,處理一包,應(yīng)答一包的機制,將會導(dǎo)致后續(xù)未能及時接收的報文大量丟包(內(nèi)核只能緩存一定數(shù)量的報文)??梢酝ㄟ^內(nèi)存池對突發(fā)的高速數(shù)據(jù)報文進行緩存,如圖3所示,使用單鏈表構(gòu)造一個內(nèi)存池鏈表結(jié)構(gòu),每個內(nèi)存單元包含一個預(yù)先分配好的能夠接收最大報文長度的內(nèi)存地址(按業(yè)務(wù)數(shù)據(jù)報文長度,一般2K-4K)。結(jié)合內(nèi)存池鏈表,設(shè)計一種基于該鏈表的內(nèi)存池隊列處理模型,如圖4所示,數(shù)據(jù)報文在嵌入式平臺內(nèi)部的流轉(zhuǎn)處理過程如下:(1)軟件啟動時,創(chuàng)建一個空閑內(nèi)存池鏈表(簡稱空閑鏈表),用于接收網(wǎng)絡(luò)上的高速數(shù)據(jù)報文,初始內(nèi)存單元個數(shù)為N(一般根據(jù)2G內(nèi)存空間,至少設(shè)置1萬個內(nèi)存單元,可以更大);另外創(chuàng)建一個任務(wù)內(nèi)存池鏈表(簡稱任務(wù)鏈表),初始內(nèi)存單元個數(shù)為0;(2)當(dāng)epoll檢測到高速數(shù)據(jù)報文到來時,先從空閑鏈表中申請一個空閑的內(nèi)存單元;(3)申請到空閑內(nèi)存單元后,將數(shù)據(jù)報文接收到該內(nèi)存單元,并將該內(nèi)存單元插入到任務(wù)鏈表中;(4)業(yè)務(wù)線程檢測到有任務(wù)需要處理時,從任務(wù)鏈表中取出一個待處理的內(nèi)存單元,進行協(xié)議解析、調(diào)用計算引擎進行計算處理等操作;(5)處理完畢后,一方面將應(yīng)答報文通過網(wǎng)絡(luò)發(fā)送出去,另一方面將該內(nèi)存單元回收到空閑鏈表中,以便繼續(xù)使用。分析:(1)整個軟件生命周期中,只會在初始化時分配N個內(nèi)存單元;(2)N個內(nèi)存單元在空閑鏈表和任務(wù)鏈表中來回流轉(zhuǎn),均為指針操作,不會增加數(shù)據(jù)拷貝等開銷。(3)只要網(wǎng)絡(luò)上瞬間的突發(fā)報文數(shù)不超過N,就不會造成丟包。一般至少將N設(shè)置為系統(tǒng)每秒最大數(shù)據(jù)報文數(shù)量的2倍及以上。

2.3異步處理模型

為了避免應(yīng)用程序處于空閑等待狀態(tài),同時確保FPGA始終處于滿負荷計算狀態(tài),必須采用異步處理模型提高處理效率。異步處理模型如圖5所示,設(shè)計如下:(1)FPGA設(shè)計接收緩存隊列,允許最多緩存M包。M值根據(jù)最大包長確定,隊列越長,性能越強;(2)在FPGA可用緩存隊列包數(shù)不為空的前提下,持續(xù)向FPGA發(fā)送待計算的報文(通過協(xié)議字段能夠知道FPGA現(xiàn)在的可用緩存隊列包數(shù)是多少);(3)FPGA調(diào)用接口提供異步調(diào)用模式,當(dāng)FPGA處理完畢將計算結(jié)果返回應(yīng)用程序后,應(yīng)用程序自動調(diào)用回調(diào)函數(shù),在回調(diào)函數(shù)中,將計算結(jié)果按照協(xié)議要求進行封裝后發(fā)送至網(wǎng)絡(luò),并回收內(nèi)存單元到空閑鏈表;(4)通過異步處理模型,保證FPGA始終在不停地計算緩存隊列中的待處理報文,提高嵌入式平臺整體的處理性能;

3結(jié)語

對于網(wǎng)絡(luò)數(shù)據(jù)高并發(fā)低時延的處理性能提升,一直是我們不斷追求突破的關(guān)鍵技術(shù)點。本文設(shè)計了一種高并發(fā)低時延處理機制,通過epoll并發(fā)接收網(wǎng)絡(luò)上的高吞吐量數(shù)據(jù),使用內(nèi)存池對突發(fā)的高速數(shù)據(jù)報文進行緩存,采用隊列處理模型完成數(shù)據(jù)報文在嵌入式平臺內(nèi)部的高效流轉(zhuǎn),輔以異步處理模型提高報文處理效率,達到了性能提升的目的。

參考文獻:

[2]崔濱,萬旺根,余小清,樓順天.基于EPOLL機制的LINUX網(wǎng)絡(luò)游戲服務(wù)器實現(xiàn)方法[J].微計算機信息,2006,7(3):64-66.

作者:夏安祥 王育紅 羅健 單位:中國電子科技集團公司第三十研究所

相關(guān)熱門標(biāo)簽