日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
說(shuō)一說(shuō)虛擬化繞不開(kāi)的IO半虛擬化

說(shuō)一說(shuō)虛擬化繞不開(kāi)的IO半虛擬化

作者:kvm虛擬化 2018-01-17 15:15:22

云計(jì)算

虛擬化 QEMU-KVM作為一個(gè)VMM提供了全虛擬化環(huán)境,guest不經(jīng)過(guò)任何修改就能運(yùn)行在KVM環(huán)境中。不過(guò)KVM在IO虛擬化方面,使用QEMU純軟件的方式來(lái)模擬IO設(shè)備,效率并不高。在KVM中,要想提高IO虛擬化的效率,就要使用半虛擬化的方式:virtio。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出信宜免費(fèi)做網(wǎng)站回饋大家。

QEMU-KVM作為一個(gè)VMM提供了全虛擬化環(huán)境,guest不經(jīng)過(guò)任何修改就能運(yùn)行在KVM環(huán)境中。不過(guò)KVM在IO虛擬化方面,使用QEMU純軟件的方式來(lái)模擬IO設(shè)備,效率并不高。在KVM中,要想提高IO虛擬化的效率,就要使用半虛擬化的方式:virtio。

簡(jiǎn)單介紹全虛擬化和半虛擬化

在全虛擬化 中,guest操作系統(tǒng)運(yùn)行在VMM之上,并不知道它已被虛擬化,不需要任何更改就可以工作。相反,在半虛擬化中,guest操作系統(tǒng)不僅知道它運(yùn)行在 VMM上,還需要做修改來(lái)對(duì)接VMM的代碼。

在全虛擬化中,VMM必須模擬設(shè)備硬件,盡管這種模擬很徹底很干凈,但它效率低代碼最復(fù)雜。在半虛擬化模式中,guest和 VMM共同合作,模擬更加高效。

IO全虛擬化使用QEMU軟件模擬

1.當(dāng)虛擬機(jī)進(jìn)行I/O操作時(shí),根據(jù)《也談Intel的cpu虛擬化》我們知道,虛擬機(jī)通過(guò)VM exit將cpu控制權(quán)返回給VMM,從而陷入到root模式下的ring0內(nèi)的VMM,進(jìn)行”陷入模擬“。

2.將本次I/O請(qǐng)求的信息存放到IO共享頁(yè),QEMU從IO共享頁(yè)讀取信息后由硬件模擬代碼來(lái)模擬出本次的IO操作,并調(diào)用內(nèi)核中的硬件驅(qū)動(dòng)把IO請(qǐng)求發(fā)送到物理硬件,完成之后將結(jié)果放回到IO共享頁(yè)。

3.KVM模塊中的捕獲代碼讀取IO共享頁(yè)中的結(jié)果,把結(jié)果返回到guest。

4.通過(guò)VM entry,guest再次獲得cpu控制權(quán),根據(jù)IO返回的結(jié)果進(jìn)行處理。

說(shuō)明:VMM和guest的IO信息共享不光IO共享頁(yè)一種,還可以使用DMA。QEMU不把IO結(jié)果放到IO共享頁(yè)中,而是通過(guò)DMA將結(jié)果直接寫(xiě)到guest的內(nèi)存中去,然后通過(guò)KVM模塊告訴客戶機(jī)DMA操作已經(jīng)完成。

下面這張圖(來(lái)自網(wǎng)絡(luò))是軟件模擬IO的流程圖:

IO半虛擬化virtio

guest和host使用使用virtio前后端的技術(shù)減少了guest IO時(shí)的VM Exit(guest和host的上下文切換)并且使guest和host能并行處理IO來(lái)提高throughput和減少latency。但是IO的路徑并沒(méi)有比全虛擬化技術(shù)減少。下面是virtio的IO路徑:

guest在IO請(qǐng)求時(shí),首先guest需要切換到host kernel,然后host kernel會(huì)切換到hyperisor來(lái)處理guest的請(qǐng)求,hypervisor通過(guò)系統(tǒng)調(diào)用將數(shù)據(jù)包發(fā)送到外部網(wǎng)絡(luò)后切換回host kernel,然后再切換回guest。這個(gè)長(zhǎng)IO路徑和全虛擬化時(shí)相同的,只是減少了VM exit和VM entry。

vhost

為了解決virio的IO路徑太長(zhǎng)的問(wèn)題,vhost產(chǎn)生了。它是位于host kernel的一個(gè)模塊,用于和guest直接通信,所以數(shù)據(jù)交換就在guest和host kernel間進(jìn)行,減少了上下文的切換。vhost相對(duì)與virto架構(gòu),把virtio驅(qū)動(dòng)后端驅(qū)動(dòng)從用戶態(tài)放到了內(nèi)核態(tài)中(vhost的內(nèi)核模塊充當(dāng)virtiO后端驅(qū)動(dòng))

下面這張圖(來(lái)自redhat)描述了在virtio和vhost(vhost-net時(shí)vhost架構(gòu)中的網(wǎng)卡實(shí)現(xiàn))架構(gòu)下內(nèi)核的不同工作流程:

下面這張圖(來(lái)自intel)介紹了vhost工作原理:

vhost-user

vhost-user和vhost類似,只是使用一個(gè)用戶態(tài)進(jìn)程vhost-user代替了內(nèi)核中的vhost模塊。vhost-user進(jìn)程和Guset之間時(shí)通過(guò)共享內(nèi)存的方式進(jìn)行數(shù)據(jù)操作。vhost-user相對(duì)與vhost架構(gòu),把virtio驅(qū)動(dòng)后端驅(qū)動(dòng)從內(nèi)核態(tài)又放回到了用戶態(tài)中(vhost-user進(jìn)程充當(dāng)virtiO后端驅(qū)動(dòng))。

下面這張圖(來(lái)自intel)介紹了vhost-user的工作原理:

總結(jié)

io虛擬化經(jīng)歷了從全虛擬化io到半虛擬化virtio。半虛擬化的后端驅(qū)動(dòng)又經(jīng)歷了從VMM中到內(nèi)核中,從內(nèi)核中到用戶空間中的過(guò)程。


文章名稱:說(shuō)一說(shuō)虛擬化繞不開(kāi)的IO半虛擬化
轉(zhuǎn)載來(lái)源:http://m.5511xx.com/article/djhcheh.html