環境:
VirtualBox 4.1.8
Intel i3 2100 3.1GHz 4核
分配虛擬機2核,1024M內存
硬盤是ST500D ATA Device
OpenBSD 5.0 with FFS
FreeBSD 9.0 with UFS2
Ubuntu 11.10 server with EXT4
CentOS 5.7 with EXT4
測試命令:
寫入1G文件
time dd if=/dev/zero of=/tmp/1GB bs=4096 count=250000
讀取1G文件
time dd if=/tmp/1GB of=/dev/null bs=4096 count=250000
同時讀寫
time dd if=/tmp/1GB of=/tmp/1GB.a bs=4096 count=250000
紅色爲最快,綠色爲最慢。
FFS | read | write | read&write |
default | 6.63s | 14.24s | 26.81s |
async | 6.56s | 13.81s | 27.77s |
softdep noatime | 6.57s | 13.77s | 27.83s |
UFS2 | |||
default | 2.97s | 15.23s | 16.28s |
async | 3.07s | 13.11s | 15.28s |
EXT4 | |||
ubuntu 11 | 3.94s | 4.40s | 6.25s |
centos 6 | 4.61s | 5.74s | 7.07s |
OpenBSD和FreeBSD爲了保證其數據的掉電安全性,包攬全部項目最慢桂冠。不過其基於同步IO的操作,數據可靠性是有相當保證的。
在OpenBSD中,比較意外的是async和noatime,softdep的方式,async爲BSD系統強烈不推薦的方式,認爲其異步方式會造成數據掉電丟失,但是,從測試上看,OpenBSD的異步和softdep方式,並沒有比同步方式強多少。儘管在OpenBSD內的比較重,async方式沒有拿到最慢獎,但速度也只是零點幾秒的差異。而同時讀寫的速度是慢的比較離譜,所以,OpenBSD確實不適合做應用服務器使用,更適合當個路由器或者防火牆。
FreeBSD的UFS2比較令我意外,居然是讀取速度最快的,但是寫入速度卻是所有操作系統裏最慢的。所以,FreeBSD可以考慮做歷史數據存儲備份使用。或者做讀操作密集型應用的服務器。
作爲Linux最新推出的EXT4,確實在讀寫速度上讓人一亮。特別是ubuntu,包攬寫入和同步讀寫兩個冠軍,實在令人刮目相看。相比之下,CentOS6的速度就比較平庸了。而且在3項對比上,ubuntu幾乎所有項目都比centos快了1秒,在服務器應用上這已經是很大的差距了,對於Linux系統就不用要求數據的掉電安全性了。至於爲什麼,去找ext4原理看看就知道了。不要小看1秒的差距,最終這是個累計誤差的問題,1G誤差1秒,60G就是1分鐘,3.6T的數據就是1小時了。如果搞海量分析,還是選ubuntu或者FreeBSD比較好。
所以,竊以爲,OpenBSD的FFS比較適合做網關,路由,防火牆,你要拿他來做mysql,webserver,那就等死吧,雖然安全,但是性能實在是差了許多。
FreeBSD適合做存儲或者讀取密集型的應用服務器,比如webserver或者專供select的mysql slave服務器。
ubuntu/debian,適合寫入密集型或者讀寫密集型的應用,典型的就是mysql master或者基於web的文件服務器。
至於centos麼,如果你決定用Linux,還是把它扔了吧。
由於公司網絡對於下載的限制,本次沒有時間測試SuSE,不過,我猜測,SuSE的性能會優於CentOS,否則騰訊就不會用SuSE當開放平臺的服務器了。