日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
漫談虛擬化--內(nèi)核和IO

漫談虛擬化--內(nèi)核和IO

作者:NAN 2017-11-29 14:57:47
云計(jì)算
虛擬化 在模擬的場景中,一般的步驟就是虛擬機(jī)的的虛擬內(nèi)存轉(zhuǎn)換成虛擬機(jī)的物理內(nèi)存,然后轉(zhuǎn)換成宿主機(jī)的虛擬內(nèi)存,然后找到真正的物理內(nèi)存,需要經(jīng)過兩次轉(zhuǎn)換,而且存在多個虛擬機(jī)的時候,每個虛擬機(jī)的TLB基本上都不能命中,從而導(dǎo)致性能大大降低。

創(chuàng)新互聯(lián)建站專注于安多企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城開發(fā)。安多網(wǎng)站建設(shè)公司,為安多等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

前言

時光如流水,來去匆匆,有的時候你并不知道你是虛擬的環(huán)境中還是在真實(shí)的環(huán)境中,一切只是內(nèi)核kernel的感受而已。。。

一種不同的體驗(yàn),幾種不同的實(shí)現(xiàn)方式,那么。。。你又在娜里。。。

虛擬化的分類

虛擬化場景其實(shí)和現(xiàn)實(shí)一樣一樣的。。。。

在虛擬化的場景中,虛擬機(jī)有的時候知道自己運(yùn)行在虛擬化環(huán)境之中,那么這種就需要修改內(nèi)核,從而也就是1型虛擬化,例如vmware ESX和ESXI,直接由hypervisor來管理硬件,從而提供給上層的虛擬機(jī)使用,這個時候,虛擬機(jī)使用的內(nèi)核調(diào)用方式就是hyper call,而不是常規(guī)的system call了,這種相對于其他的虛擬化技術(shù),效率高了不少(虛擬機(jī)必須修改內(nèi)核才能發(fā)起hypervisor call)。

在二型虛擬化中,也就是硬件上面運(yùn)行的是一個宿主機(jī),然后在其中運(yùn)行了一個用戶空間的程序,用來提供上層虛擬機(jī)的管理,這種可以稱之為VMM(virtual machine monitor)或者h(yuǎn)ypervisor,在虛擬機(jī)進(jìn)行調(diào)用相關(guān)指令的時候,都是發(fā)送請求到宿主機(jī),然后被vmm捕獲到,然后再進(jìn)行運(yùn)行或者調(diào)用外部的硬件指令。這種由于指令都要進(jìn)行最少一次的轉(zhuǎn)換,從而效率損失不少(虛擬機(jī)可以運(yùn)行各種操作系統(tǒng))。

在現(xiàn)實(shí)中,我們進(jìn)公司的時候,到底是選擇外包呢,還是不選外包呢,在使用外包的時候,其實(shí)就是***種類型的虛擬化了,所有人都明確的知道自己在外包之中,從而直接調(diào)用外包公司的接口提供服務(wù),這種效率可能很高,但是硬件環(huán)境肯定是差的,從而。。。。我也不知道到底是好不好,哈哈、。。。。

在不選擇外包的時候,每個人都生活在一個虛擬的空間之中,以為自己使用的是所有的CPU資源,以為自己使用的是所有的物理內(nèi)存,以為自己能驅(qū)動所有的硬件,其實(shí)。。。。到底有多少資源能夠使用,這個也是不確定的,,,沒準(zhǔn),也只是生活在一種虛擬化的場景之中。。。夢中夢。。。

內(nèi)存的虛擬化

在虛擬化場景中,CPU和內(nèi)存其實(shí)是不可分割的,基本上使用的是哪個物理機(jī)的CPU,那么就必然會使用其內(nèi)存,為啥呢?

CPU的硬件中,實(shí)現(xiàn)了兩種主要的芯片,一個是MMU,內(nèi)存管理單元,主要是用來管理內(nèi)存的,其實(shí)也就是從線性地址轉(zhuǎn)換到物理地址,在進(jìn)程中,使用的線性地址,也就是每個進(jìn)程能看到的內(nèi)存地址其實(shí)是整個的物理地址,其中劃分了一部分為內(nèi)核使用,剩余的都是進(jìn)程使用的內(nèi)存空間,而每次在進(jìn)程使用變量的時候,那么這些變量值都是保存在內(nèi)存之中,那么就要將這個地址在CPU中去找,然后就經(jīng)過MMU,找到物理地址,而CPU的速度遠(yuǎn)遠(yuǎn)大于內(nèi)存的速度,那么為了匹配這種速度,從而也就有了另外一種芯片,也就是TLB,主要就是用來緩存線性地址到物理地址轉(zhuǎn)換的物理結(jié)果,從而每次在尋找地址的時候,都是先找TLB,如果沒有那么就會經(jīng)過MMU轉(zhuǎn)換,然后找到物理內(nèi)存。

在CPU的物理結(jié)構(gòu)中,有一級緩存,有二級緩存,有三級緩存,三級緩存一般是各個CPU共享的,從而有可能發(fā)生資源占用,從而也就從SMP的架構(gòu)轉(zhuǎn)換到了NUMA架構(gòu),從而也就是非一致性內(nèi)存訪問。主要的目的也就是為了提高性能,那么在使用CPU的時候,不可能去別的物理機(jī)上找到內(nèi)存地址,然后讀取數(shù)據(jù),從而為了提高速度和性能,也就是CPU和MEM基本上是綁定的,在同一個物理機(jī)上使用。

超賣的概念,CPU是虛擬的,內(nèi)存也是虛擬的,其實(shí)VCPU也就是虛擬CPU,其實(shí)也就是物理機(jī)上的一個進(jìn)程,其實(shí)你虛擬的cpu個數(shù)可以超過物理的核心數(shù),但是一般超賣的比是1.5,看性能而定,并且要看服務(wù)器的壓力,也就是CPU的平均負(fù)載。內(nèi)存也是虛擬的,而且有的類庫是每個進(jìn)程或者每個虛擬機(jī)都會使用的,從而也可以超過物理內(nèi)存,但是。。。好像沒有一個比例。

在模擬的場景中,一般的步驟就是虛擬機(jī)的的虛擬內(nèi)存轉(zhuǎn)換成虛擬機(jī)的物理內(nèi)存,然后轉(zhuǎn)換成宿主機(jī)的虛擬內(nèi)存,然后找到真正的物理內(nèi)存,需要經(jīng)過兩次轉(zhuǎn)換,而且存在多個虛擬機(jī)的時候,每個虛擬機(jī)的TLB基本上都不能***,從而導(dǎo)致性能大大降低。

從而在硬件層面,提供了硬件輔助的虛擬化技術(shù),例如tagged TLB,也就是對TLB加了一個字段,表示為是哪個虛擬機(jī)的線性地址到物理地址的轉(zhuǎn)換;例如提供了MMU的內(nèi)存單元管理功能,也就是直接將虛擬地址換到物理機(jī)的虛擬地址,從而省略了轉(zhuǎn)換到虛擬機(jī)的物理地址的步驟,從而能大大的提高性能。

硬件支持的內(nèi)存虛擬化(AMD Nested Page Tables[NPT]和Intel Extended Page Tables[EPT])

I/O的虛擬化

I/O設(shè)備,一般分為驅(qū)動器和設(shè)備本身,而驅(qū)動程序運(yùn)行在內(nèi)核中,在虛擬話的場景中,如果進(jìn)程需要調(diào)度外部的IO設(shè)備,那么首先進(jìn)程會調(diào)用虛擬機(jī)的驅(qū)動程序,驅(qū)動虛擬機(jī)的硬件,然后被物理機(jī)的vmm捕獲,然后將調(diào)用物理機(jī)的驅(qū)動程序,然后才真正的調(diào)用物理設(shè)備。也就是也分為兩步走。

在IO設(shè)備的虛擬化場景中,一種是使用模擬的方式,也就是通過軟件的模擬,在linux中,一切皆文件,從而也就是提供了一堆的文件進(jìn)行調(diào)用。

一種是使用半虛擬化的方式,這種也是需要硬件的支持的,也就是虛擬機(jī)驅(qū)動程序直接調(diào)用的是物理機(jī)的驅(qū)動程序,然后驅(qū)動硬件,從而省略了虛擬機(jī)的驅(qū)動調(diào)用虛擬機(jī)的設(shè)備步驟。

***一種就是IO透傳技術(shù),其主要使用的方式就是直接將一些網(wǎng)卡設(shè)備或者硬盤設(shè)備直接綁定給虛擬機(jī)使用,從而基本上達(dá)到物理硬件的性能,不過這些硬件的管理還是需要使用hypervisor來進(jìn)行管理。

硬件支持的設(shè)備和I/O虛擬化(Intel VT-d,AMD IOMMU)

總結(jié)

虛擬化的出現(xiàn)不過是為了更好的利用物理主機(jī)的資源,例如CPU,內(nèi)存,I/O。


當(dāng)前名稱:漫談虛擬化--內(nèi)核和IO
本文URL:http://www.dlmjj.cn/article/dhhipis.html