一、Openvz和Xen的技術(shù)規(guī)格分析
1.Xen與Openvz的區(qū)別
Xen和Openvz同樣是虛擬化主機(jī)技術(shù),區(qū)別在于Xen是半虛擬化技術(shù),它并不是一個真正的虛擬機(jī),而是相當(dāng)于自己運(yùn)行了一個內(nèi)核的實例,可以自由的加載內(nèi)核模塊,虛擬的內(nèi)存和IO,穩(wěn)定而且可預(yù)測。Openvz則是操作系統(tǒng)級別的虛擬化技術(shù),是底層操作系統(tǒng)上的一層應(yīng)用,這意味著易于理解和低權(quán)重開銷,一般來說也意味著更優(yōu)的性能。
這里有一個問題,可以看到實際上openvz因為免去了大量的公共開銷,理論上來說性能會比xen更好。為什么大家都會認(rèn)為openvz過分壓榨性能呢?我認(rèn)為是因為openvz配置起來比較靈活,給黑心 openvz服務(wù)商改低限制的機(jī)會。
比如mediatemple,號稱512M內(nèi)存的dv方案,kmemsize才12M,不了解的人看了512M覺得很哈皮啊,可是使用的時候一般這512M能分到你手里一半就不錯了。此消彼長,所以才會有xen 能更好地利用機(jī)器性能的錯覺。
2.Openvz的內(nèi)核模型
首先當(dāng)OpenVZ的主機(jī)說“256MB的保證”,它實際上意味著約232MB的“privvmpages”,14M的“kmemsize”和其他雜項資源。當(dāng)應(yīng)用程序調(diào)用 malloc()分配的內(nèi)存將被添加到“privvmpages”。
當(dāng)“privvmpages”超過限制,malloc()將失敗并返回一個NULL。當(dāng)主機(jī)服務(wù)器內(nèi)存用光了,然后虛擬環(huán)境下的進(jìn)程超過 “oomguarpages”的將被終止。
OpenVZ的內(nèi)存管理方法既有問題也有優(yōu)勢。最大的問題之一是內(nèi)存容量的應(yīng)用程序使用的內(nèi)存和應(yīng)用程序?qū)嶋H上分配到的內(nèi)存是不同的,不同的應(yīng)用程序他們的差別可能會很大。以Java為例,它通常分配一大塊的內(nèi)存,但是,它可能只使用一小部分分配的內(nèi)存。如果privvmpages受限,java會立即停止運(yùn)行。調(diào)整參數(shù)可以解決一部分問題,但它處理得絕對沒有Xen來得干凈利落。事實上,幾乎所有使用內(nèi)存分配的應(yīng)用程序都會受OpenVZ這個問題的影響。
/proc/meminfo 本身也有問題。雖然OpenVZ的已經(jīng)為內(nèi)存進(jìn)行了虛擬,但是用”free”命令依然會返回主機(jī)的內(nèi)存。這樣就會使小內(nèi)存的openvz的vps無法運(yùn)行諸如java或者gcc編譯這樣的程序。
OpenVZ的內(nèi)存模型的優(yōu)點是, 它容易理解: 你幾乎就只有privvmpages受限。與專用的服務(wù)器或Xen的服務(wù)器不一樣的是,你的磁盤高速緩存和頁面緩存并不計入您的總內(nèi)存使用情況。因此,在一個沒有過度銷售的openvz主機(jī)上,由于擁有較大冗余的公共資源,它實際上可能會比同類規(guī)格的Xen的VPS表現(xiàn)更佳。
3.Xen的內(nèi)存模型
Xen的系統(tǒng)模型更容易解釋。256MB的Xen的VPS是就像一個256MB的專用服務(wù)器-該內(nèi)存段是預(yù)留作VPS專用,沒有其他VPS能夠使用這部分內(nèi)存,這就像一個真正的專用服務(wù)器。
此外,當(dāng)內(nèi)存不足時,VPS會使用Swap。一般每個VPS帶有兩倍大小的交換分區(qū),當(dāng)您的應(yīng)用需要更多的內(nèi)存,不常使用的頁面從內(nèi)存中被換出到交換分區(qū),從而騰出使更多的房間。因此,256MB的Xen的VPS系統(tǒng)實際上共有768MB內(nèi)存(256MB內(nèi)存+ 512MB的交換空間),請相信我,交換空間是非常有用的,特別是處理突發(fā)的需求高峰時。
這么說來,Xen是永遠(yuǎn)遠(yuǎn)優(yōu)于OpenVZ?不然,你的256MB的VPS理論可以使用高達(dá)768MB內(nèi)存,而實際上內(nèi)核,高速緩存,緩沖,他們都占用內(nèi)存。這部分系統(tǒng)開銷也是可觀的。另外,Swap會嚴(yán)重降低性能。
4.穩(wěn)定性和可預(yù)測性
當(dāng)內(nèi)存耗盡時,xen和openvz表現(xiàn)大相徑庭。xen會把不常用的內(nèi)存頁面換入Swap,這將大大降低性能,當(dāng)Swap也用盡,那么xen的系統(tǒng)會響應(yīng)得越來越慢,就像一臺真實的服務(wù)器一樣。
而openvz一旦內(nèi)存用盡,則會突然死亡:開不出新的程序,只能等待系統(tǒng)資源可用。更有甚者,本來運(yùn)行的好好的程序也可能因為不斷增長而超過限制,然后突然死亡。這就像開車開到70碼,然后突然撞墻上了,一般會死得很慘。
毫無疑問這點上我傾向于xen技術(shù),可預(yù)測,穩(wěn)定。
5.結(jié)論
如果xen和openvz一樣貴,我肯定選xen,因為可預(yù)測性,即使openvz打8折,我還是追求穩(wěn)定。
上面的話總結(jié)一下,得出幾個結(jié)論:
1、XEN比openvz主機(jī)對買家更有利,比如分配給你512M內(nèi)存后,這一部分內(nèi)存就從服務(wù)器上專門劃給你了,別人將無法使用,而openvz則是共用內(nèi)存,比如分配給你512M內(nèi)存是指最大你能使用512M內(nèi)存,比如你占用了200M內(nèi)存,那么就只從物體內(nèi)存中分配200M給你,所以賣家非常容易在服務(wù)器上面超賣!
2、openvz更高效,xen是硬件底層虛擬,更接近真實服務(wù)器,而openvz是操作系統(tǒng)虛擬,虛擬服務(wù)自身占用內(nèi)存少,同樣的程序執(zhí)行效率更高!
3、如果購買openvz應(yīng)看賣家是否會超賣,應(yīng)選擇良好聲譽(yù)明確申明不會超賣的
4、如果購買xen主機(jī),應(yīng)同時關(guān)注swap大小
5、測試VPS主機(jī)性能使用Unixbench(很多人不知道),國外非常流行這個東西!