小游戲源碼開發(fā),DPDK又是一個(gè)新的闖入者?
DPDK是一個(gè)開源的數(shù)據(jù)平面開發(fā)工具集,提供了一個(gè)用戶空間下的高效數(shù)據(jù)包處理庫函數(shù),通過環(huán)境抽象層旁路內(nèi)核協(xié)議棧、輪詢模式的報(bào)文無中斷收發(fā)、優(yōu)化內(nèi)存、緩沖區(qū)等多項(xiàng)技術(shù),實(shí)現(xiàn)了當(dāng)前小游戲源碼處理器架構(gòu)下的高性能報(bào)文轉(zhuǎn)發(fā)能力。
DPDK定義了大量API來抽象數(shù)據(jù)平面的轉(zhuǎn)發(fā)應(yīng)用,雖然很多小游戲源碼開發(fā)運(yùn)營商對DPDK很陌生,但不代表著它沒有做為。
?

一、大頁技術(shù)
處理器的內(nèi)存管理包含兩個(gè)概念,物理內(nèi)存和虛擬內(nèi)存,linux操作系統(tǒng)里面整個(gè)物理內(nèi)存按幀數(shù)來進(jìn)行管理,虛擬內(nèi)存按照頁面來進(jìn)行管理,內(nèi)存管理單元可以完成小游戲源碼開發(fā)從虛擬內(nèi)存地址到物理內(nèi)存地址的轉(zhuǎn)換,內(nèi)存管理但愿進(jìn)行地址轉(zhuǎn)換需要的信息保存在叫做頁表的數(shù)據(jù)結(jié)構(gòu)里,頁表查找是一種很耗時(shí)間的操作。
DPDK利用大頁技術(shù),幫助小游戲源碼開發(fā)的內(nèi)存進(jìn)行分配,實(shí)現(xiàn)對內(nèi)存池的管理,并預(yù)先分配好同樣大小的數(shù)據(jù)包。
?

二、輪詢技術(shù)
為了減少中斷處理開銷,DPDK會使用輪詢技術(shù)來處理網(wǎng)絡(luò)報(bào)文,網(wǎng)卡受到報(bào)文后,會直接將報(bào)文保存到小游戲源碼開發(fā)的處理器中,或者保存到已有的內(nèi)存中,并設(shè)置報(bào)文到達(dá)的標(biāo)志位,小游戲源碼開發(fā)可以周期性的輪詢報(bào)文到達(dá)的標(biāo)志位,檢測是否有新報(bào)文需要處理,不過需要注意的是這個(gè)過程是不包含中斷處理的,所以必須要保證小游戲平臺的處理能力。
?

三、CPU親和技術(shù)
由于小游戲源碼開發(fā)是基于分時(shí)調(diào)用方式來實(shí)現(xiàn)任務(wù)調(diào)度的,所以多個(gè)進(jìn)程或線程需要在多核處理器的某一個(gè)核上不斷進(jìn)行交替,在小游戲源碼開發(fā)的進(jìn)程切換過程中,需要將處理器的狀態(tài)寄存器保存在堆棧中,并回復(fù)當(dāng)前進(jìn)程的狀態(tài)信息,對小游戲源碼開發(fā)來說是一種額外的處理開銷,處理器緩存中的數(shù)據(jù)是需要進(jìn)行清除的,這也會導(dǎo)致處理器緩存的利用效果獎勵(lì)。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任