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