文件系统的可扩展性,主要考察flash规模变大时对文件系统性能的影响,主要考察指标有:
  • mount时间
  • 访问时间
  • 检查修复时间
  • 最大文件大小
  • 最大文件系统大小
  • 最大文件个数
 
mount时间
          相较jffs2需要扫描全部flash,ubifs利用log+bud日志结构,log区大小和bud大小通过DEFAULT_MAX_JNL(32M)的限制,将mount时间复杂度控制在O(1),时间大为缩短。ubifs mount流程请参照《ubifs性能优化分析》相关小节。但是需要注意的是ubi attach时间复杂度是O(n),与flash大小成线性关系,是主要的时间瓶颈,这个问题可以通过ubi的fastmap feature(2.6.32内核上还是experiential feature)得到解决。
 
访问时间
          访问时间的可扩展性在2个方面:存储位置的查找更新和存储对象的查找更新,分别介绍如下:
          采用LPT B+ 树按使用情况组织管理逻辑块,其查找和更新时间复杂度为O(logmN),
          采用list管理全free或dirty的逻辑块,其查找时间复杂度进一步优化为O(1),
          采用heap管理部分free或dirty的逻辑块,其更新时间复杂度为O(longN),查找时间复杂度进一步优化为O(1),
          采用TNC B+ 树按索引管理组织逻辑块,文件位置查找和更新时间复杂度为O(logmN)
综上所述,ubifs的访问时间复杂度为O(logmN)。
 
检查修复时间
          ubifs在mount时自动完成检查修复,各区的检查修复手段如下:
          superblock区:大小固定,只占用1个逻辑块,且只读的,理论上不会损坏。只检查,但不修复;时间复杂度为O(1);
          master区:大小固定,只占用2个逻辑块;A,B2区内容相互备份,进行检查修复;时间复杂度为O(1)。
          log区:为了便于快速检查是否存在重复的(lnum, offs)bud信息或者快速找到指定lnum的bud,bud采用有序rb tree组织,其index为lnum,其查找和更新时间复杂度为O(logN),而且log+bud日志结构通过DEFAULT_MAX_JNL(32M)的上限限制,即N具有上限。
          LPT区:无修复动作。因为lprops与逻辑块成线性关系,其检查时间复杂度也为O(n),为了不影响mount时间,所以检查功能(dbg_check_lprops)也默认关闭。
          orphan区:orphan区本身无修复检查。但是对于unclean umount,会利用orphan区删除孤儿节点。因为orphan区的逻辑块个数固定(为1或2个),所以存于orphan区的孤儿节点的个数固定,其遍历的时间复杂度为O(1)。
          main区:检查因为有log+bud的日志保护,所以ubifs不检查扫描main区下的index tree。
综上所述,ubifs的检查修复时间复杂度为O(1)。
 
最大文件大小
          ubifs本身无限制,受限于文件系统大小等其他限制
 
最大文件系统大小
          取决于block的个数限制(int block_cnt)和大小限制(#define UBIFS_BLOCK_SIZE  4096),最大2^32 * 4K = 16T
 
最大文件个数
          取决于inode的限制。最多支持2^32 个文件(#define MAX_INUM 0xFFFFFFFF)
 
--EOF--
 

ubifs扩展性分析的更多相关文章

  1. OpenStack 企业私有云的若干需求(6):大规模扩展性支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  2. 《.NET 设计规范》第 6 章:扩展性设计

    第 6 章:扩展性设计 6.1 扩展机制 考虑用不包含任何虚成员或受保护的成员的非密封类来为框架提供扩展性.这种方法所提供的扩展性广受用户欢迎,而且它的开销也不高. 考虑将受保护的成员用于高级的定制方 ...

  3. MySQL - 扩展性 3 负载均衡:眼花缭乱迷人眼

    负载均衡的基本思路很简单: 在一个服务器集群中尽可能地的平均负载量. 基于这个思路,我们通常的做法是在服务器前端设置一个负载均衡器.负载均衡器的作用是将请求的连接路由到最空闲的可用服务器上.如图 1, ...

  4. MySQL - 扩展性 1 概述:人多未必力量大

    我们应该接触过或者听说过数据库的性能瓶颈问题.对于一个单机应用而言,提升数据库性能的最快路径就是氪金 - 买更高性能的数据库服务器,只要钱到位,性能不是问题. 但是当系统性能增加到一定地步时,你会发现 ...

  5. 设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01

    在<vivo 营销自动化技术解密 |开篇>中,我们从整体上介绍了vivo营销自动化平台的业务架构.核心业务模块功能.系统架构和几大核心技术设计. 本次带来的是系列文章的第2篇,本文详细解析 ...

  6. Atitit.兼具兼容性和扩展性的配置方案attilax总结

    Atitit.兼具兼容性和扩展性的配置方案attilax总结 文件配置法1 Jdbc多数据源文件配置发1 Bat文件配置法1 改进的文件配置法(采用类似i18n技术) 推荐1 使用自动化pc_id的方 ...

  7. Atitit.软件架构高扩展性and兼容性原理与概论实践attilax总结

    Atitit.软件架构高扩展性and兼容性原理与概论实践attilax总结 1. 什么是可扩展的应用程序?1 2. 松耦合(ioc)2 3. 接口的思考 2 4. 单一用途&模块化,小粒度化2 ...

  8. 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  9. jetbrick,新一代 Java 模板引擎,具有高性能和高扩展性

    新一代 Java 模板引擎,具有高性能和高扩展性. <!-- Jetbrick Template Engineer --> <dependency> <groupId&g ...

随机推荐

  1. [插件]jQuery multiselect初始化及默认值修改

    下载地址:http://pan.baidu.com/s/1dE2daSD 1.Jquery多选下拉列表插件jquery multiselect功能介绍及使用 http://www.jb51.net/a ...

  2. Python 与 C# lambda表达式比较

    Python里到lambda表达式非常简约, lam =lambda a: a*2 --> lam(3) 6 在某些情况下确实挺好用到.但是相比C#到lambda表达式,还是不够强大(我不是在黑 ...

  3. Javascript事件冒泡机制

    1. 事件 在浏览器客户端应用平台,基本生都是以事件驱动的,即某个事件发生,然后做出相应的动作. 浏览器的事件表示的是某些事情发生的信号.事件的阐述不是本文的重点,尚未了解的朋友,可以访问W3scho ...

  4. Could not link against boost_system 解决办法

    Could not link against boost_system 解决办法: 先安装 libboost-all-dev ./configure --with-incompatible-bdb - ...

  5. 初识SQL Server Integration Service

    SSIS(SQL Server Integration Service)是Microsoft 从SQL Server2005 以后发布的,现在一直跟随每个SQL server版本.它是Microsof ...

  6. apt-get常见错误——Unmet dependencies

    转自:http://blog.sina.com.cn/s/blog_4980828b0100zicn.html 安装错误:“E: Unmet dependencies.”原因:非正常停止apt-get ...

  7. 顺序表C语言版

    #include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...

  8. Win7下用IIS发布网站

    安装IIS控制面板->程序->程序和功能, 点击左侧的“打开或关闭Windows功能”把这几项都勾上吧,虽然有些不是必须的,多勾无碍. 进入IIS管理器控制面板-> 系统和安全-&g ...

  9. ML 07、机器学习中的距离度量

    机器学习算法 原理.实现与实践 —— 距离的度量 声明:本篇文章内容大部分转载于July于CSDN的文章:从K近邻算法.距离度量谈到KD树.SIFT+BBF算法,对内容格式与公式进行了重新整理.同时, ...

  10. POJ 1625 Censored!(AC自动机+DP+高精度)

    Censored! Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 6956   Accepted: 1887 Descrip ...