前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenHarmony构建新的内存管理优化方案

OpenHarmony构建新的内存管理优化方案

原创
作者头像
小帅聊鸿蒙
发布2024-07-24 21:01:21
1090
发布2024-07-24 21:01:21
举报
文章被收录于专栏:鸿蒙开发笔记

OpenHarmony是面向全场景泛终端设备的操作系统,终端设备内存性能的强弱会直接影响用户的体验。终端设备的内存差异很大,对于内存比较小的终端设备,内存优化方案无疑是增强内存性能、提升用户体验的关键。针对传统内存方案及管理机制的不足,OpenHarmony构建了一套完善的内存解决方案——ESWAP。

1. 传统内存方案及管理机制

在传统的Linux内存优化方案中,终端设备通常采用SWAP及ZRAM内存方案。

1.1 SWAP

SWAP即内存交换技术或虚拟内存技术,如图1所示,在系统的物理内存不足时,把内存中的一部分不常用的内存空间释放出来,以增大系统可用内存供当前运行的程序使用。这些被释放的数据被临时保存到SWAP分区中,等到需要使用时,再从SWAP分区中恢复到内存中。

从图1中不难看出,SWAP内存交换技术增大了设备内用内存,但是,SWAP内存换入/换出时会遭遇IO性能瓶颈,严重时甚至会影响用户的使用体验,并且flash存储器件的频繁读写也会缩减其寿命。

1.2 ZRAM

ZRAM即内存压缩技术,如图2所示,在系统的物理内存不足时,将系统物理内存的一部分划分出来作为ZRAM分区,然后把不常用的匿名页压缩后放到ZRAM分区里,相当于牺牲了一些CPU效率,以增大系统可用内存供当前运行的程序使用。等到需要使用时,再从ZRAM分区中将数据解压出来。

图2 ZRAM内存压缩技术

虽然ZRAM在一定程度上增大了设备内用内存,但是如果没有合适的方式来对内存进行管理,负面影响也会非常明显,将会造成内存页频繁的压缩/解压缩,从而抢占正常业务的CPU时间,增加系统的功耗。并且,如果压缩/解压速度不够快的话,会直接影响用户的使用体验。

1.3 内存管理机制

除了内存方案不足,传统的内存分配及管理方式,无法感知业务特性及数据的重要性。如果终端设备多个进程或业务共用一块内存,当内存负载越来越重,进行内存数据回收时,会频繁出现数据搬移,以及内存震荡的现象。这些现象会加重内核管理内存的开销,并导致系统CPU负载长期处于高负载的状态,从而增加系统功耗。

2. OpenHarmony内存解决方案

针对原有内存方案的不足,OpenHarmony构建了一套完善的内存解决方案ESWAP,打通了上层系统到内核的调用栈,让内核能在上层配置的指导下,对每一块内存数据进行合理的管理。

下面我们将为大家介绍ESWAP解决方案以及其关键技术的解析。

2.1 ESWAP方案介绍

ESWAP(Enhanced SWAP)是OpenHarmony针对内存优化问题提供的一套完善的内存解决方案,结合内存压缩和内存交换技术,定制了一套合理高效的调度管理策略,使压缩和交换两者的工作能够高效且平衡。ESWAP基于关联性的数据聚合技术及上层指导策略,将内存划分为不同的分组进行管理,通过回收优先级来区分不同分组下内存的活跃程度,优先压缩、换出较不活跃的内存数据,以提升数据交换性能,减少寿命冲击。

ESWAP解决方案的整体框架如图3所示:

图3 ESWAP解决方案

ESWAP解决方案在全局资源调度子系统中增加了一个系统资源调度模块,通过向账户子系统订阅本地账户的变化来感知当前的账户状态和内存状态,然后根据账户状态给各个账户设置不同的回收优先级、设置目标可用内存量、设置压缩和换出的比例等参数,并将这些参数下发给ZSWAPD。ZSWAPD会依据回收优先级判断回收的先后顺序;依据目标可用内存量和当前可用内存量的差值决定回收的量;依据压缩和换出的比例来决定压缩和换出的量,从而实现在达成内存扩展效果前提下的性能和功耗平衡。

2.2 关键技术解析

ESWAP内存解决方案都用到了哪些关键技术呢?下面为你一一道来。

2.2.1 定制的ZRAM和交换分区

ESWAP结合内存压缩和内存交换技术,提供了自定义新增存储分区作为内存交换分区的能力,并在内核中创建了一个常驻进程ZSWAPD,用于将ZRAM压缩后的匿名页加密换出到ESWAP存储分区中,从而能完全地空出一块可用内存,以此来达到维持Memavailable水线的目标,如图4所示。

图4 ESWAP技术

同时,ESWAP模块还可以记录每个匿名页的冷热特征信息,并将这些数据通过关联性、冷热顺序进行相应的存放,使ESWAP交换区中连续存放的匿名页具有时间和空间局部性。因此在匿名页换入时,可以将交换区中的相邻匿名页一并读入ZRAM,以此来保证数据的存取速度,提升IO性能。

2.2.2 动态的内存回收机制

OpenHarmony提供了一种额外的内存回收机制ZSWAPD,并创建了“buffer”来作为衡量当前系统内存能力的指标。buffer指的是当前系统能提供的最大可用内存。ZSWAPD会根据buffer量以及上文所述的各种策略,来对匿名页进行压缩换出以回收。同时,ZSWAPD还能根据内存冷热分离的合理性以及内存回收状态, 动态地控制ZRAM和ESWAP之间的平衡,从而获得更高的能效比。

2.2.3 灵活的内存回收策略

OpenHarmony基于Memcg分组进行了回收策略的增强,使用回收优先级来指导ZSWAPD回收的先后顺序。回收策略将既定的buffer相关配置下发给ZSWAPD,来指导其回收适当数量的内存。此外,由于匿名页可能存储在RAM、ZRAM、ESWAP三个模块中, 上层可以根据需要,通过灵活地配置交换策略,控制这三个模块中存储的比例,避免频繁换入换出带来的负面影响。

至此,ESWAP的三项关键技术就介绍完了,我们来总结一下:

● 定制的ZRAM和交换分区:将数据通过关联性、冷热顺序进行存放,保证了数据的存取速度,提升了IO性能。

● 动态的内存回收机制:从回收优先级、可用内存量、压缩和交换比例三个维度动态地控制数据回收,从而获得更高的能效比。

● 灵活的内存回收策略:灵活地控制RAM、ZRAM、ESWAP三个模块数据存储的比例,保证了各个模块的平衡。

2.3 ESWAP相关接口

ESWAP解决方案支持系统开发者定制自己的回收策略,并在/dev/memcg下提供了仅对上层回收策略可见的接口。系统开发者可以通过这些接口来定制自己的上层策略,具体接口如下所示:

以上就是本文全部内容,ESWAP解决方案仍在不断建设中,期待广大开发者加入我们,共同见证全场景智能时代的无限可能!

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 传统内存方案及管理机制
  • 2. OpenHarmony内存解决方案
    • 写在最后
    相关产品与服务
    数据保险箱
    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档