版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、虛擬機(jī)內(nèi)存工作原理Windows環(huán)境內(nèi)存名詞釋義Windows內(nèi)存管理概述 在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,內(nèi)存是指CPU可以直接訪問(wèn)的隨機(jī)存儲(chǔ)器。在硬件上,CPU通過(guò)一組地址線連接到內(nèi)存上,這組地址線稱為內(nèi)存總線。而在軟件上,CPU的許多指令允許用內(nèi)存單元地址作為指令的操作數(shù),實(shí)現(xiàn)直接操縱這些內(nèi)存單元。內(nèi)存地址,在Intel x86體系結(jié)構(gòu)中,內(nèi)存地址有三種類型: 物理地址即內(nèi)存存儲(chǔ)器的索引,CPU操縱內(nèi)存芯片時(shí),通過(guò)地址線管腳加上電信號(hào)來(lái)讀或?qū)懴鄳?yīng)的內(nèi)存單元。在Intel x86體系結(jié)構(gòu)上,物理地址是一個(gè)32位或36位的無(wú)符號(hào)整數(shù)。虛擬地址:在32位系統(tǒng)上,虛擬地址空間可以達(dá)到4G
2、B大小,也就是說(shuō),整個(gè)空間可以有232=4294967296個(gè)字節(jié)單元。Intel x86芯片內(nèi)有專門的電路負(fù)責(zé)把一個(gè)虛擬地址轉(zhuǎn)譯成物理地址。邏輯地址。邏輯地址包含兩部分:段和偏移。段指定了在整個(gè)地址空間中的一個(gè)基地址、段空間的大小、屬性。與尋址相關(guān)的是段的基址和大小。偏移部分指定了一個(gè)邏輯地址相對(duì)于段基址的偏移量。此偏移量不能超過(guò)段的邊界。因此,邏輯地址的實(shí)際地址是段基址加上偏移量。Intel x86芯片也有專門的電路把邏輯地址轉(zhuǎn)譯成一個(gè)虛擬地址或物理地址。 把一個(gè)地址告訴CPU,讓它訪問(wèn)相對(duì)應(yīng)的物理內(nèi)存單元,這一過(guò)程是操作系統(tǒng)和CPU相互協(xié)作來(lái)完成的。CPU最終需要的是一個(gè)物理地
3、址,它必須把軟件指令中的地址轉(zhuǎn)譯成物理地址,在轉(zhuǎn)譯過(guò)程中可能會(huì)涉及一些數(shù)據(jù)結(jié)構(gòu),甚至涉及I/O操作。 從操作系統(tǒng)的角度來(lái)看,一方面,它需要有效地管理所有的物理內(nèi)存,使得當(dāng)一個(gè)進(jìn)程需要內(nèi)存時(shí),能夠分配足夠的內(nèi)存單元給這一進(jìn)程;另一方面,正如上一章所講,進(jìn)程代表一個(gè)相對(duì)獨(dú)立的任務(wù),它有一個(gè)邏輯上獨(dú)立的地址空間。不同進(jìn)程的地址空間應(yīng)該是相互隔離的。實(shí)現(xiàn)每個(gè)進(jìn)程都有自己的私有地址空間。當(dāng)系統(tǒng)中進(jìn)程數(shù)量增加以后,所需內(nèi)存數(shù)量往往超過(guò)了總的物理內(nèi)存,在這種情況下,操作系統(tǒng)須合理地安排內(nèi)存的使用,使得內(nèi)存緊缺時(shí),既不會(huì)波及系統(tǒng)本身的穩(wěn)定性,同時(shí)也不會(huì)嚴(yán)重影響系統(tǒng)的性能。當(dāng)發(fā)生這種情況時(shí),一般的做法
4、是把不緊急的進(jìn)程中的數(shù)據(jù)或代碼先存放到硬盤(pagefile)中,從而把它們占用的物理內(nèi)存騰出來(lái)給緊急的進(jìn)程使用,或者交給系統(tǒng)使用。當(dāng)內(nèi)存緊缺的狀況緩解時(shí),系統(tǒng)再把硬盤(pagefile)中的進(jìn)程數(shù)據(jù)或代碼裝回到已經(jīng)空閑下來(lái)的內(nèi)存單元中,從而使這些進(jìn)程有機(jī)會(huì)繼續(xù)運(yùn)行。這兩個(gè)過(guò)程稱為內(nèi)存換出和換入。幾乎所有的多進(jìn)程操作系統(tǒng)都支持這種內(nèi)存管理。內(nèi)存基本單元總是字節(jié)Bytes。每個(gè)內(nèi)存地址指向一個(gè)字節(jié),地址值加1以后指向下一個(gè)字節(jié)。物理內(nèi)存的地址是固定的,故讓進(jìn)程使用物理地址來(lái)訪問(wèn)內(nèi)存將使得進(jìn)程的動(dòng)態(tài)分配難以有效實(shí)施,因?yàn)閮?nèi)存單元與進(jìn)程將通過(guò)物理地址緊密地聯(lián)系在一起了,從而內(nèi)存的回收和再分配將受限于
5、特定的進(jìn)程和物理地址。為打破這種關(guān)聯(lián)關(guān)系,思路是讓進(jìn)程使用虛擬地址,而虛擬地址和物理地址之間通過(guò)一個(gè)映射表來(lái)完成轉(zhuǎn)譯。1.1 pagefile:即windows安裝過(guò)程中創(chuàng)建的分頁(yè)文件,見(jiàn)下圖。注:Linux中Swap(交換分區(qū)),類似Windows的pagefile,當(dāng)物理內(nèi)存不足時(shí),把一部分硬盤空間虛擬成內(nèi)存使用,解決物理內(nèi)存容量不足的情況。Android是基于Linux的操作系統(tǒng),故也可使用Swap分區(qū)來(lái)提升系統(tǒng)運(yùn)行效率。VMware ESXi上創(chuàng)建的虛擬機(jī)會(huì)自動(dòng)根據(jù)虛擬機(jī)的內(nèi)存大小創(chuàng)建一個(gè)同等大小的swap 文件,這個(gè)文件通常和虛擬機(jī)鏡像文件在同一個(gè)目錄,文件名:*.vswp。比如創(chuàng)建
6、一個(gè)內(nèi)存為8GB的VM,*.vswap會(huì)自動(dòng)創(chuàng)建,且大小為8GB,保存在同1個(gè) datastore中。1.2虛擬內(nèi)存:Windows可使用的內(nèi)存總稱,包括物理內(nèi)存和分頁(yè)文件。從win NT開(kāi)始,普通的應(yīng)用程序已無(wú)法直接訪問(wèn)物理內(nèi)存,只能訪問(wèn)虛擬內(nèi)存,再由CPU將虛擬內(nèi)存地址轉(zhuǎn)換為物理內(nèi)存地址。所以運(yùn)行軟件和游戲,訪問(wèn)的都是虛擬內(nèi)存。(驅(qū)動(dòng)程序應(yīng)能直接訪問(wèn)物理內(nèi)存)應(yīng)用程序能使用一系列虛擬地址來(lái)訪問(wèn)大于可用物理內(nèi)存的內(nèi)存緩沖區(qū)。當(dāng)物理內(nèi)存的供應(yīng)量變小時(shí),內(nèi)存管理器會(huì)將物理內(nèi)存頁(yè)(通常4KB)保存到磁盤文件。數(shù)據(jù)或代碼頁(yè)會(huì)根據(jù)需要在物理內(nèi)存與磁盤之間移動(dòng)。案例:pagefile的應(yīng)用(物理內(nèi)存16
7、G,pagefile 16G)應(yīng)用程序內(nèi)存掃描啟動(dòng)物理內(nèi)存剩余量活躍/閑置PagefileA20GNOB8GYES8G7G/1G1GC6GYES2G5G/1G1GD4GYES2G+OS回收2GTotal應(yīng)用占用了32G,應(yīng)用程序X無(wú)法啟動(dòng)。極限之后會(huì)出現(xiàn):藍(lán)屏或重啟。VMware虛擬機(jī)環(huán)境內(nèi)存利用技術(shù)1、透明頁(yè)共享TPS透明頁(yè)共享是虛擬化中的內(nèi)存管理技術(shù)之一,是指將1臺(tái)主機(jī)上的冗余內(nèi)存頁(yè)精簡(jiǎn)為1個(gè)頁(yè)面,而其它頁(yè)面用指針代替,從而達(dá)到釋放內(nèi)存空間的目的。該技術(shù)的核心要點(diǎn):相同類型操作系統(tǒng)中,相同服務(wù)或是進(jìn)程所消耗的內(nèi)存,只保留1份。TPS不能用于內(nèi)存很大的頁(yè)面,因?yàn)橥ǔG闆r下,只有小內(nèi)存頁(yè)才能完
8、全相同。VMware的ESXi是按照4KB為單位進(jìn)行內(nèi)存切片的。內(nèi)存回收的速度取決于掃描的速度,在ESXi的高級(jí)設(shè)置中可以設(shè)置TPS掃描的速度和時(shí)間間隔。故最好將相同OS的VM配置在1臺(tái)ESXi主機(jī)上,以便更好的使用TPS節(jié)省內(nèi)存。案例:當(dāng)多個(gè)VM運(yùn)行相同的Windows server 2008R2在同一個(gè)ESXi主機(jī)上時(shí),就會(huì)有存儲(chǔ)完全相同的進(jìn)程或服務(wù)的內(nèi)存頁(yè)面。虛擬機(jī)管理程序會(huì)在每個(gè)內(nèi)存頁(yè)面上分配哈希值,并一位一位的進(jìn)行比較,一旦不同頁(yè)面的哈希值相匹配,就說(shuō)明存在相同的內(nèi)存頁(yè)面。如果虛擬機(jī)管理程序確認(rèn)了同一主機(jī)上的多個(gè)虛擬機(jī)有完全相同的內(nèi)存頁(yè)面,它會(huì)保留其中一份,而其它頁(yè)面用指針代替。這樣
9、就釋放了很多內(nèi)存空間。另外,如果虛擬機(jī)上指針?biāo)淼男畔l(fā)生變化,虛擬機(jī)管理程序就會(huì)向內(nèi)存信息寫入一個(gè)新的頁(yè)面,同時(shí)改變指針信息。2、氣球膨脹(Ballooning)依據(jù)VMware Tools在Guest OS中的氣球驅(qū)動(dòng)(balloon driver)來(lái)回收內(nèi)存。當(dāng)需要從該虛擬機(jī)回收內(nèi)存時(shí),氣球膨脹從Guest OS中請(qǐng)求內(nèi)存,分配給氣球驅(qū)動(dòng)的內(nèi)存可被hypervisor安全的回收,Guest OS自行決定將哪些內(nèi)存swapping交換到硬盤上以保證分配給氣球驅(qū)動(dòng)內(nèi)存。顯然需要安裝VMware Tools才能實(shí)現(xiàn)氣球回收內(nèi)存,通過(guò)這種方式回收內(nèi)存較慢,依賴于Guest OS內(nèi)存分配的速度。
10、附件1: VM內(nèi)存調(diào)度機(jī)制-balloonVM內(nèi)存調(diào)度機(jī)制-balloon在內(nèi)存沒(méi)有過(guò)量配置的情況下,內(nèi)存的調(diào)度機(jī)制完全不會(huì)啟動(dòng),就沒(méi)有內(nèi)存回收措施。因?yàn)橹鳈C(jī)總的物理內(nèi)存大于所有VM配置內(nèi)存的總額的情況下,每臺(tái)虛機(jī)想要多少內(nèi)存,都能得到滿足,所以不需要調(diào)度機(jī)制。以下研究的VMware的內(nèi)存調(diào)度機(jī)制,都是在內(nèi)存過(guò)量配置的情況下發(fā)生的。案例:發(fā)生在一個(gè)有智慧的水池(Host)中,水池有不少水(4GB物理內(nèi)存),里面還有2個(gè)水箱(配置了2臺(tái)VM),水箱有一定的容量(配置內(nèi)存是4GB),原本是空的(沒(méi)有開(kāi)機(jī))。1、充裕HOST memory保障VM memory使用的情況現(xiàn)在水箱1里面要養(yǎng)魚了,必須放
11、點(diǎn)水進(jìn)去以便魚可以存活(開(kāi)機(jī)了)。最少需要1GB內(nèi)存。于是水箱1(VM1)就向水池(Host)要水(物理內(nèi)存),水池里面有足夠的水,就滿足了水箱1的要求?,F(xiàn)在水箱1有1GB的活水,而水池里面只剩下3GB的水了。水箱1里面多丟了些魚(啟動(dòng)新的應(yīng)用),原來(lái)1GB的水不夠用了,于是水箱1就繼續(xù)向水池要水,水池HOST里面還有足夠的水,就又滿足了水箱1的要求?,F(xiàn)在水箱1里面有3GB的水,而水池里面只剩下1GB的水了。解釋:要注意的是,此時(shí)VM1里面的應(yīng)用程序都是活動(dòng)的(active),所以這些內(nèi)存都屬于活躍狀態(tài),叫做活動(dòng)內(nèi)存(Active Memory)。2、VM閑置的memory不會(huì)主動(dòng)歸還HOST
12、經(jīng)過(guò)了一段時(shí)間以后,水箱1里面的魚被捕走了,現(xiàn)在水箱1不需要那么多水也足夠養(yǎng)活剩下的魚了。但是水池并不知道水箱1的狀況。于是水箱1還是有那么多水。解釋:VM1的某些應(yīng)用結(jié)束后,釋放了部分內(nèi)存,但是這些內(nèi)存釋放動(dòng)作是在VM的Guest OS層面釋放的,故Host并不知道有內(nèi)存被釋放了,這些內(nèi)存沒(méi)有歸還Host,仍然由VM1占有。VM1中就有一部分內(nèi)存屬于idle(空閑的)memory,另外一些正在使用的內(nèi)存就是active memory。當(dāng)然,就VM1自己的Guest OS看起來(lái),有3GB空閑內(nèi)存(idle memory),1GB的活動(dòng)內(nèi)存;而此時(shí)就Host看來(lái),只看見(jiàn)有3GB內(nèi)存是分配給了VM
13、1的。Host通過(guò)VMware Tools中的驅(qū)動(dòng),每隔一定的時(shí)間(ESX4中默認(rèn)是60秒)去掃描一下VM1的內(nèi)存使用狀態(tài),以了解活動(dòng)內(nèi)存(active memory)的情況。 3、Balloon或Swap內(nèi)存調(diào)度機(jī)制水箱2中養(yǎng)魚了(VM2開(kāi)機(jī)),水箱2也開(kāi)始從水池中抽水。但是水池HOST里面的水不能枯竭,因此水池有警戒水位,第一條警戒水位是6%,當(dāng)下降到第一警戒水位以下并仍然在不停下降時(shí),就要開(kāi)動(dòng)調(diào)水機(jī)制從其他水箱反抽水。解釋:VM2開(kāi)機(jī)時(shí)也需要1GB內(nèi)存,在啟動(dòng)時(shí),它也不斷向Host請(qǐng)求內(nèi)存。Host則將自己的內(nèi)存源源不斷地分配給VM2,直到下降到第一條警戒位6%。Host內(nèi)存有
14、4種狀態(tài),分別是High, Soft, Hard和Low,它們間的分界線分別是6%, 4%, 2%和1%??捎脙?nèi)存高于6%時(shí),不會(huì)啟動(dòng)Balloon或Swap機(jī)制。當(dāng)?shù)陀?%向4%逼近時(shí),Balloon機(jī)制就啟動(dòng)了。向哪個(gè)水箱抽水呢?誰(shuí)的水最富裕就向誰(shuí)抽。解釋:如何判斷呢?剛才我們說(shuō)過(guò),Host每隔一定時(shí)間就會(huì)掃描Guest OS的內(nèi)存使用狀況,此時(shí),Host會(huì)計(jì)算(VM tools)每個(gè)VM的份額內(nèi)存比,對(duì)最小的那臺(tái)虛機(jī)啟動(dòng)氣球驅(qū)動(dòng),氣球開(kāi)始膨脹。于是,氣球開(kāi)始膨脹,并將多余的水?dāng)D出水箱。解釋:Balloon驅(qū)動(dòng)如同普通驅(qū)動(dòng)那樣,不斷向Guest OS索取內(nèi)存,Guest OS盡自己可能滿足
15、氣球驅(qū)動(dòng),并優(yōu)先將空閑部分的內(nèi)存分配給它,注意,此時(shí)可能出現(xiàn)Guest OS自己的物理內(nèi)存不足,并引起Guest OS的paging(內(nèi)存分頁(yè))機(jī)制,將一部分內(nèi)存page out(頁(yè)出)到自己的swap中。這個(gè)例子中,VM1還有很多空閑內(nèi)存,因此足夠讓主機(jī)回收并滿足VM2的需求。主機(jī)將比較氣球膨脹獲得的這部分內(nèi)存的地址,如果原先是分配給VM1獨(dú)享的,(也就是沒(méi)有TPS共享),那么就可以收回。主機(jī)將不停的通過(guò)氣球驅(qū)動(dòng)收回內(nèi)存,收回的目標(biāo)是保持至少6%的內(nèi)存。注意:此時(shí)內(nèi)存沒(méi)有出現(xiàn)爭(zhēng)用情況,因此shares仍然沒(méi)有起作用,但是Overcommitment是存在的,所以會(huì)有reclaim,會(huì)有bal
16、looning。Ballooning回收內(nèi)存是比較慢的,通常需要幾分鐘。如果主機(jī)可用內(nèi)存池的內(nèi)存減少速度大于氣球驅(qū)動(dòng)返還主機(jī)的內(nèi)存,那么可用內(nèi)存會(huì)進(jìn)一步下降,當(dāng)突破4%的第2警戒線時(shí),進(jìn)入到hard狀態(tài),主機(jī)就會(huì)啟用第2種回收機(jī)制swapping(交換),將VM1的一部分物理內(nèi)存交換到swap文件中,以加快回收內(nèi)存的速度。目的是將可用內(nèi)存保持在4%的警戒線以上。如果可用內(nèi)存繼續(xù)下降到2%以下,進(jìn)入到low狀態(tài)的時(shí)候,ESX不僅會(huì)繼續(xù)加速Swapping,還會(huì)阻止其上所有VM的內(nèi)存請(qǐng)求?,F(xiàn)在,情況又發(fā)生了變化,水箱2中的魚越來(lái)越多了,它不停地向水池要水,而水池也通過(guò)氣球驅(qū)動(dòng),不停地將水箱1中的空閑內(nèi)存擠出來(lái),直到水箱1和2的總需求量大于了水池能供給的水量。水池再也不能提供更多的水了,只能部分滿足2個(gè)水箱的要求了。不夠的部分怎么辦?用一些臟水(swap)來(lái)滿足。臟水雖然臟(swap內(nèi)存速度很慢,注意:硬盤訪問(wèn)時(shí)間是以毫秒(ms,千分之一秒)計(jì)算,而內(nèi)存訪問(wèn)時(shí)間以納秒(ns,十億分之一)計(jì)算,兩者相差100萬(wàn)倍。),魚在臟水里面生存的很困難,但畢竟還是有水的,不至于因?yàn)闆](méi)有足夠
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 常州市“12校合作聯(lián)盟”2025屆高三上物理期中復(fù)習(xí)檢測(cè)模擬試題含解析
- 湖南省邵東縣第十中學(xué)2025屆高二物理第一學(xué)期期中經(jīng)典模擬試題含解析
- 2025屆青海省海西高三上物理期中學(xué)業(yè)水平測(cè)試試題含解析
- 河北省隆華存瑞中學(xué)2025屆高一物理第一學(xué)期期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 重慶實(shí)驗(yàn)中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考模擬試題含解析
- 浙江省選考十校聯(lián)盟2025屆物理高二上期末達(dá)標(biāo)測(cè)試試題含解析
- 江蘇省南通市海安縣海安高級(jí)中學(xué)2025屆物理高一第一學(xué)期期中檢測(cè)試題含解析
- 2025屆山東省濱州市五校聯(lián)考物理高一第一學(xué)期期末達(dá)標(biāo)檢測(cè)試題含解析
- 2025屆甘肅省天水市甘谷縣物理高二上期末考試試題含解析
- 舵機(jī)基礎(chǔ)知識(shí)單選題100道及答案解析
- 部編版2024-2025學(xué)年語(yǔ)文五年級(jí)上冊(cè)第4單元-單元測(cè)試卷(含答案)
- 光伏發(fā)電項(xiàng)目試驗(yàn)檢測(cè)計(jì)劃
- 國(guó)開(kāi)(陜西)2024年秋《社會(huì)調(diào)查》形考作業(yè)1-4答案
- 大學(xué)與文化傳承智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 2024年心理咨詢師(中科院心理研究所版)考試題庫(kù)大全-上(單選題)
- 2024春形勢(shì)與政策課件當(dāng)前國(guó)際形勢(shì)與中國(guó)原則立場(chǎng)
- 一年級(jí)拼音默寫表
- GB/T 1536-2021菜籽油
- 基坑邊坡支護(hù)安全技術(shù)交底
- 質(zhì)量總監(jiān)考核表
- 現(xiàn)代自然地理學(xué)理論第四章地理學(xué)的基本研究方法
評(píng)論
0/150
提交評(píng)論