DPDK編程指南(翻譯)( 十一)

11.定時(shí)器庫

定時(shí)器庫為DPDK執(zhí)行單元提供定時(shí)器服務(wù),使得執(zhí)行單元可以為異步操作執(zhí)行回調(diào)函數(shù)宪巨。定時(shí)器庫的特性如下:

  • 定時(shí)器可以周期執(zhí)行捅伤,也可以執(zhí)行一次。
  • 定時(shí)器可以在一個(gè)核心加載并在另一個(gè)核心執(zhí)行难衰。但是必須在調(diào)用rte_timer_reset()中指定它股毫。
  • 定時(shí)器提供高精度(取決于檢查本地核心的定時(shí)器到期的rte_timer_manage()的調(diào)用頻率)。
  • 如果應(yīng)用程序不需要召衔,可以在編譯時(shí)禁用定時(shí)器铃诬,并且程序中不調(diào)用rte_timer_manage()來提高性能。

定時(shí)器庫使用rte_get_timer_cycles()獲取高精度事件定時(shí)器(HPET)或CPU時(shí)間戳計(jì)數(shù)器(TSC)提供的可靠時(shí)間參考苍凛。

該庫提供了添加趣席,刪除和重新啟動(dòng)定時(shí)器的接口。API基于BSD callout()醇蝴,可能會(huì)有一些差異宣肚。詳細(xì)請(qǐng)參考callout手冊(cè)。

11.1.實(shí)現(xiàn)細(xì)節(jié)

定時(shí)器以每個(gè)邏輯核為基礎(chǔ)進(jìn)行跟蹤悠栓,一個(gè)邏輯核上要維護(hù)的所有掛起的定時(shí)器霉涨,按照定時(shí)器到期順序插入到跳躍表數(shù)據(jù)結(jié)構(gòu)按价。

所使用的跳躍表有十個(gè)層,表中的每個(gè)條目都以1/4的概率顯示在每個(gè)層上笙瑟。這意味著所有條目都存在于第0層中楼镐,每4個(gè)條目中的1個(gè)條目存在于第一層,每16個(gè)中1個(gè)條目存在于第2層往枷,等等框产。同時(shí),這意味著從邏輯核的定時(shí)器列表中添加和刪除條目可以在log(n)時(shí)間內(nèi)完成错洁,最多4 ^ 10個(gè)條目秉宿,即每個(gè)邏輯核約有1,000,000個(gè)定時(shí)器。

定時(shí)器結(jié)構(gòu)包含一個(gè)稱為狀態(tài)的特殊字段屯碴,它是定時(shí)器狀態(tài)(stopped描睦,pending,running导而,config)及其所有者(lcore id)的聯(lián)合體酌摇。根據(jù)定時(shí)器狀態(tài),我們可以知道定時(shí)器當(dāng)前是否存在于列表中:

  • STOPPED:沒有所有者嗡载,不再鏈表中窑多。
  • CONFIG:由一個(gè)邏輯核持有,其他邏輯核不能修改洼滚,是否存在于跳表中取決于以前的狀態(tài)埂息。
  • PENDING:由一個(gè)邏輯核持有,當(dāng)前在跳表中遥巴。
  • RUNNING:由一個(gè)邏輯核持有千康,當(dāng)前在跳表中,不能由其他邏輯核修改铲掐。

不允許在定時(shí)器處于CONFIG或RUNNING狀態(tài)時(shí)復(fù)位或停止定時(shí)器拾弃。當(dāng)修改定時(shí)器的狀態(tài)時(shí),應(yīng)使用CAP指令來保證狀態(tài)修改操作(狀態(tài)+所有者)是原子操作摆霉。

在rte_timer_manage()函數(shù)里面豪椿,跳躍表作為常規(guī)的鏈表,通過沿著包含所有計(jì)時(shí)器條目的第0層鏈表迭代携栋,直到遇到尚未到期的條目為止搭盾。當(dāng)列表中有條目,但是沒有任何條目定時(shí)器到期時(shí)婉支,為了提高性能鸯隅,第一個(gè)定時(shí)器條目的到期時(shí)間保存在每個(gè)邏輯和計(jì)時(shí)器列表結(jié)構(gòu)本身內(nèi)部。在64位平臺(tái)上向挖,可以直接檢查該值蝌以,而無需對(duì)整個(gè)結(jié)構(gòu)進(jìn)行鎖定炕舵。(由于到期時(shí)間維持為64位值,所以在32位平臺(tái)上無法直接對(duì)該值進(jìn)行檢查跟畅,而不使用(CAS)指令或使用鎖機(jī)制咽筋,因此,一旦數(shù)據(jù)結(jié)構(gòu)被上鎖碍彭,此額外的檢查將被跳過晤硕。)在64位和32位平臺(tái)上悼潭,在調(diào)用邏輯核的計(jì)時(shí)器列表為空的情況下庇忌,對(duì)rte_timer_manage()的調(diào)用將直接返回而不進(jìn)行鎖定。=

11.2.用例

定時(shí)器庫用于定期調(diào)用舰褪,如垃圾收集器或某些狀態(tài)機(jī)(ARP皆疹,橋接等)。

11.3.參考

  • callout manual :喚醒功能占拍,提供定時(shí)器到期執(zhí)行的功能略就。
  • HPET :有關(guān)高精度事件定時(shí)器(HPET)的信息。

原文鏈接:http://www.reibang.com/p/1c1f840913ca 晃酒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末表牢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贝次,更是在濱河造成了極大的恐慌崔兴,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛔翅,死亡現(xiàn)場離奇詭異敲茄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)山析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門堰燎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笋轨,你說我怎么就攤上這事秆剪。” “怎么了爵政?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵鸟款,是天一觀的道長。 經(jīng)常有香客問我茂卦,道長何什,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任等龙,我火速辦了婚禮处渣,結(jié)果婚禮上伶贰,老公的妹妹穿的比我還像新娘。我一直安慰自己罐栈,他們只是感情好黍衙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荠诬,像睡著了一般琅翻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柑贞,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天方椎,我揣著相機(jī)與錄音,去河邊找鬼钧嘶。 笑死棠众,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的有决。 我是一名探鬼主播闸拿,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼书幕!你這毒婦竟也來了新荤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤台汇,失蹤者是張志新(化名)和其女友劉穎苛骨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體励七,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡智袭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掠抬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼野。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖两波,靈堂內(nèi)的尸體忽然破棺而出瞳步,到底是詐尸還是另有隱情,我是刑警寧澤腰奋,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布单起,位于F島的核電站,受9級(jí)特大地震影響劣坊,放射性物質(zhì)發(fā)生泄漏嘀倒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望测蘑。 院中可真熱鬧灌危,春花似錦、人聲如沸碳胳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挨约。三九已至味混,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诫惭,已是汗流浹背翁锡。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贝攒,地道東北人盗誊。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓时甚,卻偏偏與公主長得像隘弊,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荒适,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理梨熙,服務(wù)發(fā)現(xiàn),斷路器刀诬,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 1. 簡介 本文檔包含DPDK軟件安裝和配置的相關(guān)說明咽扇。旨在幫助用戶快速啟動(dòng)和運(yùn)行軟件。文檔主要描述了在Linux...
    半天妖閱讀 17,902評(píng)論 0 22
  • 本文將從以下幾個(gè)部分來介紹多線程陕壹。 第一部分介紹多線程的基本原理质欲。 第二部分介紹Run loop。 第三部分介紹多...
    曲年閱讀 1,257評(píng)論 2 14
  • (一) 他們是一家三口糠馆。 妻子和丈夫飯后各做各的事嘶伟。妻子喜歡煲電話粥,即使是越洋電話又碌,也常常因?yàn)殚|蜜的舍不得九昧,聊起...
    我為大寶帶鹽閱讀 1,098評(píng)論 0 0
  • 大家早點(diǎn)睡吧铸鹰。
    洋蔥花閱讀 365評(píng)論 10 9