File Based Optimizations(FBO,FBO焕新存储技术)介绍

背景

简介

  • File Based Optimizations,简称FBO,大概翻译为"基于文件的优化"。

  • 7月份的时候,看到小米公司发出的宣传文章,一种自研的"FBO焕新存储技术",并且加入了UFS规范。
    在这里插入图片描述

  • 看小米公司相关文章的介绍,这个技术主要应用在那些使用较久的设备上,让存储设备的读取性能恢复到类似于全新手机的性能。
    在这里插入图片描述

  • 8月份JEDEC正式发布这个名为"File Based Optimizations"的扩展特性。本文主要是介绍这个FBO标准的内容。

卡顿的原因

  • 设备使用长时间后,用户会明显感觉到卡顿的性能下降导致。比如我几年前买的某国产手机,使用一年后,软件的响应速度奇慢无比,所以我每隔1个月就恢复出厂设置一次,后来确实受不了就换了手机。
  • 导致这个问题的原因有很多,和存储器件关系比较大。比如长时间使用,存储器件容量剩余空间不多了,各种app的频繁写入,导致存储器件中存储介质碎片化严重,每次写入新数据需要触发数据搬移,从而导致写入性能下降。此外,还可能导致存储器件中数据物理存放的关联性下降,表现为一段连续的逻辑区间,却分布在NAND Flash不同的位置上,使得读取时无法利用最优的并发效果,导致读性能下降,FBO针对的是这种情况。

FBO实现

原理

  • 主要实现方式是上位机通过解析文件系统,把关键的的文件的逻辑区间(比如影响系统性能的只读文件)告知存储器件,存储器件去分析这个逻辑区间的存储结构,并且通过调整存储结构为较优的方式,从而提高读性能,从而达到“焕新”的效果。

流程介绍

分析结束
分析进行中
优化结束
优化中
上位机获取存储设备的FBO相关信息
上位机分析和决定需要优化的文件
上位机向存储器件发起分析请求
上位机获取分析结果
上位机决定优化等级
上位机发起优化指令
End
  • 上位机发送分析请求和优化请求,针对的是逻辑区间
  • 存储器件对指定的逻辑区间进行分析,看数据的分布对性能影响有多少,通过“Regression Level”告知上位机情况。
  • 上位机根据自身需要,设定优化等级,让存储器件对低于阈值的逻辑区间进行优化。

Regression Level

  • 协议定义了"Regression Level",用于描述分析性能下降的程度。
  • 这个值的设定方法根据存储器件固件自行去判定。
  • 这个值分为11个等级,定义如下
• 0x00 –no Regression 
• 0x01 – 1%-10% Regression Level 
• 0x02 – 11%-20% Regression Level 
• … 
• 0x0A – 91%-100% Regression Level 
• Other values: reserved

优化实现方式

  • 根据不同的固件实现方式有关系,比如把相关逻辑数据搬移可以并发的位置,具体看存储器件的实现。

后话

  • 本质还是主要通过存储固件对数据进行搬移,达到读性能提升。所以会造成存储介质NAND Flash的磨损。
  • 不过问题不大,毕竟不需要频繁触发,且触发优化的逻辑区间需要合理。
  • 整理后,由于数据存储的逻辑相关性更好了,所以对后续的使用可能也更好了。
  • 上位机和存储器件的交互很重要,比存储器件固件自行识别处理效率高多了,后续大有所为。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Cesium实现层次化的LOD技术,你可以按照以下步骤进行操作: 1. 准备数据:首先,准备好不同层次的数据。这些数据应该是按照不同的细节级别划分的,从粗糙到精细。可以使用专业的工具或库,如Cesium Ion或3D Tiles Tools等,将数据转换为3D Tiles格式。 2. 创建3D Tiles数据集:使用Cesium提供的工具或API,创建一个3D Tiles数据集。你可以使用Cesium Ion提供的在线服务来创建和托管3D Tiles数据集,也可以使用CesiumJS提供的工具来生成数据集。 3. 配置LOD策略:为每个层次的数据定义相应的LOD策略。Cesium提供了`Cesium3DTileset`类来加载和显示3D Tiles数据集。你可以使用`maximumScreenSpaceError`属性来定义每个层次的细节级别。较高的值表示较粗糙的细节级别,较低的值表示较精细的细节级别。 4. 动态加载:根据相机视角和距离,动态加载和卸载合适层次的数据。在Cesium中,你可以监听相机的变化事件,并根据相机位置和距离来判断当前需要加载哪些层次的数据。使用`Cesium3DTileset`的`show`属性可以控制数据的显示和隐藏。 5. 优化渲染性能:为了提高渲染性能,你可以使用Cesium提供的一些优化技术。例如,使用`Cesium3DTileset`的`maximumMemoryUsage`属性来限制内存使用量,使用`Cesium3DTileset`的`optimizations`属性来启用数据加载和渲染的优化选项。 6. 用户交互:为用户提供一些交互功能,例如平移、缩放、旋转等操作。在用户交互过程中,根据相机的变化,动态加载和卸载合适层次的数据,以提供更好的用户体验。 请注意,Cesium提供了强大的功能和API来处理层次化的LOD技术,但具体的实现方式可能会因你的应用需求而有所不同。你可以参考Cesium的官方文档、示例代码和论坛社区来获取更详细的指导和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值