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

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

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

[[211645]]

前言

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

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

虛擬化的分類(lèi)

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

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

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

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

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

內(nèi)存的虛擬化

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

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

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

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

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

從而在硬件層面,提供了硬件輔助的虛擬化技術(shù),例如tagged TLB,也就是對(duì)TLB加了一個(gè)字段,表示為是哪個(gè)虛擬機(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ū)動(dòng)器和設(shè)備本身,而驅(qū)動(dòng)程序運(yùn)行在內(nèi)核中,在虛擬話的場(chǎng)景中,如果進(jìn)程需要調(diào)度外部的IO設(shè)備,那么首先進(jìn)程會(huì)調(diào)用虛擬機(jī)的驅(qū)動(dòng)程序,驅(qū)動(dòng)虛擬機(jī)的硬件,然后被物理機(jī)的vmm捕獲,然后將調(diào)用物理機(jī)的驅(qū)動(dòng)程序,然后才真正的調(diào)用物理設(shè)備。也就是也分為兩步走。

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

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

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

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

總結(jié)

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

責(zé)任編輯:武曉燕 來(lái)源: 運(yùn)維Linux和python
相關(guān)推薦

2018-03-08 16:04:19

2018-03-28 15:21:52

虛擬化類(lèi)型

2019-06-19 15:35:16

云計(jì)算虛擬化容器化

2019-06-18 16:47:16

云計(jì)算虛擬化容器化

2018-03-21 11:00:45

2018-04-17 15:03:40

CPU虛擬化半虛擬化

2018-05-08 15:16:59

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

2016-09-09 14:42:27

云計(jì)算華為開(kāi)發(fā)者社區(qū)

2019-11-06 11:10:24

VMware虛擬化服務(wù)器

2021-12-21 15:37:46

NFV虛擬化IO虛擬化

2019-11-25 15:32:30

虛擬化IO故障

2012-07-06 09:39:37

虛擬化

2018-01-17 15:15:22

虛擬化IO半虛擬化

2015-12-21 17:03:37

數(shù)據(jù)中心交換機(jī)橫向虛擬化集群

2020-03-10 18:30:06

GPU虛擬化FPGA

2025-02-05 11:43:28

2011-12-25 20:41:55

云計(jì)算

2009-07-14 13:38:41

語(yǔ)義化HTMLHTML結(jié)構(gòu)

2017-06-16 15:18:15

虛擬化WindowsIO

2012-08-01 09:46:05

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

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