测试基于虚拟机,不保证在真机上的真实准确性,真实服务器只能比这个快,仅供参考而已,年前封箱文。

环境:
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

红色为最快,绿色为最慢。


FFSreadwriteread&write
default6.63s14.24s26.81s
async6.56s13.81s27.77s
softdep noatime6.57s13.77s27.83s
UFS2
default2.97s15.23s16.28s
async3.07s13.11s15.28s
EXT4
ubuntu 113.94s4.40s6.25s
centos 64.61s5.74s7.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当开放平台的服务器了。