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 内存管理机制