下载此文档

ubifs性能优化分析.docx


文档分类:通信/电子 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
ubifs 性能优化分析本文通过分析 ubifs 的 mount、read、write mit流程,挖掘 ubifs 背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案。1. ubifs mount 流程 mount 过程就是初始化对象的过程。这其中包括上层(vfs 层、页缓存层、通用块层)的回调接口的注册,从设备中获取相关信息(super block,master node,log,orphan, index node),初始化ubifs_info、TNC、LPT 等内部对象,并对 ubifs 各区(默认不检查 main 区的 index node,因为有 log 区的日志,一般情况下不需要扫描所有的 index tree)、journal head、lpthead 等进行校验、检查、修复、更新,创建后台进程等。可以看出,mount 中包含了检查和修复过程,所以 ubifs 并没有提供额外的修复工具,这一点区别于 vfat、ext3 等文件系统。mount 的核心函数为 ubifs_init,其主要负责外部对象的初始化,内部对象的初始化由 ubifs_get_sb 负责。具体细节如下:ubifs_init 主要流程:创建 ubifs inode slab(kmem_cache_create )注册 ubifs TNC shrinker 回收功能ubifs_shrinker_info(register_shrinker )注册压缩算法(pressors_init )注册 debugfs(dbg_debugfs_init )注册 ubifs 文件系统ubifs_fs_type(register_filesystem )调用 ()继续初始化ubifs_get_sb 主要流程:获取 ubi_volume_desc 对象创建并初始化 ubifs_info 对象和 super_block 对象读取并验证、修复 ubifs_sb_node,并以ubifs_sb_node 继续初始化 ubifs_info 对象创建 wbuf 和后台线程 ubifs_bgt1_0,其主要作用是后台同步 write-mit、垃圾回收等。读取并验证、修复 ubifs_mst_node,并以ubifs_mst_node 继续初始化 ubifs_info 对象如果发现 index and LPT 头有损坏就进行修复,以继续初始化 ubifs_info更新 master node 信息遍历、检查 indexing node (ubifs_zbranch,ubifs_znode)的总大小是否与 c-> 一致(dbg_check_idx_size,由 chk_index 控制,默认关闭)回放 log,检查修复 index node,并更新TNC(ubifs_replay_journal)删除 orphan inode(ubifs_mount_orphans)检查 indexing tree 的叶节点是否存在、crc 等验证信息(dbg_check_filesystem,由 chk_fs 控制,默认关闭)设置垃圾回收gc_waterline(UBIFS_FREE_RESERVE_RATIO 5),唤醒后台线程。2. ubifs read 流程ubifs read 按如下顺序,在存储层次中依次查找所需数据,直至找到并完成读取:page cachewrite bufferflashubifs 一切数据都封装成 node,不同类型的 node 有不同的长度。一个 data node 最大可以存储的数据大小为UBIFS_BLOCK_SIZE (4096)。也就是说 ubifs 单次读的最大长度即 block 大小。ubifs 读系统调用路径如下:read -> do_sync_read ->aio_read -> generic_file_aio_read ->generic_file_aio_read -> do_generic_file_read ->readpage -> ubifs_bulk_read 或 do_readpagedo_readpage:读取一个内存 page,ubifs 按 block 大小,把 page 切分成 ubifs block 后再依次按 block 进行读(read_block)。ubifs_bulk_read:如果 data node 连续并在同一个 LEB 中,并超过 3 个内存 page 及以上(read_in_a_row 控制),自动启动 bulk_read。或者在 mount 时可以指定

ubifs性能优化分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cengwaifai1314
  • 文件大小26 KB
  • 时间2020-02-05