测试基于虚拟机,不保证在真机上的真实准确性,真实服务器只能比这个快,仅供参考而已,年前封箱文。
环境:
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当开放平台的服务器了。