ext4 bigalloc 性能测试报告
经过几个月的线上测试,ext4 bigalloc的测试报告终于出炉,我发复取了n多次的数据(这些去数据的过程最后都被我磨成bash脚本了),感谢刘亮同学和桑彦斌同学对CDN上线的支持,感谢柯旻同学和刘毅同学对hadoop线上的支持,还要感谢coly一遍又一遍的reivew报告和逼着我一遍又一遍的采集线上数据并作图(此公开版拿掉了图)。
测试报告(由于是从word文档改的,字体较小,可能需要全屏;部分内容由于公司政策不予显示,此保密政策是“量子时代”要求的,大家勿直接喷我):
Ext4 Bigalloc report public
View more documents from Robin Dong.
相关文章
- ext4 bigalloc 答疑 - 02 21, 2013
- 修复ext4 aio bug一个 - 01 15, 2013
- 修复ext4 bug一个 - 12 25, 2012
你好,博主,想请教一下一个问题:在CentOS6.2下使用ext4作为HDFS的host fs有哪些常规的优化项呢?比如挂载参数需不需要noatime(因为我看有的资料说需要有的说不需要)?
我个人推荐是:
mke4fs -N 1000000 -I 128 -O ^has_journal,extent,meta_bg,flex_bg /dev/sda
其中 "-I 128“ 是把inode的size缩短为128字节(ext4默认是256字节),这样可以减少元数据的占用
“-N 1000000”意思是该盘最多只预留存放100万个inode的inode table,hdfs的文件是64MB一个,通常一个2T的盘也不会放超过10万个hdfs的文件或目录,所以100万我个人觉得是足够了,mke4fs自己计算的inode量要比100万大得多,多余的inode table也是浪费,所以适当减少是必要的
"^has_journal“是去掉ext4的日志,hdfs已经保存了文件的三份拷贝,ext4自己做日志的必要不太大
“flex_bg”则有利于创建大块的连续的空闲磁盘空间
mount的时候个人推荐带上"noatime“,这样普通的一次文件访问不会带来一次额外的IO
先感谢您回复,没收到回复的提醒邮件,查看晚了。
mount参数“extents,mballoc,delalloc,barrier=1,data=writeback,noatime,nodiratime,acl,user_xattr”这样合适吗?
我觉得如果是在hadoop集群,数据相当于已经有了3个备份,所以可以改barrier=1为barrier=0,去掉“data=writeback“(mkfs的时候如果有^has_journal,那就没日志了)。最省的方案:
"extents,mballoc,delalloc,barrier=0,noatime,nodiratime,acl,user_xattr"
当然,要根据您的实际情况
感谢指教!
你好,博主,想请教一下2个问题: 1. CDN因为是图片为主平均文件尺寸应该不大,使用bigalloc是否需要?
2. 另外CDN IOPS下降可以理解(可能是每次的读取size增加了),但是文件碎片下降了这么多,总带宽下降就难以理解了
1. CDN的图片确实不大,但我们的CDN后台不是把图片一张一张存的,而是攒成一个个大文件存的(类似GFS的64MB chunk),所以bigalloc可以发挥作用 2. 同上,bigalloc能减少大文件的碎片数,也就降低了元数据的量,自然总io带宽就下降了
DongHao : 你好,"bigalloc能减少大文件的碎片数,也就降低了元数据的量,自然总io带宽就下降了" -- 这是否意味着还可以继续压榨 FS , 给CDN提供更高的IO带宽?
@peon,一段1024MB的信息,存成1024个1M的小文件,元数据假设占了4M;那么当把这1024个小文件合成两个512MB的大文件时,元数据可能只占8KB,节省很明显;那么如果继续,合成一个1024MB的大文件,那么元数据占4KB,节省就不明显了。 所以说,随着文件越来越大,带来的元数据节省也越来越不明显,所以bigalloc并不能持续线性的提高性能,从性能报告上也可以看出,64k的cluster相比128k的cluster,几乎没有明显的性能提升。所以我个人觉得,对于一般的应用,选择64k的cluster,bigalloc的性能提升也就差不多了。
@DongHao,我是peon, 我是这么理解的,除了元数据的量以外,还有一个是机械磁盘的特点,假如我们一次读取的block更大,这样会有效的提高吞吐,假如cdn读取的文件是较大的文件,一次性读出来的话,bigalloc 应该可以大大的增加吞吐的
@peon,由于ext4采用了extent结构后,数据分布在硬盘的连续性已经是大大提高了,所以,bigalloc只能在此基础上,再提高一些吞吐,不敢说“大大的增加” _ 当然,如果你是从ext3升级到ext4 bigalloc,那么性能的提升还是会非常显眼的