ext4 bigalloc 性能测试报告

经过几个月的线上测试,ext4 bigalloc的测试报告终于出炉,我发复取了n多次的数据(这些去数据的过程最后都被我磨成bash脚本了),感谢刘亮同学和桑彦斌同学对CDN上线的支持,感谢柯旻同学和刘毅同学对hadoop线上的支持,还要感谢coly一遍又一遍的reivew报告和逼着我一遍又一遍的采集线上数据并作图(此公开版拿掉了图)。

测试报告(由于是从word文档改的,字体较小,可能需要全屏;部分内容由于公司政策不予显示,此保密政策是“量子时代”要求的,大家勿直接喷我):



相关文章

分类

11 Comments

Ranler said:

你好,博主,想请教一下一个问题:在CentOS6.2下使用ext4作为HDFS的host fs有哪些常规的优化项呢?比如挂载参数需不需要noatime(因为我看有的资料说需要有的说不需要)?

DongHao Author Profile Page said:

我个人推荐是:

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

Ranler said:

先感谢您回复,没收到回复的提醒邮件,查看晚了。

mount参数“extents,mballoc,delalloc,barrier=1,data=writeback,noatime,nodiratime,acl,user_xattr”这样合适吗?

DongHao Author Profile Page said:

我觉得如果是在hadoop集群,数据相当于已经有了3个备份,所以可以改barrier=1为barrier=0,去掉“data=writeback“(mkfs的时候如果有^has_journal,那就没日志了)。最省的方案:

"extents,mballoc,delalloc,barrier=0,noatime,nodiratime,acl,user_xattr"

当然,要根据您的实际情况

Ranler said:

感谢指教!

peon said:

你好,博主,想请教一下2个问题: 1. CDN因为是图片为主平均文件尺寸应该不大,使用bigalloc是否需要?
2. 另外CDN IOPS下降可以理解(可能是每次的读取size增加了),但是文件碎片下降了这么多,总带宽下降就难以理解了

DongHao Author Profile Page said:

1. CDN的图片确实不大,但我们的CDN后台不是把图片一张一张存的,而是攒成一个个大文件存的(类似GFS的64MB chunk),所以bigalloc可以发挥作用 2. 同上,bigalloc能减少大文件的碎片数,也就降低了元数据的量,自然总io带宽就下降了

peon said:

DongHao : 你好,"bigalloc能减少大文件的碎片数,也就降低了元数据的量,自然总io带宽就下降了" -- 这是否意味着还可以继续压榨 FS , 给CDN提供更高的IO带宽?

DongHao Author Profile Page said:

@peon,一段1024MB的信息,存成1024个1M的小文件,元数据假设占了4M;那么当把这1024个小文件合成两个512MB的大文件时,元数据可能只占8KB,节省很明显;那么如果继续,合成一个1024MB的大文件,那么元数据占4KB,节省就不明显了。 所以说,随着文件越来越大,带来的元数据节省也越来越不明显,所以bigalloc并不能持续线性的提高性能,从性能报告上也可以看出,64k的cluster相比128k的cluster,几乎没有明显的性能提升。所以我个人觉得,对于一般的应用,选择64k的cluster,bigalloc的性能提升也就差不多了。

深蓝加菲 said:

@DongHao,我是peon, 我是这么理解的,除了元数据的量以外,还有一个是机械磁盘的特点,假如我们一次读取的block更大,这样会有效的提高吞吐,假如cdn读取的文件是较大的文件,一次性读出来的话,bigalloc 应该可以大大的增加吞吐的

DongHao Author Profile Page said:

@peon,由于ext4采用了extent结构后,数据分布在硬盘的连续性已经是大大提高了,所以,bigalloc只能在此基础上,再提高一些吞吐,不敢说“大大的增加” _ 当然,如果你是从ext3升级到ext4 bigalloc,那么性能的提升还是会非常显眼的

留言:

关于文章

This page contains a single entry by DongHao published on 06 11, 2012 5:12 PM.

hadoop与午睡 was the previous entry in this blog.

基于overlayfs的硬盘资源隔离工具troot is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.