android sdcard存储方案三(基于fuse文件系统):
2015-12-31 17:27
567 查看
前面我的两篇文章重点描述了android基于fuse的sdcard存储方案,请参考:
《android
sdcard存储方案(基于fuse文件系统):之一》 和
《 android
sdcard存储方案(基于fuse文件系统):之二》
这两篇文章主要是为了说明清楚基于fuse的sdcard存储原理,及特点。
同时,前面我的文章也介绍了一些关于wrapfs文件系统的知识,只是没有说明它的用处。 请参考:
《Wrapfs
: a stackable file system(一种堆栈式文件系统)》
这篇作为终结篇,咱们主要讨论基于fuse的sdcard存储方案缺点,及基于wrapfs的android sdcard存储方案改进。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/b58e871159bec4b3851c51c94643a938)
通过分析android 默认的fuse方案操作流程,如上图。
我们可以看到其最最大的缺点是:
fuse文件系统和sdcard
dameon必需频繁的进行命令交互、数据交换,
引入内核态和用户态切换系统开销。
根据前面文章的分析,android用户数据空间data目录和用户sdcard目录,物理上在emmc中是同一个分区。
而文件系统也采用同一个文件系统:ext4 。 如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/bc1d5af4ea6218b0f02e5b68d8cc5caa)
既然硬件上是emmc的同一个分区/软件上直接文件系统都是ext4 !那么问题来啦!
我们是否有理由希望data目录和sdcard目录的存储性能接近呢?
这个问题是值得期待的!
但结果是我们期待的吗?请看测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/4c28f90a46991c039df9a68d7e461271)
data目录基于ext4性能
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/ca5b03019b919267c51ef716f6d23acc)
sdcard目录基于fuse+ext4性能
由以上测试数据,可以看出fuse性能表现是令人失望的!直接导致存储性能非常大的损耗!
既然前面说了fuse给存储系统带来了这么大损耗,那如何改进呢? 继续……
基于wrapfs的android sdcard存储优化方案原理如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/7cbc9c7e797ba369e9ad0e38d45ae154)
由图上,可以看出,wrapfs将上层的请求直接传递给了底层ext4文件系统,看起来比fuse简单多了。
那么同样的问题来啦!
我们是否有理由希望data目录和sdcard目录的存储性能无限接近呢?
请看测试结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/0f622714866c555bb7ed2754371aaa78)
data目录基于ext4性能
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/12/025cc266246979735a9dd832495e2e48)
sdcard目录基于wrapfs+ext4性能
由以上测试数据,可以看出基于wrapfs
sdcard存储性能已经无限接近ext4啦!
总结:
基于 fuse android默认sdcard存储方案,移植性强,但性能差。特别是针对性能好的emmc,性能drop更明显。
基于wrapfs android优化sdcard存储方案,性能更强,越好的emmc,表现越好。但因为属于内核一部分,移植性差。
参考:
•《AStackable File System Interface For Linux》
•http://www.fsl.cs.sunysb.edu/
前面我的两篇文章重点描述了android基于fuse的sdcard存储方案,请参考:
《android
sdcard存储方案(基于fuse文件系统):之一》 和
《 android
sdcard存储方案(基于fuse文件系统):之二》
这两篇文章主要是为了说明清楚基于fuse的sdcard存储原理,及特点。
同时,前面我的文章也介绍了一些关于wrapfs文件系统的知识,只是没有说明它的用处。 请参考:
《Wrapfs
: a stackable file system(一种堆栈式文件系统)》
这篇作为终结篇,咱们主要讨论基于fuse的sdcard存储方案缺点,及基于wrapfs的android sdcard存储方案改进。
一、基于fuse的sdcard存储方案缺点
android 默认的方案,是基于用户空间文件系统,最最大的优点是移植性好。 http://en.wikipedia.org/wiki/Filesystem_in_Userspace通过分析android 默认的fuse方案操作流程,如上图。
我们可以看到其最最大的缺点是:
fuse文件系统和sdcard
dameon必需频繁的进行命令交互、数据交换,
引入内核态和用户态切换系统开销。
根据前面文章的分析,android用户数据空间data目录和用户sdcard目录,物理上在emmc中是同一个分区。
而文件系统也采用同一个文件系统:ext4 。 如下图:
既然硬件上是emmc的同一个分区/软件上直接文件系统都是ext4 !那么问题来啦!
我们是否有理由希望data目录和sdcard目录的存储性能接近呢?
这个问题是值得期待的!
但结果是我们期待的吗?请看测试结果:
data目录基于ext4性能
sdcard目录基于fuse+ext4性能
由以上测试数据,可以看出fuse性能表现是令人失望的!直接导致存储性能非常大的损耗!
二、基于wrapfs的sdcard存储方案优点
前面的所有一切、一切都是为了这一节。既然前面说了fuse给存储系统带来了这么大损耗,那如何改进呢? 继续……
基于wrapfs的android sdcard存储优化方案原理如下图:
由图上,可以看出,wrapfs将上层的请求直接传递给了底层ext4文件系统,看起来比fuse简单多了。
那么同样的问题来啦!
我们是否有理由希望data目录和sdcard目录的存储性能无限接近呢?
请看测试结果:
data目录基于ext4性能
sdcard目录基于wrapfs+ext4性能
由以上测试数据,可以看出基于wrapfs
sdcard存储性能已经无限接近ext4啦!
总结:
基于 fuse android默认sdcard存储方案,移植性强,但性能差。特别是针对性能好的emmc,性能drop更明显。
基于wrapfs android优化sdcard存储方案,性能更强,越好的emmc,表现越好。但因为属于内核一部分,移植性差。
参考:
•《AStackable File System Interface For Linux》
•http://www.fsl.cs.sunysb.edu/
相关文章推荐
- Android基础之Activity
- Android 使用NDK编写 基于C层的守护进程
- android瀑布流效果(仿蘑菇街)
- phonegap(cordova) 自定义插件代码篇(二)----android 自动更新
- android_自动检测更新
- android Banner 广告轮播
- android sdcard存储方案二(基于fuse文件系统)
- 高效地Android多渠道快速打包
- android sdcard存储方案一(基于fuse文件系统)
- (搬运)如何正确获得Android内置SD卡跟外置可插拔SD卡
- Android AES加密工具类,解决只能加密不能解密问题
- android studio 接入androidannotations compileDebugJavaWithJavac错误解决
- Android性能优化之内存篇
- android 图片的三级缓存原理
- Android内存优化之OOM
- Android 解决dialog无法弹出输入键盘
- (搬运)如何正确获得Android内置SD卡跟外置可插拔SD卡
- Android开发必备(干货源码放送大)
- Android 图表开源库 GraphView
- android中Invalidate和postInvalidate的用法