SPDK (part 3, virtio/vhost基礎)

KVM

KVM

virtio

virtio是linux下的半虛擬化框架,半虛擬化相對于全虛擬化而已意荤,即虛機需要感知當前的虛擬化狀態(tài),通過虛機中的driver配合host上的device進行通信實現(xiàn)全功能的虛擬化,主要作用在于:1)統(tǒng)一的驅(qū)動阻肿,之前各個虛擬化系統(tǒng)vmware,xen沮尿,kvm都有自己的塊設備丛塌,網(wǎng)絡設備的驅(qū)動较解;2)提供統(tǒng)一接口實現(xiàn)緩存buffer的發(fā)布和使用;3)設備發(fā)現(xiàn)和配置赴邻。

virtio layer

其中virtqueue作為guest os內(nèi)存的一部分用來實現(xiàn)前后端(guest os和qemu)的連接印衔,virtqueue的內(nèi)存分布內(nèi)部通過vring的一個數(shù)據(jù)結(jié)構(gòu)來提煉。用戶通過get_buf和kick實現(xiàn)數(shù)據(jù)從guest os向qemu的寫入姥敛,通過get_buf實現(xiàn)數(shù)據(jù)從qemu的讀取奸焙。

virtqueue數(shù)據(jù)結(jié)構(gòu)

有興趣可以閱讀想法提出者?Rusty Russell?的論文?https://ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf

回到之前的對比,guest virtio driver通過訪問port地址空間向qemu的virtio device發(fā)送IO發(fā)起消息彤敛。而設備通過讀寫irqfd或者IOCTL fd_vm將I/O的完成情況通知給Guest的驅(qū)動与帆。irqfd和ioeventfd是KVM為用戶程序基于內(nèi)核eventfd機制提供的通知機制,以實現(xiàn)異步的IO處理(這樣發(fā)起IO請求的vcpu將不會阻塞)墨榄。guest通過kvm提供的通知機制向qemu發(fā)送I/O消息玄糟,從guest切換到kvm,再由kvm切換到用戶空間的qemu進程袄秩,qemu完成對設備的讀寫茶凳。

KVM+QEMU

vhost

相比于virtio減少了一次上下文切換(host切回到guest),vhost-net負責將虛機的報文從NIC發(fā)出播揪。

vhost

vhost-user

vhost-user的提交者是Luke Gorrie贮喧,他也是snabbswitch的作者。vhost-backend從原來kernel中的vhost-net變成了用戶空間的snabbswitch猪狈,snabbswitch直接接管物理網(wǎng)卡的驅(qū)動箱沦,從而直接控制網(wǎng)絡信息的輸入輸出。snabbswitch主要使用了下面的技術來提高性能:

- 采用了大頁來作為host和vm之間通信的內(nèi)存空間

- 用戶態(tài)操作網(wǎng)卡雇庙,使用類似于netmap的zero copy技術來加速對物理設備的訪問

- 使用numa技術谓形,加快中斷響應速率

值得一提的是使用snabbswitch后,不用再使用原來的tap設備模擬的網(wǎng)卡疆前。

使用vhost-user技術寒跳,從虛擬機到host上實現(xiàn)了數(shù)據(jù)的zero copy(通過大頁共享),host到NIC的zero copy(snabbswitch實現(xiàn)的驅(qū)動)竹椒,能進一步加快數(shù)據(jù)的傳輸童太。

vhost-user

DPDK support

DPDK便是一個在用戶態(tài)可以直接操作物理網(wǎng)卡的庫函數(shù),它和vhost-user結(jié)合便可以實現(xiàn)類似于snabbswitch一樣性能強勁的用戶態(tài)交換機了胸完。2015年6月16日dpdk vhost-user ports特性合并到了ovs社區(qū)书释,dpdkvhostuser port將創(chuàng)建unix socket將虛機的virtio-net虛擬網(wǎng)卡的網(wǎng)卡緩沖區(qū)共享給物理機上的ovs port設備。

Virtio specification

virtqueue

包括三部分赊窥,分別是描述符表爆惧,可用環(huán)(buffer),已用環(huán)(buffer):

? Descriptor Table

? Available Ring

? Used Ring

參閱:

1. qemu-kvm. git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git

2. Linux-2.6{/virt/kvm/*, arch/x86/kvm/*, drivers/virtio/*, drivers/block/virtio_blk.c, drivers/vhost/*}

3. Intel? Virtualization Technology for Directed I/O

4. Intel? 64 and IA-32 Architectures Software Developer’s Manual 3B.

5. Towards Virtual Passthrough I/O on Commodity Devices. 2008.

6. kvm: the Linux Virtual Machine Monitor. 2007.

7. virtio: Towards a De-Facto Standard For Virtual I/O Devices. 2008

8. High Performance Network Virtualization with SR-IOV. 2010.

9. QEMU, a Fast and Portable Dynamic Translator. 2005.

10. https://blog.csdn.net/wj_j2ee/article/details/7978259

11. https://blog.csdn.net/quqi99/article/details/47321023

12.?https://blog.csdn.net/qq_15437629/article/details/77899905

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锨能,一起剝皮案震驚了整個濱河市扯再,隨后出現(xiàn)的幾起案子芍耘,更是在濱河造成了極大的恐慌,老刑警劉巖熄阻,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斋竞,死亡現(xiàn)場離奇詭異,居然都是意外死亡饺律,警方通過查閱死者的電腦和手機窃页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門跺株,熙熙樓的掌柜王于貴愁眉苦臉地迎上來复濒,“玉大人,你說我怎么就攤上這事乒省∏删保” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵袖扛,是天一觀的道長砸泛。 經(jīng)常有香客問我,道長蛆封,這世上最難降的妖魔是什么唇礁? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮惨篱,結(jié)果婚禮上盏筐,老公的妹妹穿的比我還像新娘。我一直安慰自己砸讳,他們只是感情好琢融,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著簿寂,像睡著了一般漾抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上常遂,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天纳令,我揣著相機與錄音,去河邊找鬼克胳。 笑死泊碑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的毯欣。 我是一名探鬼主播馒过,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼酗钞!你這毒婦竟也來了腹忽?” 一聲冷哼從身側(cè)響起来累,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窘奏,沒想到半個月后嘹锁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡着裹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年领猾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骇扇。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔竿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出少孝,到底是詐尸還是另有隱情继低,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布稍走,位于F島的核電站袁翁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏婿脸。R本人自食惡果不足惜粱胜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狐树。 院中可真熱鬧焙压,春花似錦、人聲如沸褪迟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽味赃。三九已至掀抹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間心俗,已是汗流浹背傲武。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留城榛,地道東北人揪利。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像狠持,于是被迫代替她去往敵國和親疟位。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344