赞
踩
为什么华为不直接使用squashfs,而是要另辟蹊径开发新的erofs。
测试环境:高通8核+eMMC。
测试对象:压缩erofs文件系统,压缩squashfs文件系统和标志ext4文件系统
测试项目:顺序读,随机读和分散读。(enwik9是标准测试数据,android是以android framework为主要内容的数据,两者差别主要是在压缩比上)
顺序读表现最好的依然是老牌的ext4,但是erofs明显好于squashfs,但是squashfs在加上谷歌打patch之后,性能提升很多(红色柱子),但依然还是比erofs差。
随机读上由于有缓存的作用,squashfs看起来表现更好,但实质会造成更大的读放大问题,特别是块比较大的128KB squashfs。4KB的erofs和ext4还是比较相当的。
分散读主要是要排除掉读缓存的效果,测试方法是每128kb只读取前4kb,结果是显然squashfs因为读放大很多,导致了性能最差。但是erofs的表现没有比ext4差很多,考虑到它本身还压缩了,已经非常不错。
如果作为android系统分区使用的话,erofs因为使用LZ4压缩算法,压缩比率在70%
如果面对纯文本数据enwik9,erofs的压缩比率会更高一些达到56%
测试内容:文件系统读取10MB文件内容,测试实际块设备读取数量。数值大于10表示有读放大,越大则读放大问题越明显。数值小于10则表示没有读放大问题。
顺序读由于采用了压缩,因此压缩文件系统都没有读放大问题,所以顺序读是最有利于压缩文件系统
随机读和分散读,压缩文件系统都有不同程度的读放大,但是erofs表现明显好于squashfs。
10MB size | seq read (MB) | rand read (MB) | stride read (MB) |
squashfs 8K android | 7.39 | 23.98 | 22.24 |
squashfs 8K enwik9 | 6.39 | 21.12 | 21.83 |
squashfs 128K android | 6.52 | 177.36 | 169.75 |
squashfs 128K enwik9 | 4.51 | 114.72 | 141.86 |
erofs android | 7.72 | 15.82 | 15.87 |
erofs enwik9 | 6.84 | 17.09 | 16.38 |
ext4 | 10.96 | 10.01 | 10.02 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。