精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探究I/O虛擬化及Virtio接口技術(shù)(下)

jf_78858299 ? 來(lái)源:軟硬件融合 ? 作者:Chaobowx ? 2023-04-04 17:03 ? 次閱讀

2.2 Virtqueue交互隊(duì)列

Virtio 1.1引入了Packed Virtqueue的概念,對(duì)應(yīng)的Virtio 1.0的Virtqueue被稱(chēng)為Split Virtqueue。

如圖3所示,為Virtio1.0的Split Virtqueue結(jié)構(gòu)。Virtqueue由三部分組成:

  • 描述符表
  • 可用的描述符環(huán)
  • 已使用的描述符環(huán)
  • Virtio 1.0的Split Virtqueue具有一些缺點(diǎn):
  • 如果是虛擬化場(chǎng)景軟件模擬Virtio設(shè)備的話,因?yàn)榉稚⒌臄?shù)據(jù)結(jié)構(gòu),導(dǎo)致Cache利用率較低,每次請(qǐng)求都會(huì)有很多Cache不命中;
  • 如果是硬件實(shí)現(xiàn)的話,每次描述符需要多次設(shè)備DMA訪問(wèn)。

圖片

圖3 Virtio 1.0中的Split Virtqueue

如圖4所示,Virtio 1.1引入了Packed Virtqueue的概念。整個(gè)描述符只有一個(gè)數(shù)據(jù)結(jié)構(gòu)。這樣,如果軟件實(shí)現(xiàn)Virtio設(shè)備模擬的話,可以提升描述符交互的Cache命中率。如果硬件實(shí)現(xiàn)的,可以降低設(shè)備DMA的訪問(wèn)次數(shù)。

圖片

圖4 Virtio1.1的Packed Virtqueue

2.3 Virtio交互

驅(qū)動(dòng)和設(shè)備的交互,符合生產(chǎn)者消費(fèi)者模型的數(shù)據(jù)及通知(Notification)的交互行為。驅(qū)動(dòng)把共享隊(duì)列的隊(duì)列項(xiàng)準(zhǔn)備好,通過(guò)寫(xiě)寄存器的方式通知設(shè)備。設(shè)備收到驅(qū)動(dòng)發(fā)送的通知?jiǎng)t處理隊(duì)列項(xiàng)以及相應(yīng)的數(shù)據(jù)搬運(yùn)工作,結(jié)束后更新隊(duì)列狀態(tài)并通知(設(shè)備通知驅(qū)動(dòng)是通過(guò)中斷)驅(qū)動(dòng)。驅(qū)動(dòng)接收到中斷通知時(shí)候,把已經(jīng)使用的隊(duì)列項(xiàng)釋放,并更新隊(duì)列狀態(tài)。

一個(gè)典型的通用的驅(qū)動(dòng)和設(shè)備的交互流程如圖5所示。Virtio場(chǎng)景的驅(qū)動(dòng)和設(shè)備交互,驅(qū)動(dòng)給設(shè)備的通知(Notification)稱(chēng)為Kick,設(shè)備給驅(qū)動(dòng)的通知稱(chēng)為Interrupt(中斷)。Kick和Interrupt操作是Virtio接口的一部分,在虛擬化場(chǎng)景,Kick和Interrupt需要非常大的CPU切換代價(jià)。驅(qū)動(dòng)希望在Kick之前產(chǎn)生盡可能多的待處理緩沖項(xiàng)(一個(gè)緩沖項(xiàng)對(duì)應(yīng)一個(gè)描述符和描述符指向的數(shù)據(jù)塊);同樣的,設(shè)備希望處理盡可能多的緩沖項(xiàng)然后再發(fā)送一個(gè)中斷。通過(guò)盡量處理更多的緩沖項(xiàng)的方式,來(lái)攤薄通知的代價(jià)。

這種策略是一種理想狀態(tài),因?yàn)榇蠖鄶?shù)時(shí)候驅(qū)動(dòng)并不知道下一組緩沖項(xiàng)何時(shí)帶來(lái),因此不得不每一組緩沖項(xiàng)準(zhǔn)備好之后就必須要Kick設(shè)備。同樣的,設(shè)備在處理完相應(yīng)的緩沖項(xiàng)之后,就盡快的發(fā)送中斷給驅(qū)動(dòng),以達(dá)到盡可能小的延遲。

圖片

圖5 Virtio驅(qū)動(dòng)和設(shè)備交互示意圖

如圖6所示,在設(shè)備模擬的虛擬化場(chǎng)景下,驅(qū)動(dòng)可以暫時(shí)禁用中斷,設(shè)備也可以暫時(shí)禁用Kick。通過(guò)這樣的機(jī)制,可以最大限度的減少通知的代價(jià),并且不影響性能和延遲。Virtio 1.1支持兩種通知抑制機(jī)制,因此共有三種模式:

  • 使能通知模式:完全無(wú)抑制,使能通知;
  • 禁用通知模式:如圖6所示,可以完全禁止對(duì)方發(fā)通知給自己;
  • 使能特定的描述符通知模式:告知對(duì)方一個(gè)特定的描述符,當(dāng)對(duì)方順序處理到此描述符處理完成時(shí)產(chǎn)生通知。

圖片

圖6 通過(guò)前后端禁用抑制通知的Virtio驅(qū)動(dòng)和設(shè)備交互

2.4 總結(jié)

如圖7,Virtio基于分層的設(shè)計(jì)思想,定義了三層Virtio設(shè)備架構(gòu):

  • 最下層的總線接口。PCI是最常用的Virtio場(chǎng)景使用的總線,但Virtio協(xié)議不僅僅支持PCI,也支持MMIO和Channel IO等。
  • 通用的Virtio交互接口。包括Virtqueue、功能特征位、配置空間等。Virtio交互接口是Virtio最核心的功能,通過(guò)Virtio交互接口實(shí)現(xiàn)了不同類(lèi)型設(shè)備的標(biāo)準(zhǔn)化。
  • 上層的特定設(shè)備接口。在Virtio協(xié)議里,定義網(wǎng)絡(luò)、塊、控制臺(tái)、SCSIGPU等各種不同類(lèi)型的設(shè)備。

圖片

圖7 分層的Virtio框架圖

Virtio的優(yōu)點(diǎn)體現(xiàn)在:

  • Virtio實(shí)現(xiàn)了盡可能多的設(shè)計(jì)共享。這樣,在開(kāi)發(fā)的時(shí)候就可以復(fù)用很多軟件和硬件資源,達(dá)到快速開(kāi)發(fā)的目的。
  • Virtio實(shí)現(xiàn)了接口的標(biāo)準(zhǔn)化。標(biāo)準(zhǔn)化體現(xiàn)在兩個(gè)方面:
  • (1)一個(gè)是通用的Virtio交互接口,統(tǒng)一了不同的設(shè)備類(lèi)型軟硬件交互;
  • (2)另一個(gè)是基于Virtio的Virtio-net、Virtio-block等廣泛應(yīng)用于云計(jì)算虛擬化場(chǎng)景,Virtio已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)I/O接口。

而Virtio的缺點(diǎn),則同樣因?yàn)閂irtio實(shí)現(xiàn)了接口的標(biāo)準(zhǔn)化,而忽略了不同設(shè)備類(lèi)型數(shù)據(jù)傳輸?shù)奶攸c(diǎn)。因此,在一些大數(shù)據(jù)量傳輸?shù)膱?chǎng)景,效率比較低下。如果是在類(lèi)似HPC這樣的性能和延遲非常敏感的場(chǎng)景,Virtio就不是一個(gè)很好的選擇。

**03 **虛擬化卸載

虛擬化卸載指的是計(jì)算機(jī)虛擬化中消耗CPU資源較多的接口設(shè)備模擬、熱遷移、虛擬化管理等任務(wù)的卸載。

a. 接口設(shè)備的卸載

前面我們介紹了網(wǎng)絡(luò)、遠(yuǎn)程存儲(chǔ)等IO工作任務(wù)的卸載,而虛擬化卸載主要指的是跟IO相關(guān)的接口設(shè)備的卸載,例如網(wǎng)絡(luò)、存儲(chǔ)等接口設(shè)備的卸載。IO接口設(shè)備的卸載本身上也是IO硬件虛擬化的過(guò)程,比如我們通過(guò)VT-d技術(shù)實(shí)現(xiàn)從VM中pass though訪問(wèn)硬件設(shè)備,某種程度上也可以認(rèn)為是把運(yùn)行在Hypervisor中的模擬設(shè)備 “卸載”到了硬件。因此,IO接口設(shè)備的卸載本質(zhì)上和IO設(shè)備硬件虛擬化是一件事情。

如圖8,為了實(shí)現(xiàn)設(shè)備接口的標(biāo)準(zhǔn)化、加速I(mǎi)O處理的性能以及潛在的充分利用現(xiàn)有的虛擬化生態(tài)(例如更好的支持設(shè)備熱遷移)等原因,阿里云在神龍芯片里實(shí)現(xiàn)了硬件的Virtio接口設(shè)備,通過(guò)Virtio接口設(shè)備支持Virtio-net網(wǎng)絡(luò)驅(qū)動(dòng)和Virtio-blk存儲(chǔ)驅(qū)動(dòng)等,實(shí)現(xiàn)了類(lèi)虛擬化IO設(shè)備Virtio的硬件“卸載”。

圖片

圖8 阿里云神龍芯片網(wǎng)絡(luò)和存儲(chǔ)接口示意圖

AWS的NITRO系統(tǒng)支持網(wǎng)絡(luò)、本地存儲(chǔ)和遠(yuǎn)程存儲(chǔ),NITRO實(shí)現(xiàn)了網(wǎng)絡(luò)接口設(shè)備ENA/EFA(AWS自定義接口)的硬件“卸載”以及存儲(chǔ)接口設(shè)備N(xiāo)VMe(遠(yuǎn)程存儲(chǔ)EBS使用的是NVMe接口,本地存儲(chǔ)也是NVMe接口)的卸載。

b. 接口設(shè)備卸載后的遷移問(wèn)題

當(dāng)把設(shè)備“卸載”到硬件,讓VM直接訪問(wèn)硬件設(shè)備,這使得VM的設(shè)備熱遷移變的非常有挑戰(zhàn)。vDPA(vhost Data Path Acceleration,vhost數(shù)據(jù)路徑加速,其中vhost是Virtio后端設(shè)備模擬的輪詢(xún)方式實(shí)現(xiàn))實(shí)現(xiàn)了一種折中的解決方案,如圖9所示,vDPA把Virtio分為了控制面和數(shù)據(jù)面:

  • 控制面。vDPA控制面依然是通過(guò)要經(jīng)過(guò)Hypervisor的處理,用于設(shè)備和VM之間的配置更改和功能協(xié)商,用于建立和終止數(shù)據(jù)面。
  • 數(shù)據(jù)面。vDPA數(shù)據(jù)面包括共享隊(duì)列以及相應(yīng)的通知機(jī)制,用于在設(shè)備和VM之間傳輸實(shí)際的數(shù)據(jù)。

圖片

圖9 vDPA框架示意圖

使用vDPA一個(gè)重要原因是,在熱遷移的時(shí)候可以很方便的把Virtio數(shù)據(jù)面的處理切換回傳統(tǒng)的Virtio/Vhost后端設(shè)備模擬。這樣,可以充分利用現(xiàn)有的基于KVM/Qemu對(duì)Virtio設(shè)備遷移的解決方案來(lái)完成設(shè)備的遷移。

c. 虛擬化管理的卸載

從軟件虛擬化進(jìn)化到硬件虛擬化的過(guò)程,本身就可以看作是一個(gè)硬件加速以及硬件卸載的過(guò)程。我們逐步的剝離了Hypervisor的功能,比如通過(guò)VT-x技術(shù)“卸載”了Hypervisor的CPU/內(nèi)存等的軟件模擬,以及通過(guò)VT-d以及vDPA等技術(shù)“卸載”了設(shè)備軟件模擬。這些剝離,使得Hypervisor越來(lái)越輕量,整個(gè)系統(tǒng)的虛擬化開(kāi)銷(xiāo)也越來(lái)越少。進(jìn)一步的,我們可以把虛擬化的管理(例如Linux平臺(tái)主流的管理程序Libvirt)卸載到硬件中的嵌入式軟件運(yùn)行。

如圖10, 我們通過(guò)橋接的方式,實(shí)現(xiàn)主機(jī)軟件和硬件中嵌入式軟件通信機(jī)制。把虛擬化管理等軟件任務(wù)從主機(jī)卸載到嵌入式系統(tǒng)(依然有很小一部分任務(wù)無(wú)法卸載,如虛擬機(jī)資源分配、vCPU調(diào)度等)。這樣,可以把幾乎100%的主機(jī)資源提供給用戶(hù),使用戶(hù)虛擬機(jī)得到近乎物理機(jī)的性能。

圖片

圖10 虛擬化管理卸載圖

通過(guò)虛擬化管理卸載到硬件中的嵌入式CPU軟件,我們可以做到物理上的業(yè)務(wù)和管理分離,整個(gè)業(yè)務(wù)主機(jī)跟云計(jì)算管理網(wǎng)絡(luò)安全的隔離,只能通過(guò)特定的接口訪問(wèn)到Lite Hypervisor,除此之外,不能訪問(wèn)主機(jī)的任何資源。這樣,即使有潛在的運(yùn)維操作失誤,也無(wú)法對(duì)業(yè)務(wù)主機(jī)造成影響。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8497

    瀏覽量

    150835
  • DPU
    DPU
    +關(guān)注

    關(guān)注

    0

    文章

    354

    瀏覽量

    24127
  • i/o
    i/o
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    4570
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LabVIEW的I/O接口設(shè)備驅(qū)動(dòng)

    虛擬儀器系統(tǒng)的硬件平臺(tái)由i/o接口設(shè)備和計(jì)算機(jī)構(gòu)成,為了能使計(jì)算機(jī)能夠?qū)?b class='flag-5'>i/o
    發(fā)表于 11-18 11:04 ?1.3w次閱讀
    LabVIEW的<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>接口</b>設(shè)備驅(qū)動(dòng)

    virtio I/O通信流程及設(shè)備框架的實(shí)現(xiàn)

    virtio 是一種通用的半虛擬I/O 通信協(xié)議,提供了一套前后端 I/
    的頭像 發(fā)表于 03-10 13:37 ?6400次閱讀

    《微機(jī)原理與接口技術(shù)》教學(xué)大綱

    微型計(jì)算機(jī)原理及接口技術(shù),包括CPU的工作原理與時(shí)序,IO端口的地址譯碼,CPU和外設(shè)之間的數(shù)據(jù)傳送方式,中斷控制器及中斷技術(shù)應(yīng)用,DMA控制器及應(yīng)用,并行
    發(fā)表于 10-11 09:15

    淺析單片機(jī)原理及接口技術(shù)

    PPT內(nèi)容這是單片機(jī)原理與接口技術(shù)課件ppt,包括了微型計(jì)算機(jī)基礎(chǔ),MCS-51單片機(jī)結(jié)構(gòu)與時(shí)序,習(xí)題課,MCS-51與存儲(chǔ)器連接示例,匯編語(yǔ)言程序設(shè)計(jì),半導(dǎo)體存儲(chǔ)器,中斷系統(tǒng),并行I/O接口
    發(fā)表于 09-10 07:27

    微機(jī)接口技術(shù)實(shí)用教程

    微機(jī)接口技術(shù)實(shí)用教程1微機(jī)接口技術(shù)實(shí)用教程第1章 微型計(jì)算機(jī)接口技術(shù)基礎(chǔ) 第1章 微型計(jì)算機(jī)接口技術(shù)基礎(chǔ) 1.1 接口技術(shù)概述 輸入/輸出(
    發(fā)表于 09-13 08:19

    微機(jī)原理及接口技術(shù)課件(教學(xué))

    微機(jī)原理及接口技術(shù)課件:微機(jī):IBM PC系列機(jī)原理:8088匯編語(yǔ)言程序設(shè)計(jì)接口:半導(dǎo)體存儲(chǔ)器及其接口I/O
    發(fā)表于 12-06 22:24 ?462次下載
    微機(jī)原理及<b class='flag-5'>接口技術(shù)</b>課件(教學(xué))

    微機(jī)原理與接口技術(shù)精品課程(課件)

    微機(jī)原理與接口技術(shù)精品課程(課件):微機(jī):IBM PC系列機(jī)原理:8088匯編語(yǔ)言程序設(shè)計(jì)接口:半導(dǎo)體存儲(chǔ)器及其接口 I/O
    發(fā)表于 12-06 22:26 ?170次下載
    微機(jī)原理與<b class='flag-5'>接口技術(shù)</b>精品課程(課件)

    單片機(jī)與接口技術(shù)實(shí)驗(yàn)教程

    單片機(jī)與接口技術(shù)實(shí)驗(yàn)教程 實(shí)驗(yàn)一、P1口實(shí)驗(yàn)……………………………………………… 3實(shí)驗(yàn)二、簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn)………………………………… 5實(shí)驗(yàn)三
    發(fā)表于 04-14 14:31 ?39次下載

    輸入輸出設(shè)備I/O設(shè)備總結(jié)

    I/O設(shè)備又叫輸入輸出設(shè)備。對(duì)于I/O bus 包含數(shù)據(jù)總線、控制總線、地址總線;每一個(gè)I/O設(shè)
    發(fā)表于 11-24 09:28 ?3605次閱讀
    輸入輸出設(shè)備<b class='flag-5'>I</b>/<b class='flag-5'>O</b>設(shè)備總結(jié)

    系統(tǒng)虛擬技術(shù)virtio總體設(shè)計(jì)思想

    ,主要有計(jì)算資源,存儲(chǔ)資源和網(wǎng)絡(luò)資源。所以,系統(tǒng)虛擬技術(shù)又可以細(xì)分為計(jì)算虛擬,存儲(chǔ)虛擬
    的頭像 發(fā)表于 05-07 15:40 ?4826次閱讀
    系統(tǒng)<b class='flag-5'>虛擬</b><b class='flag-5'>化</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>virtio</b>總體設(shè)計(jì)思想

    I/O軟件模擬虛擬和類(lèi)虛擬

    I/O虛擬是SmartNIC/DPU/IPU中最核心的部分,AWS NITRO就是從I/O硬件
    的頭像 發(fā)表于 10-13 11:09 ?2586次閱讀

    I/O虛擬Virtio接口介紹

    I/O虛擬是計(jì)算機(jī)虛擬最復(fù)雜的部分,因?yàn)樯婕暗紺PU、操作系統(tǒng)、Hypervisor以及
    的頭像 發(fā)表于 10-26 17:21 ?4043次閱讀

    探究I/O虛擬Virtio接口技術(shù)(上)

    I/O虛擬是SmartNIC/DPU/IPU中最核心的部分,AWS NITRO就是從I/O硬件
    的頭像 發(fā)表于 04-04 16:54 ?3780次閱讀
    <b class='flag-5'>探究</b><b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>虛擬</b><b class='flag-5'>化</b>及<b class='flag-5'>Virtio</b><b class='flag-5'>接口技術(shù)</b>(上)

    VirtIO Networking虛擬網(wǎng)絡(luò)設(shè)備實(shí)現(xiàn)架構(gòu)

    VirtIO 由 Rusty Russell 開(kāi)發(fā),最初是為了支持自己開(kāi)發(fā)的 lguest Hypervisor,其設(shè)計(jì)目標(biāo)是在虛擬環(huán)境提供與物理設(shè)備相近的
    的頭像 發(fā)表于 05-08 10:48 ?1102次閱讀
    <b class='flag-5'>VirtIO</b> Networking<b class='flag-5'>虛擬</b>網(wǎng)絡(luò)設(shè)備實(shí)現(xiàn)架構(gòu)

    panabit加載virtio網(wǎng)卡驅(qū)動(dòng)

    引言:Panabit網(wǎng)絡(luò)流量管理系統(tǒng)是一款強(qiáng)大的企業(yè)級(jí)網(wǎng)絡(luò)管理軟件,它提供了豐富的功能和靈活的配置選項(xiàng)。而virtio網(wǎng)卡作為一種高性能的虛擬網(wǎng)絡(luò)設(shè)備,被廣泛應(yīng)用于各種虛擬平臺(tái)。本文
    的頭像 發(fā)表于 11-17 11:13 ?1104次閱讀