“智能终端产品的灵魂是它所依赖的软件平台以及与之相匹配的服务和生态”华为讲师方卫庆在安卓绿色联盟开发者大会中讲到。

华为如何打造智能终端的有趣灵魂系列分为(上)(下)两个篇章,本篇将对华为天生快·一生快技术产生的背景和一系列技术组合拳的打法进行详细解读。

每⼀次体验提升都是复杂系统⼯程

端侧的用户体验是一项非常复杂的系统性功能整合。上图右侧是安卓原生系统架构示意图,左侧是EMUI架构图,每一次系统侧的改进都是从底层贯穿到上层的全面提升,具体架构从下往上包括:

芯片层,由CPU、GPU、DSP、NPU、基带、传感器、多媒体器件等组成;

内核层包括驱动层、硬件抽象层。其中硬件抽象层又包括进程管理、内存管理、文件系统、网络管理等组件;

中间件主要包括大量的C和C++库,以及Java虚拟机;

再往上是跟开发者息息相关的框架层,这一层提供了大量的基础核心功能,并为上层应用提供API接口;

最上层是应用层,包括安卓的原生应用、EMUI应用、开发者第三方应用。

天生快·一生快

1.安卓系统卡顿的原因:

①安卓系统管理松散

应用缺少约束,应用质量参差不齐。

②系统资源不足

应用没有优先级,应用链加剧资源消耗。

③存储空间碎片化

经常保存、删除文件,导致存储空间碎片化,存取文件速度下降。

④数据日益庞大

图片、联系人等数据量越来越大,数据库查询、搜索速度缓慢。

2.一系列技术的组合

针对四个主要问题,通过一系列的技术组合拳,达成天生快·一生快解决方案。

F2FS新型文件系统

F2FS是为闪存设计的文件系统,相比原有的EXT4文件系统,F2FS的随机写入优化效率提升60%,磁片碎片化的情况也大大改善。

F2FS的关键技术:

①数据分配管理算法

上图中,数据管理分为两个区域,元数据区域和数据区域。

元数据区域主要写入的是SIT、NAT等,采用的是就地写入的方案。

数据区采用的是异地写入的方案,节点信息和真正的数据信息都被写入数据区域,同时由于在数据区域使用异地写入,所以会引入SSR和LFS多点写入技术。

a.SSR和LFS协同配合技术

传统的SSR异地写入方式随机写入效率比较低,所以引入了新的LFS技术,它把原来的数据块标为“脏”的同时并不需要直接做垃圾回收,而是直接在“脏”的数据块上写数据。之所以不直接全都采用SSR技术是因为大量的使用SSR会造成磁盘碎片的密集。

所以这是一个协同技术,在空闲块少的情况下采用SSR技术;空闲块多,大于5%的情况下使用LFS技术,这样可以在寿命和性能之间达成很好的平衡。

b.多点写入技术

数据区采用多点写入的方式,这种方式的优点是将不同类型、不同热度的数据写入不同的段,提高垃圾回收效率。

②引入NAT

此技术的英文全称是Node Address Table,它是一个映射表。

传统的LFS文件系统会带来一个非常有趣的现象——滚雪球效应。首先,一旦改变了任何一个数据,它便会连续不断的递归到树状结果根部,引起间接索引点、直接索引点以及Checkpoint的改变,带来大量资源的浪费,引起后期垃圾回收效率降低。所以引入索引表最大的目的是为了减少这些节点。

建立映射表后,只需更改数据文件、直接节点信息、NAT和CheckPoint就可以完成工作,而不需要占用大量磁盘空间,大大减轻GC的负担。但是这种二级指针的结构会造成一个问题:NAT的寻址比较慢。

所以通过将NAT信息写到原数据区,很大程度上缓解寻址效率底的问题。

③其他关键技术

a.垃圾回收算法

对于F-GC直接使⽤ Greedy回收策略,选出需要回收的段 ;对于B-GC,如果空闲空间少,也会直接使用Greedy回收策略,而如果空闲空间多,则会使用CB策略。

b.异常掉电保护

使用Checkpoint机制来保证文件系统的一致性。F2FS维护了两份检查点:一个是稳定的,⼀个是正在使用。在恢复过程中,使用的是稳定版本。

3.FSTRIM上的优化解决原有设计的不足

FSTRIM是用户态触发的垃圾回收方案。它的触发机制是这样的:凌晨3点以后,设备充电并待机70分钟以上,就会触发垃圾回收的行为。

但有一个问题,比如有些中老年用户喜欢晚上关机充电,有些人喜欢白天充电,可能无法触发FSTRIM,磁盘碎片得不到清理,怎么解决这个问题? EMUI工程师调整了策略,在晚上11点之后,用户充电的同时待机半小时以上,就开始触发FSTRIM。

另外,针对习惯白天充电的用户,设计了另外一条机制:当手机72小时没有进行FSTRIM时,如果用户插上电源,待机半小时便开始FSTRIM。

而且工程师设计了实时可打断的机制,实现方式为:在Framework 层监控用户屏幕事件,一旦有屏幕idle结束,就会触发Stoptrim命令到Vold,然后Vold 发送Signal interrupt信号给trimtask来请求结束Trim,最后在kernel 层确认pending。

更精细的TRIM优化

【F2FS LFS SSR】华为如何打造智能终端的有趣灵魂?(上)相关推荐

  1. 华为如何打造智能终端的有趣灵魂?(上)

    "智能终端产品的灵魂是它所依赖的软件平台以及与之相匹配的服务和生态"华为讲师方卫庆在安卓绿色联盟开发者大会中讲到. 华为如何打造智能终端的有趣灵魂系列分为(上)(下)两个篇章,本篇 ...

  2. 华为如何打造智能终端的有趣灵魂?(下)

    "手机或智能终端产品的灵魂便是它的软件平台以及与之相匹配的服务和生态"华为讲师方卫庆在安卓绿色联盟开发者大会中讲到. 在华为如何打造智能终端的有趣灵魂系列(上)中对华为天生快·一生 ...

  3. 鸿蒙系统的全面开源,华为:打造全球的操作系统,鸿蒙今日全面开源!

    原标题:华为:打造全球的操作系统,鸿蒙今日全面开源! 今日下午,2019华为全球开发者大会在华为松山湖基地正式开幕.华为正式对外推出了自研操作系统--鸿蒙系统(Harmony OS). 华为消费者业务 ...

  4. 金融+科技,民生银行与华为携手打造数字化智能银行

    Fintech(金融科技)与云计算.大数据.人工智能等一样都是数字化转型领域的热词.从字面意思很容易理解,Fintech其实就是Finance(金融)与Technology(科技)的结合体.有人这样定 ...

  5. 华为云打造农业农村大数据解决方案

    数据.算力强支撑,佳格天地联合华为云打造农业农村大数据解决方案 日前,华为云"828 B2B企业节"盛大开启.农业农村大数据应用企业佳格天地联合华为云推出"测亩宝&quo ...

  6. 华为p10 鸿蒙,华为强力打造鸿蒙系统生态!终于走出“试验田”了:成功接入服务...

    [10月28日讯]相信大家都知道,自从华为鸿蒙OS系统2.0正式发布以后,大家最为关注的便是华为HMS(华为移动服务)体系,作为华为鸿蒙OS系统生态的重要构成,此前华为消费者CEO余承东就曾谈到,华为 ...

  7. 云小课 | 华为云KYON:网段零修改上云,简单又好用

    摘要:KYON(Keep Your Own Network)是华为云推出的企业级云网络解决方案,KYON能让用户直接将IDC组网搬到云上,网段零修改,简单又好用. 本文分享自华为云社区<[云小课 ...

  8. 华为云DevCloud为虚拟仿真插上互联网的翅膀

    华为云DevCloud为虚拟仿真插上互联网的翅膀 两三年前,虚拟仿真或者说VR,火得一塌糊涂,火得不真实.又在无人察觉中,平静地落下帷幕,这个行业开始回归本质.原本专业性极强的领域,以游戏为突破口.以 ...

  9. 阿里、百度、华为:中国智能城市马拉松赛道上的三个技术高度

    文|曾响铃 来源|科技向令说(xiangling0815) 喊了多年的智能城市什么时候才能全面来到我们身边?不确定,可能没那么快.但至少,我们可以知道推动力量会有哪些,能跟随它们看着智能城市一步步试点 ...

  10. 华为终端的AI之城(上):千重楼阁九天开

    没有人知道,蝴蝶煽动翅膀,会给整个宇宙带来多少变化. 当艾伦·图灵第一次思考机器是否能具备人之智慧的时候,显然他无法知道自己打开了什么.其实时至今日,所有人类还是无法揣测人工智能的终点. 就在刚刚,华 ...

最新文章

  1. 吉林大学计算机维护与维修,吉林大学汽车维修工程考试知识点.doc
  2. Flask-SQLAlchemy 中多表链接查询(不使用外键)
  3. boost::signals2模块实现多线程信号调用基准的测试程序
  4. https证书pfx 生成 pem,crt,key
  5. 数据包格式_RAW与JPEG格式怎么选??
  6. oracle中nvarchar2字符集不匹配
  7. Leetcode题目:Merge Sorted Array
  8. mysql实现类似oracle中rownum的效果
  9. 中国医院评审/评级标准及区别和特点
  10. 小程序发送公众号模板消息+PHP后台
  11. 用AR.js做图片追踪的webAR Demo
  12. 强烈推荐:20款优秀的数据可视化工具
  13. 【题解】2020年蓝桥杯C/C++程序设计B组·试题 D: REPEAT 程序
  14. 微信分享,登陆支付等接口调用 白屏原因 记录一下
  15. 【MIKE水动力】MIKE11基本原理
  16. vscode提示:“An SSH installation couldn‘t be found”
  17. cms小猪o2o企业付款配置中微信提现配置实现商家转账到零钱(企业付款到零钱)解决:“操作失败!产品权限验证失败,请查看您当前是否具有该产品的权限“的错误提示
  18. 7-221 国王的金币7-222 sdut-C语言实验-N^3问题
  19. 【Python实验】Numpy基础
  20. 什么是同源???跨域错误???如何解决???

热门文章

  1. 11.云计算平台(数据科学概论)
  2. 火狐扩展程序推荐_使用Firefox的RIP扩展程序自定义Web
  3. 频谱仪测试gsm信号测试软件,怎样用频谱分析仪测试和分析GSM信号
  4. NCRE | 四级网络工程师错题
  5. CrystalReports水晶报表开发中遇到的问题
  6. DisplayTag汉化
  7. 完美者常用软件光盘2008
  8. 计算机类毕业设计源码大全
  9. php微信开发视频教程_PHP微信开发视频资源推荐
  10. 基于Python的面部表情识别分析系统