linux中往nand(jffs2)中拷贝文件时速度慢的问题
来源:互联网 发布:海迅拆单软件 编辑:程序博客网 时间:2024/05/16 19:40
最近在调试nand和jffs2时,发现将一个文件从SD卡拷贝到jffs2的NAND分区时,速度非常慢,和从NAND中拷出(例如拷贝到SD卡)相比,慢了近5倍。一开始以为是驱动写NAND和读NAND的差异,后来用mtd-utile的nand write测试了一下,nand write的速度和nand read的也差不多。
由于mtd-utile的nand write/ nand read没有经过jffs2文件系统,于是将疑点定位在jffs2文件中。
经过一番debug,对各个模块进行耗时统计,经于找到元凶:fs/jffs2/compr.c 中的jffs2_comress()函数,绝大部分多出的耗时全在这个函数里。原来在menuconfig的时候没有选择 Advanced compression option for JFFS2, 但里面确默认使用了priority的压缩方式。重新设置成no compression后,OK,速度正常了。
以下是往jffs2文件系统中copy时的调用流程(竟然没有走mtdblock.c文件,一开始以为是经过这个文件中的mtd->write函数指针调用到nand_write函数的):
fs/read_write.c do_sync_write -> filp->f_op->aio_write()
jf/jffs2/file.c .aio_write = generic_file_aio_write,
mm/filemap.c: generic_file_aio_write->
__generic_file_aio_write ->
generic_file_buffered_write->
generic_perform_write->a_ops->write_end()
fs/jffs2/file.c: .write_end = jffs2_write_end,
jffs2_write_end->
fs/jffs2/write.c: jffs2_write_inode_range->
jffs2_write_dnode->
fs/jffs2/wbuf.c: jffs2_flash_writev->
c->mtd->write()
__jffs2_flush_wbuf()->
c->mtd->write()
drivers/mtd/nand/nand_base.c:
mtd->write = nand_write;
- linux中往nand(jffs2)中拷贝文件时速度慢的问题
- 使用scp传输时速度特别慢的问题
- Redmine 3.2.1 新建问题时速度过慢的问题
- android studio中每次自动更新gradle时速度实在太慢
- 在解析文件时、图像处理、算法编码时速度慢的一个原因
- eclips编辑struts-config.xml时速度非常慢的问题
- 解决Android本地api联网打开时速度慢的问题
- 解决Android本地api联网打开时速度慢的问题三种方法
- 关于 IE 浏览器打开时速度过慢的问题
- Java中拷贝文件的效率问题
- nachos中拷贝文件过大的问题
- linux下Nand Flash的JFFS2文件系统的移植
- 解决myeclipse中打开jsp文件很慢的问题
- ubuntu打开文件夹时速度非常慢
- Windows分区下的文件拷贝到Linux系统中
- linux中隐藏文件的拷贝和删除
- linux中解决SSH连接慢问题
- ERP中关于审批时速度太慢的SQL优化
- expdp full=y 导出整个数据库时非常慢
- Android编程之TimePickerDialog设置确定键导致OnTimeSetListener不响应问题
- Catalan数的递推公式求解
- 存储过程语法及实例
- 编程之美读书笔记之寻找1的个数
- linux中往nand(jffs2)中拷贝文件时速度慢的问题
- Android 自定义CheckBox图片
- Xen vtpm安装随笔
- [源码学习]Razor在VS调试配置
- [Android 数据库] android手机获取系统短信sqlite数据库并查看内容
- SVN:多版本库环境的搭建
- DataTable 和List 相互转换
- 释怀,一些事,一段情,有多少无情的话语
- 关于一些资料的备份