推薦:http://www.douban.com/group/yaoqingzhuce/
本文重點(diǎn)介紹【同時運(yùn)行多個 VM 的速度優(yōu)化】。俺會從“硬件選型”和“軟件設(shè)置”兩個角度分別來聊。如果你是第一次看本系列,建議你先看完前面幾篇,再看本文。前幾天聊到了對付流氓軟件的幾個招數(shù),其中最管用的一招是“操作系統(tǒng)虛擬機(jī)”。那篇博文發(fā)出后,有幾個讀者在博客留言中抱怨說:用了虛擬機(jī)之后,系統(tǒng)太卡了。所以今天來普及一些虛擬機(jī)的“運(yùn)行速度優(yōu)化”。 ★CPU(中央處理器)的“虛擬化技術(shù)”在虛擬機(jī)的速度優(yōu)化中,“虛擬化技術(shù)”是非常重要滴,可惜又少有人了解。所以俺把它放在本文第一個章節(jié)。 ◇啥是“虛擬化技術(shù)”?“虛擬化技術(shù)”全稱是“x86硬件虛擬化技術(shù)”,維基百科的解釋在“這里”。為了打字省力,以下簡稱“VT”。 該技術(shù)是在【硬件】層面額外提供一些機(jī)制,這些機(jī)制僅僅用于“虛擬化”方面。如果你的電腦不是用來跑“虛擬機(jī)”,VT 技術(shù)對你而言毫無用處。 為啥要在硬件層面額外提供這樣一種技術(shù)捏?因為 x86 的體系結(jié)構(gòu),天生就【不適合】用來搞“操作系統(tǒng)虛擬化”(個中緣由,考慮到篇幅,就不細(xì)談了)。但是最近10多年來,“虛擬化”是大勢所趨。所以 Intel 和 AMD 都在自家的芯片上提供了適合“虛擬化”的擴(kuò)展機(jī)制。對 Intel 芯片而言,稱之為“Intel-VT”(也叫“VT-x”);對 AMD 芯片而言,稱之為“AMD-V”。 請注意,VT 只在部分型號的芯片上提供。也就是說,不論是 Intel 還是 AMD,都只有某些型號的芯片是支持 VT 的。 ◇VT 有啥用?如果要從原理上闡述 VT 的用處,需要涉及到 x86 架構(gòu)的設(shè)計及其缺陷,說來話長啊。考慮到篇幅,俺只舉幾個例子。 舉例1: 有了 VT 之后,如果 Guest OS 中需要執(zhí)行 CPU 的特權(quán)指令,虛擬機(jī)軟件可以利用 VT 原生支持(硬件層面搞定);如果沒有 VT,碰到這種情況就只能靠軟件模擬運(yùn)行(靠軟件模擬,效率差太多了)。 很多同學(xué)抱怨電腦跑 VM 太慢,其中一部分人的原因就是——CPU 不支持 VT。 舉例2: 有了 VT 之后,你可以在“32位”的 Host OS 里面虛擬出“64位”的 Guest OS;若沒有 VT 支持,就無法在“32位”上虛擬“64位”。 ◇如何判斷“VT 是否可用”?首先,你應(yīng)該去查一下自己的電腦是啥型號的,然后 Google 一下該型號的硬件配置,通常都可以在那些電腦行情網(wǎng)站(比如:太平洋電腦網(wǎng)、中關(guān)村在線)上找到該型號使用的 CPU 規(guī)格。在 CPU 規(guī)格中,通常就會提到這款 CPU 是否支持 VT。萬一在 CPU 規(guī)格中沒有提及是否支持 VT,你可以根據(jù)該 CPU 的詳細(xì)型號,再到 Intel 或 AMD 的官網(wǎng)上查,肯定能查到相關(guān)說明。 假如你查到自己的 CPU 是支持 VT 的,還沒完。你還得到操作系統(tǒng)里面檢驗一下,看 VT 在操作系統(tǒng)層面是否可見。 對于使用 Windows 的同學(xué) Intel 和 AMD 各自都提供了專門的檢測工具。不過俺還是推薦用微軟提供的檢測工具(Intel/AMD 通吃)。下載鏈接在“這里”。該工具是綠色的(免安裝),在 Host OS 中運(yùn)行它,就會提示你的系統(tǒng)是否支持 VT。 對于使用 Linux 的同學(xué) 請自行查看 Host OS 中的 /proc/cpuinfo 文件——對于 Intel 芯片,搜索 vmx 標(biāo)志;對于 AMD 芯片,搜索 svm 標(biāo)志。 ◇疑難解答如果你上網(wǎng)查到自己的 CPU 是支持 VT 的,但是用微軟的檢測工具卻顯示不支持,那么很可能是你【沒有】在 BIOS 中開啟 VT 設(shè)置。 如果你在 BIOS 中開啟了 VT,但是微軟的檢測工具還是報告說“不支持 VT”,那么還有如下幾種可能: 1. 有些電腦在系統(tǒng)啟動時會鎖定 VT 設(shè)置。所以你必須先【關(guān)機(jī)】,然后再開機(jī)并進(jìn)入 BIOS 界面,再去修改 VT 設(shè)置。如果你只是【重啟動系統(tǒng)】,沒有進(jìn)行【關(guān)機(jī)】操作,可能會導(dǎo)致 VT 的修改沒生效。 2. 極少數(shù)便攜式電腦在 BIOS 修改 VT 擴(kuò)展之后,要進(jìn)行完全放電,才能讓修改生效。 3. 檢查一下你的芯片驅(qū)動是否裝對了 ★CPU 的并行能力◇名詞解釋所謂的“并行”(parallel),通俗而言就是:讓 CPU 可以同時干多個事情。 CPU 的并行能力,主要通過三種技術(shù)來實現(xiàn):多處理器(dual processor)、多核(dual core)、超線程(hyper threading)。 至于這三種的詳細(xì)解釋,俺就偷個懶,大伙兒自己去看維基百科吧。 ◇幾種并行技術(shù)的性能對比這三種 CPU 的并行技術(shù),其優(yōu)缺點(diǎn)對比(尤其是前兩種),網(wǎng)上有不少口水戰(zhàn)??陀^地講,在不同的使用場景,不同技術(shù)的表現(xiàn)也是不同滴。所以很難一概而論地說哪個技術(shù)更好。 在“多 VM 同時運(yùn)行”的場景下,俺個人認(rèn)為: 其它指標(biāo)相同的情況下,“N個單核的CPU”優(yōu)于“一個N核的CPU” 其它指標(biāo)相同的情況下,“一個雙核的單線程CPU”優(yōu)于“一個單核的超線程CPU”(“超線程”通常指“雙線程”) ◇購買時的考慮如果你正打算采購一臺電腦,并且計劃在該電腦上跑多個 VM。從“性價比”的角度考慮,你應(yīng)該挑選“單 CPU 多核”。 因為個人用的電腦,主板大都只支持【單個 CPU】;支持多 CPU 的電腦,價格要高出很多。所以在性價比考慮之下,只能退而求其次,選“單 CPU 多核”——這是比較劃算的方案。 至于應(yīng)該買“幾核”的 CPU,俺的建議是——在你的預(yù)算內(nèi),核心數(shù)多多益善。 ◇配置時的考慮主流的虛擬機(jī)軟件(VMware 和 VirtualBox)都可以指定 Guest OS 使用的 CPU 數(shù)量。 對于 VirtualBox,它提供的界面上讓你設(shè)置的是“虛擬 CPU 數(shù)”(對應(yīng)的是“核心數(shù)”)。你設(shè)置的數(shù)量要【小于等于】你物理 CPU 的“總核心數(shù)”(即使是超線程的 core 也只算1個)。 對于 VMware,它提供的界面上可以讓你設(shè)置“CPU 數(shù)”與“每 CPU 核心數(shù)”。此處的設(shè)置比 VirtualBox 復(fù)雜。大伙兒可以參考 VMware 官網(wǎng)的文檔(鏈接在“這里”)。 通常情況下,你只需設(shè)置為跟你的物理 CPU 的情況一致,就可以了。但是有些特殊情況,俺需要提醒一下。 VMware 下的特殊情況: 微軟提供的某些 Windows 版本,會存在 CPU 數(shù)的限定(這是微軟的銷售策略導(dǎo)致的)。比如 Windows Server 2003 Standard Edition 限定了最多只能用4個 CPU(指 processor,不是 core);比如 WinXP 最多支持2個 CPU(也是指 processor)。如果你分配給 Guest OS 的 CPU(processor) 超過了微軟規(guī)定的上限,那超出的部分就浪費(fèi)了。 ★內(nèi)存相關(guān)的優(yōu)化相比 CPU,內(nèi)存方面沒有太多講究。 ◇購買時的考慮如果你正在考慮買電腦,并且你想跑多個 VM,在預(yù)算范圍內(nèi)盡量買內(nèi)存大的,或者是買來之后自己加內(nèi)存。 需要多大的內(nèi)存,取決于你需要【同時運(yùn)行】的 VM 數(shù)量,以及每個 VM 的用途。 如果你善于優(yōu)化,即使不大的內(nèi)存,也可以同時跑好幾個 VM(本文后續(xù)章節(jié)會稍微聊一下 Guest OS 的優(yōu)化)。 ◇配置時的考慮目前所有的虛擬機(jī)軟件,都可以讓你給每個 Guest OS 單獨(dú)指定內(nèi)存大小。 給 Guest OS 配置內(nèi)存,要恰到好處。 如果配得太小,可能會導(dǎo)致 Guest OS 頻繁使用虛擬內(nèi)存,然后虛存頻繁換頁,就會導(dǎo)致頻繁的磁盤 I/O,自然就拖慢【整臺電腦】的性能。 如果配得太大,可能會導(dǎo)致留給 Host OS 的內(nèi)存太小,然后 Host OS 頻繁使用虛存,同樣會出現(xiàn)頻繁的內(nèi)存換頁和磁盤 I/O?!菊_電腦】的性能同樣會被拖慢。 ◇32位 vs 64位如果電腦的物理內(nèi)存【小于】4GB,你的 Host OS 可以裝“32位”也可以裝“64位”。俺通常建議想玩 VM 的同學(xué)裝“64位”。因為裝了“64位”之后,萬一今后想擴(kuò)展物理內(nèi)存,就不存在 4GB 的限制。 如果電腦的物理內(nèi)存【超過】4GB,你當(dāng)然要直接上【64位】的操作系統(tǒng)。雖然從理論上講,“32位”也可以玩轉(zhuǎn)超過 4GB 的物理內(nèi)存。不過捏,這需要通過一些旁門左道的技術(shù)(比如:PAE/物理地址擴(kuò)展)。俺個人不建議大伙兒(尤其是技術(shù)菜鳥)去折騰這種旁門左道。 ★磁盤相關(guān)的優(yōu)化◇機(jī)械硬盤 VS 固態(tài)硬盤“機(jī)械硬盤”大伙兒應(yīng)該都比較熟悉了,俺就不介紹了。單說說新興的“固態(tài)硬盤”(洋文縮寫是 SSD)。 相比傳統(tǒng)的硬盤,SSD 的優(yōu)點(diǎn)很明顯,有如下幾個: 1. 讀寫速度飛快(尤其是讀速度比機(jī)械硬盤快更多) 2. 無噪音 3. 無懼震動 4. 不發(fā)熱 5. 低功耗 但是 SSD 的缺點(diǎn)同樣明顯,有如下幾個: 1. 損壞后難恢復(fù)(相比機(jī)械硬盤,損壞前無預(yù)兆,一旦損壞就整塊報廢) 2. 寫入次數(shù)很有限(這個可以通過“損耗均衡技術(shù)”來解決) 3. 價格 俺個人覺得:多數(shù)情況下,【沒有必要】刻意追求 SSD。基于性價比考慮(如今 SSD 的價格還是偏高),花小錢升級內(nèi)存比花大錢買 SSD 對性能的提升更明顯。 因為普通人用電腦,操作的軟件大都【不是】“磁盤 I/O 密集型”。比如你用瀏覽器上網(wǎng),瀏覽器對磁盤的讀寫就非常非常少。比如你用 Office 處理文檔,即使你設(shè)置了“每分鐘自動保存”,對磁盤的讀寫依然是非常少的。 有些同學(xué)可能會問:自己天天下載電影,天天在電腦上播放,這樣算不算“磁盤 I/O 密集型”?俺覺得這個都算不上。因為在線下載,瓶頸在網(wǎng)速(家用寬帶也就 10Mbps 的數(shù)量級,SATA 的傳輸率是 Gbps 的數(shù)量級)。即使是播放本地高清視頻文件,也遠(yuǎn)達(dá)不到磁盤傳輸?shù)纳舷蕖?br> 相對而言,如果你的內(nèi)存足夠大,就可以禁用操作系統(tǒng)的“虛擬內(nèi)存”。如此一來就避免了虛存換頁導(dǎo)致的“磁盤 I/O”——在內(nèi)存緊張的情況下,虛存交換導(dǎo)致的磁盤讀寫,是很驚人的。(下面的章節(jié)還會再提到“虛擬內(nèi)存”的優(yōu)化) ◇記得切換物理磁盤的【工作模式】對于 PC 機(jī)而言,比較常見的硬盤接口有兩種:一種是老式的 PATA(并行 ATA,也叫“IDE”),另一種是新式的 SATA(串行 ATA)。如今新買的電腦,估計都已經(jīng)是 SATA 接口了。 因為電腦廠商要考慮舊操作系統(tǒng)的兼任性,所以大多數(shù) PC 機(jī)的 BIOS 設(shè)置中,都保留了一個“IDE”的兼容模式。在新買的電腦中,有的電腦 BIOS 默認(rèn)設(shè)置是 ACHI(用于 SATA),有的默認(rèn)設(shè)置是 IDE。 如果你不確定的話,建議看一下你電腦的 BIOS 設(shè)置,看看硬盤的工作模式是哪個。如果依然是 IDE 模式,趕緊改成 ACHI 模式。因為 ACHI 模式才能完全發(fā)揮 SATA 接口的性能。 ◇虛擬磁盤【格式】的選擇某些虛擬機(jī)軟件同時支持多種虛擬磁盤格式(典型的就是 VirtualBox,支持好多種)。那么你在創(chuàng)建新的 Guest OS 時,應(yīng)該選擇哪種格式捏?俺的建議是:選擇該虛擬機(jī)軟件原生的格式。 以 VirtualBox 為例。 它同時支持 VDI、VMDK、VHD、HDD、QED 等多種格式。但是這些格式中,只有 VDI 是 VirtualBox 原生支持的——所謂的“原生支持”就是說,這個 VDI 格式本身就是 VirtualBox 的開發(fā)團(tuán)隊發(fā)明的。所以,對 VirtualBox 的用戶而言,如無特殊情況,盡量用它原生的 VDI 磁盤格式。 下面是幾款常見虛擬機(jī)原生的“虛擬磁盤格式”: VirtualBox——VDI VMware——VMDK Virtual PC/Virtual Server——VHD QEMU——QED 補(bǔ)充說明: 使用原生的磁盤格式,除了性能上的考慮,還有一個是基于“安全性”的考慮——對虛擬機(jī)用戶而言,虛擬磁盤承載了你的數(shù)據(jù),是非常重要滴。 由于原生的磁盤格式就是指虛擬機(jī)軟件的開發(fā)團(tuán)隊自己發(fā)明的格式。所以對“原生格式”的支持,比較【不容易】出故障和 Bug ◇RAID 的考慮如果你的電腦只有一塊物理硬盤,請?zhí)^本小節(jié)。 如果你的電腦中同時插了多塊物理硬盤,可以考慮用 RAID 來提升硬盤的讀寫性能。 由于大部分網(wǎng)友的電腦都是單硬盤,俺就不展開細(xì)聊了。有此需求的同學(xué)可以參考維基百科詞條,選擇適合你的 RAID 方式。 ★優(yōu)化“Guest OS 的內(nèi)存占用”◇使用“更省內(nèi)存”的操作系統(tǒng)如今很多網(wǎng)友都用上 Win7。但是 Win7 的內(nèi)存占用是比較大滴。如果你想在 VM 里面跑 Win7,建議你改用 Windows ThinPC。這是微軟官方發(fā)布的版本,根據(jù) Win7 進(jìn)行精簡(含 Win7 SP1)。它的系統(tǒng)安裝盤小了很多,安裝后的硬盤占用也小了很多,啟動后的內(nèi)存占用也小了很多。關(guān)于 ThinPC 的更多介紹,可以看俺之前的博文《Windows XP 大限已至——要不要換系統(tǒng)?如何換?》。 如果你喜歡折騰技術(shù),還可以用 Linux 作為 Guest OS。相比 Windows,Linux 的優(yōu)點(diǎn)之一是:可以深度定制。通過定制,可以讓它變得很輕量級,只占用很少的內(nèi)存。如今已經(jīng)有很多現(xiàn)成的“輕量級 Linux 發(fā)行版”(請看維基百科的這個鏈接),其中一些只要幾十兆內(nèi)存就可以正常運(yùn)行。 不熟悉 Linux 的同學(xué)可以參考俺之前的博文《掃盲 Linux:新手如何搞定 Linux 操作系統(tǒng)》。 ◇使用“更省內(nèi)存”的軟件比如說,如今網(wǎng)友們上網(wǎng),經(jīng)常會在瀏覽器中開啟幾十個標(biāo)簽頁。當(dāng)標(biāo)簽頁開得很多時,瀏覽器占用的內(nèi)存自然也猛增。但是不同的瀏覽器,差異還是很明顯的。俺找到一篇今年(2014)的測評報告(英文原文,中文翻譯),對比了 Chrome 34、Firefox 29、IE 11。當(dāng)開啟 40 個標(biāo)簽頁的情況下,F(xiàn)irefox 的內(nèi)存占用最小,IE 最大。并且 IE 占用內(nèi)存幾乎是 Firefox 的2倍。 俺舉這個例子是想說明——選擇性能更優(yōu)秀的軟件,會幫你節(jié)省很多內(nèi)存。 ◇禁用不需要的系統(tǒng)服務(wù)(service)Windows 是面向傻瓜用戶的,而且 Windows 的應(yīng)用范圍很廣(從商務(wù)辦公到居家打游戲),所以它默認(rèn)開啟了很多系統(tǒng)服務(wù)。因為微軟不確定這些服務(wù)是否會被用到,所以就把【可能用到】的服務(wù),都設(shè)置為“自動”啟動。 這樣一來,確實方便了傻瓜用戶,但是也導(dǎo)致默認(rèn)的系統(tǒng)服務(wù)占用太多內(nèi)存。所以你需要把那些你壓根兒用不到的服務(wù)停掉(把啟動方式修改為“手動”)。(至于哪些服務(wù)可以停掉,大伙兒如果感興趣,再另外寫一篇) ◇去掉不需要的啟動項(auto run)很多軟件(尤其是流氓軟件)喜歡在“啟動項”里面加?xùn)|西。有些啟動項壓根兒用不到,豈不是白白浪費(fèi)內(nèi)存? 所以你應(yīng)該清理一下那些沒啥用的啟動項。 ◇虛擬內(nèi)存的設(shè)置其實在剛才,俺已經(jīng)提到了“虛擬內(nèi)存”的話題。 “虛擬內(nèi)存”簡稱“虛存”,洋文叫做“virtual memory”,維基百科的詞條在“這里”。 經(jīng)常聽到有人抱怨系統(tǒng)太卡。當(dāng)系統(tǒng)運(yùn)行變慢的時候,你觀察一下系統(tǒng)的內(nèi)存使用,然后再看一下電腦的硬盤燈。如果系統(tǒng)的內(nèi)存使用已經(jīng)很高,并且硬盤燈長亮。這通常說明系統(tǒng)在進(jìn)行頻繁的“虛存交換/虛存換頁”。這個過程需要進(jìn)行頻繁的磁盤讀寫,從而拖慢了整個系統(tǒng)。于是你就覺得系統(tǒng)很卡。 關(guān)于“虛存”,俺的經(jīng)驗是:先把物理內(nèi)存搞大,然后禁用虛存。由于物理內(nèi)存足夠,并且虛存被禁用,那么就不存在“虛存交換”,這可以降低很多的磁盤 I/O 過程。 套用到 VM 管理上——你必須給每個 Guest OS 配置足夠大的內(nèi)存,然后在 Guest OS 里面禁用“虛存”(具體如何禁用,你自己去 Google 一下)。 注意事項: 如果你要使用俺這個建議,要確保系統(tǒng)的內(nèi)存是足夠的。在禁用虛存的情況下,如果內(nèi)存耗盡,可能會導(dǎo)致系統(tǒng)崩潰或者某個進(jìn)程崩潰。 ★雜項在本文的最后,俺順便列舉一些雜七雜八的注意事項。 ◇在 Guest OS 中安裝虛擬化的相關(guān)驅(qū)動雖然這條放在“雜項”,但是這條很重要。 當(dāng)你安裝好 Guest OS 的操作系統(tǒng)之后,首先記得在這個 Guest OS 里面安裝虛擬機(jī)軟件的驅(qū)動。對于 VMware 而言,這玩意兒叫做“VMware Tools”;對 VirtualBox 而言,這玩意兒叫做“Guest Additions”。 裝好之后,除了改善很多 GUI 方面的體驗(比如“鼠標(biāo)的無縫融合”,比如“改進(jìn) Guest 的屏幕分辨率”),還可以改善其它的一些虛擬設(shè)備的性能。 ◇3D 加速如果你要運(yùn)行一些涉及 3D 的應(yīng)用(比如 3D 游戲),要記得去 Guest OS 的設(shè)置界面,勾選“3D 加速”這個選項(VirtualBox 和 VMware 都有此選項)。 ◇禁止殺毒軟件掃描虛擬磁盤文件Guest OS 的虛擬磁盤文件,通常都很大很大(相當(dāng)于把虛擬系統(tǒng)的所有硬盤內(nèi)容放在一個文件中)。如果 Host OS 里面的殺毒軟件嘗試去掃描這些虛擬磁盤文件,由于文件太大,會導(dǎo)致掃描過程消耗非常多的磁盤 I/O,從而拖慢你整臺電腦的性能。 所以,你必須對殺毒軟件進(jìn)行一些設(shè)置,禁止它去掃描那些存放 Guest OS 的目錄。 |
|