青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoxiaoling

C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
  17 Posts :: 2 Stories :: 9 Comments :: 0 Trackbacks


dpdk是通過許多不同的緯度來(lái)加速包處理的,其中主要包括:

 

hugepage大頁(yè)內(nèi)存(進(jìn)程使用的是虛擬地址,一般頁(yè)表(4k)能映射的虛擬地址空間有限,使用大頁(yè)能減少換頁(yè)次數(shù)提高cache命中,通過mmap把大頁(yè)映射到用戶態(tài)的虛擬地址空間有用過mmap的都知道這是實(shí)現(xiàn)共享內(nèi)存的手段,所以dpdk還支持多進(jìn)程共享內(nèi)存)

 

cache預(yù)取 (每次預(yù)讀當(dāng)前數(shù)據(jù)相鄰前后的數(shù)據(jù)),批量操作數(shù)據(jù),cache line對(duì)齊(通過浪費(fèi)一點(diǎn)內(nèi)存將要操作的數(shù)據(jù)對(duì)齊)

 

接管了網(wǎng)卡用戶態(tài)驅(qū)動(dòng)使用輪詢而不是網(wǎng)卡中斷

 

將網(wǎng)卡rx tx隊(duì)列映射到用戶態(tài)空間實(shí)現(xiàn)真正的零拷貝(傳統(tǒng)堆棧至少也得一次拷貝,因?yàn)殛?duì)列空間在內(nèi)核而內(nèi)核和用戶態(tài)使用不同的地址空間)(傳統(tǒng)堆棧為了支持通用性,例如ipx等其他網(wǎng)絡(luò),將包處理過程分了很多層次,層之間的接口標(biāo)準(zhǔn)統(tǒng)一數(shù)據(jù)結(jié)構(gòu)就需要轉(zhuǎn)換,無(wú)形中帶來(lái)了巨大的成本,如osi七層模型而實(shí)用的就是tcp/ip四層模型)

 

線程綁定cpu

 

支持NUMA,不同的core屬于不同的node,每個(gè)node有自己的mempool減少?zèng)_突

 

無(wú)鎖環(huán)形隊(duì)列(沖突發(fā)生時(shí)也是一次cas的開銷)

 

dpdk通過tools/dpdk-setup.sh的腳本,通過編譯、掛載內(nèi)核模塊, 綁定網(wǎng)卡(先把網(wǎng)卡ifconfig down),設(shè)置hugepage后就可以使用了。

 

 

在內(nèi)核模塊igb加載時(shí),會(huì)注冊(cè)pci設(shè)備驅(qū)動(dòng)

static struct pci_driver igbuio_pci_driver = {

.name = "igb_uio",

.id_table = NULL,

.probe = igbuio_pci_probe,

.remove = igbuio_pci_remove,

};

 

在綁定網(wǎng)卡時(shí),會(huì)調(diào)用igbuio_pci_probe,使用用戶態(tài)驅(qū)動(dòng)uio接管網(wǎng)卡(中斷處理、mmap映射設(shè)備內(nèi)存到用戶空間)

系統(tǒng)啟動(dòng)時(shí),bios會(huì)將設(shè)備總線地址信息記錄在/sys/bus/pci/devices,dpdk程序啟動(dòng)時(shí)會(huì)去這里掃描pci設(shè)備,根據(jù)不同類型的NIC有對(duì)應(yīng)的初始化流程。在后面配置隊(duì)列的時(shí)候會(huì)把用戶態(tài)的隊(duì)列內(nèi)存地址通過硬件指令交給NIC,從而實(shí)現(xiàn)零拷貝。


 

如果NIC收到包,會(huì)做標(biāo)記,輪詢的時(shí)候通過標(biāo)記取數(shù)據(jù)包

while (nb_rx < nb_pkts) {

/*

 * The order of operations here is important as the DD status

 * bit must not be read after any other descriptor fields.

 * rx_ring and rxdp are pointing to volatile data so the order

 * of accesses cannot be reordered by the compiler. If they were

 * not volatile, they could be reordered which could lead to

 * using invalid descriptor fields when read from rxd.

 */

rxdp = &rx_ring[rx_id];

staterr = rxdp->wb.upper.status_error;

if (! (staterr & rte_cpu_to_le_32(E1000_RXD_STAT_DD)))

break;

rxd = *rxdp;

發(fā)包的輪詢就是輪詢發(fā)包結(jié)束的硬件標(biāo)志位,硬件發(fā)包完成會(huì)寫回標(biāo)志位,驅(qū)動(dòng)發(fā)現(xiàn)后再釋放對(duì)應(yīng)的描述符和緩沖塊。

 

KNI

通過創(chuàng)建一個(gè)虛擬網(wǎng)卡,將收到的包丟給協(xié)議棧

 /* 發(fā)送skb到協(xié)議棧 */

            /* Call netif interface */

            netif_receive_skb(skb);

 

POWER

在負(fù)載小的時(shí)候沒有必要使用輪詢模式,這時(shí)可以打開網(wǎng)卡中斷 使用eventfd  epoll通知用戶層

 

Ring

無(wú)鎖環(huán)形隊(duì)列的核心就是操作頭尾索引,先將頭尾索引賦給臨時(shí)變量,再把尾索引往后跳n個(gè)位置,利用cas判斷頭如果還是在原來(lái)的位置就指向尾否則就重復(fù)這個(gè)過程,然后在操作中間跳過的n個(gè)元素就是安全的了,此時(shí)頭尾索引應(yīng)該指向同一個(gè)位置,如果不同應(yīng)該是有別的線程也在操作,重復(fù)等待即可。(這里有個(gè)細(xì)節(jié),索引是只加不減的,因?yàn)槭黔h(huán)形隊(duì)列索引又是unsigned 32bits,所以每次取數(shù)據(jù)前把索引模隊(duì)列長(zhǎng)度-1, uint32_t mask;           /**< Mask (size-1) of ring. */即可)

 

Windows下使用vmware虛擬機(jī)的時(shí)候出現(xiàn)EAL: Error reading from file descriptor,根據(jù)網(wǎng)上的說法打了patch還是不行,后來(lái)嘗試掛載內(nèi)核模塊的時(shí)候不加載vfio模塊就可以了

 

posted on 2017-02-05 14:08 clcl 閱讀(903) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中文在线资源观看视频网站免费不卡| 亚洲日本视频| 久久久久久久999| 欧美一级日韩一级| 艳妇臀荡乳欲伦亚洲一区| 久久人人爽人人| 欧美国产先锋| 久久久精品网| 一区二区欧美国产| 亚洲国产欧美另类丝袜| 久久频这里精品99香蕉| 久久久久久伊人| 蜜臀99久久精品久久久久久软件| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美成人免费一级人片100| 欧美激情精品久久久久| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 暖暖成人免费视频| 小辣椒精品导航| 免费视频亚洲| 欧美三级午夜理伦三级中文幕| 国产日韩欧美在线看| 91久久亚洲| 午夜久久黄色| 欧美韩日精品| 午夜精品久久久久久久| 欧美99久久| 国产色产综合色产在线视频| 亚洲国产一区二区视频| 久久日韩粉嫩一区二区三区| 噜噜噜在线观看免费视频日韩| 日韩亚洲欧美成人| 亚洲黄色成人网| 一区二区三区黄色| 久久疯狂做爰流白浆xx| 亚洲福利在线观看| 亚洲午夜精品久久久久久app| 午夜视频在线观看一区二区| 欧美成人乱码一区二区三区| 国产免费一区二区三区香蕉精| 亚洲国产综合在线看不卡| 亚洲自拍偷拍视频| 亚洲激情二区| 久久婷婷成人综合色| 国产精品一区久久久久| 一本综合精品| 亚洲国产精品一区二区久| 欧美一级淫片aaaaaaa视频| 欧美激情精品久久久六区热门| 国内成人精品2018免费看| 亚洲综合国产| 一区二区三区产品免费精品久久75| 久久久精品国产免大香伊| 欧美不卡视频一区| 欧美日韩一区二区在线观看视频| 国产日韩精品一区二区| 99re在线精品| 欧美激情二区三区| 久久精品成人| 国内成+人亚洲| 久久99在线观看| 亚洲午夜在线| 欧美午夜视频网站| 中文精品在线| av成人激情| 欧美日韩精品欧美日韩精品| 亚洲日本va午夜在线电影| 免费欧美日韩国产三级电影| 久久久精品动漫| 亚洲国产精品久久人人爱蜜臀| 老鸭窝91久久精品色噜噜导演| 欧美在线观看视频在线| 国产午夜亚洲精品不卡| 久久久久久久久久久久久久一区| 先锋影音国产一区| 精品成人一区二区| 欧美高清视频在线| 欧美精品观看| 小黄鸭精品aⅴ导航网站入口| 亚洲制服av| 红桃视频亚洲| 最新国产乱人伦偷精品免费网站| 欧美精品国产精品| 欧美一区二区三区精品| 久久久久久色| 亚洲视频在线观看网站| 欧美亚洲视频一区二区| 亚洲高清在线观看一区| 亚洲欧洲日产国产网站| 国产精品高清在线观看| 理论片一区二区在线| 欧美日韩一二区| 久久综合网色—综合色88| 国产精品magnet| 午夜精品短视频| 老司机午夜精品视频| 亚洲一卡久久| 裸体丰满少妇做受久久99精品| 亚洲一二三四区| 美国十次成人| 欧美主播一区二区三区美女 久久精品人| 久久精品中文字幕一区| 一区二区毛片| 久久久久久综合网天天| 亚洲欧美日韩国产| 欧美成人高清| 久久尤物视频| 欧美性大战久久久久久久蜜臀| 久久国产手机看片| 夜夜嗨av色一区二区不卡| 久久综合精品一区| 亚洲午夜av电影| 亚洲午夜国产一区99re久久| 欧美专区中文字幕| 一区二区三区精密机械公司| 欧美在线观看www| 亚洲欧美视频在线观看| 麻豆国产精品一区二区三区| 久久av一区二区| 亚洲精品久久久久久久久久久久久| 亚洲天堂av在线免费| 亚洲国产裸拍裸体视频在线观看乱了| 老司机免费视频一区二区三区| 亚洲精品在线观看视频| 在线一区二区日韩| 国内一区二区三区| 亚洲字幕在线观看| 伊人久久婷婷色综合98网| 91久久夜色精品国产九色| 国产欧美日韩精品一区| 亚洲大胆人体视频| 国产精品视频1区| 久久久久久国产精品mv| 欧美激情在线播放| 久久婷婷激情| 国产精品区一区二区三| 欧美成人国产va精品日本一级| 欧美午夜视频在线观看| 99人久久精品视频最新地址| 韩国三级电影久久久久久| 亚洲一区二区三区四区在线观看| 在线国产亚洲欧美| 亚洲欧美日韩高清| 在线中文字幕一区| 国产精品国产三级国产普通话99| 欧美高清视频www夜色资源网| 国产日韩欧美中文在线播放| 亚洲精品网址在线观看| 亚洲激情一区| 久久综合久久久| 亚洲福利视频一区| 伊人成人开心激情综合网| 午夜精品久久久久久久99水蜜桃| 国产精品99久久久久久宅男| 欧美电影专区| 欧美一级久久久久久久大片| 国产香蕉久久精品综合网| 亚洲一区二区三区四区五区午夜| 亚洲一本视频| 亚洲精品三级| 亚洲免费在线播放| 亚洲国产视频直播| 国产综合自拍| 欧美精品一区二区蜜臀亚洲| 免费成人高清视频| 国产视频在线观看一区二区| 一个人看的www久久| 亚洲毛片在线| 欧美精品久久一区二区| 国产欧美韩国高清| 在线视频中文亚洲| 一本色道久久综合狠狠躁的推荐| 99re热这里只有精品免费视频| 久久综合伊人77777麻豆| 91久久线看在观草草青青| 91久久在线视频| 欧美性大战久久久久久久| avtt综合网| 麻豆国产va免费精品高清在线| 韩国一区二区在线观看| 欧美日韩国产三级| aⅴ色国产欧美| 美女国产一区| 日韩亚洲欧美综合| 国产在线欧美| 亚洲午夜一二三区视频| 免费亚洲网站| 欧美中文字幕在线| 有坂深雪在线一区| 国产精品区二区三区日本| 久久精品亚洲一区| 亚洲综合视频在线| 欧美激情精品久久久久久大尺度| 性做久久久久久| 亚洲第一色中文字幕| 国产欧美一区二区三区久久| 蜜月aⅴ免费一区二区三区 | 国产精品久久久久久久久婷婷| 亚洲欧美视频在线观看视频| 一区二区三区四区五区视频|