自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

說一說虛擬化繞不開的IO半虛擬化

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

[[217426]]

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

簡單介紹全虛擬化和半虛擬化

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

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

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

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

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

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

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

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

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

IO半虛擬化virtio

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

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

vhost

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

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

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

vhost-user

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

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

總結(jié)

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

責(zé)任編輯:武曉燕 來源: kvm虛擬化
相關(guān)推薦

2021-06-27 21:10:12

Linux 進(jìn)程控制

2024-02-27 00:10:06

語言Javascript

2021-07-31 22:20:00

線程池系統(tǒng)參數(shù)

2020-10-30 10:38:50

Python開發(fā)語法

2011-07-26 09:04:44

MySQL Repli數(shù)據(jù)庫負(fù)載均衡

2015-10-23 11:40:08

SaaS應(yīng)用開發(fā)

2011-07-25 13:34:08

ORACLEFLASHBACK T

2021-12-21 15:37:46

NFV虛擬化IO虛擬化

2021-02-08 08:30:11

容器化云原生微服務(wù)

2018-03-08 16:04:19

2017-11-29 14:57:47

虛擬化內(nèi)核IO

2011-07-25 17:38:32

數(shù)據(jù)存儲一致性模型

2021-01-06 17:28:00

MySQL數(shù)據(jù)庫緩存池

2023-12-29 10:28:24

SPIJava靈活性

2019-11-25 15:32:30

虛擬化IO故障

2018-04-17 15:03:40

CPU虛擬化半虛擬化

2018-05-08 15:16:59

內(nèi)存虛擬化處理器

2013-03-26 09:37:21

VMware網(wǎng)絡(luò)虛擬化vRDMA

2025-02-05 11:43:28

2020-03-10 18:30:06

GPU虛擬化FPGA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號