零聲dpdk網(wǎng)絡(luò)存儲虛擬化開發(fā)
UIO(Linux Userspace I/O)
提供應(yīng)用空間下驅(qū)動程序的支持,也就是說網(wǎng)卡驅(qū)動是運行在用戶空間的,減下了報文在用戶空間和應(yīng)用空間的多次拷貝。如圖:DPDK繞過了Linux內(nèi)核的網(wǎng)絡(luò)驅(qū)動模塊,直接從網(wǎng)絡(luò)硬件到達用戶空間,不需要進行頻繁的內(nèi)存拷貝和系統(tǒng)調(diào)用。根據(jù)官方給出的數(shù)據(jù),DPDK裸包反彈每個包需要80個時鐘周期,而傳統(tǒng)Linux內(nèi)核協(xié)議棧每包需要2k~4k個時鐘周期。DPDK能顯著提升虛擬化網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)采集效率。

UIO技術(shù)將設(shè)備驅(qū)動分為用戶空間驅(qū)動和內(nèi)核空間驅(qū)動兩部分,內(nèi)核空間驅(qū)動主要負責設(shè)備資源分配、UIO設(shè)備注冊以及小部分中斷響應(yīng)函數(shù),驅(qū)動的大部分工作在用戶空間的驅(qū)動程序下完成。通過UIO框架提供的API接口將UIO的驅(qū)動注冊到內(nèi)核,注冊完成后將生成存有設(shè)備物理地址等信息的map文件,用戶態(tài)進程訪問該文件將設(shè)備對應(yīng)的內(nèi)存空間地址映射到用戶空間,即可直接操作設(shè)備的內(nèi)存空間,UIO技術(shù)使得應(yīng)用程序可以通過用戶空間驅(qū)動直接操作設(shè)備的內(nèi)存空間,避免了數(shù)據(jù)在內(nèi)核緩沖區(qū)和應(yīng)用程序緩沖區(qū)的多次拷貝,提供數(shù)據(jù)處理效率。
標簽: