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