Android,zram( 三 )


其实内存融合技术并不是什么特别新的技术,其底层的技术就是从Linux系统中已有的技术的改良版,这个技术就一直存在,也就是在开发行业很多人都知道的swap以及zram这两大技术,但是这两大技术一直存在很大的弊端 。其中SWAP技术和我们在Windows平台上所见到的虚拟内存技术是比较类似的,简单来说就是在系统检测到物理内存不足的时候把一部分闪存空间(也就是硬盘储存空间)划拨出来归内存所用,从而让系统中的服务不至于直接挂掉或者不响应 。
但是,这个技术的核心问题就在于,当系统察觉到内存不足的时候,本身就已经启动了内存回收的机制,而这就是造成卡顿的根源所在 。再加上当年闪存速度的制约,SWAP技术在安卓系统上一直都没有什么好的发挥 。而zram技术,则是一种压缩技术 。举个例子,假设支撑WX的进程需要500M的运存空间,而采用了ZRAM技术之后,在该应用打开的时候,CPU就会对进程进行一个初步的压缩,把他从500M压缩到300M,从而降低对于物理运存空间的占用 。
但是这个技术也是有弊端的 。就是会占用CPU的算力资源,而且相当于是在在打开应用的同时,给CPU多增加了一道压缩的工作,这对于整机的流畅性自然是有相当大的影响的(安卓系统的执行效率)综上所述,虽然swap以及zram诞生很久,但是由于存在种种弊端,一直都没有得到什么重用,而swap本身就是针对一些低端手机而生的产物 。
然而随着时间的推移,技术的进步以及硬件性能提升的,这两个技术才迎来了自己的春天 。首先是闪存性能的飞速提升,从emmc逐步升级到了目前最新的UFS3.1,闪存的顺序读写以及随机读写性能提升幅度巨大,这就给swap技术奠定了良好的硬件基础,因为虚拟内存技术的性能瓶颈就来自于闪存的读写性能 。但是大家也请注意,这并不意味着所有搭载安卓系统 UFS3.1系统的手机在开启swap技术之后都能拥有一个稳定的,流畅的体验 。
原因也很简单,因为原生的swap技术并不智能,他只会根据系统检测的情况,在内存不足的时候简单粗暴的把一些进程丢在闪存空间中,如果这个进程恰巧是用户正在使用的某一个应有进程,那么就会出现应用卡死,卡顿的问题,影响体验 。而且SWAP技术只会在系统认为内存不足的情况下才会介入,这个时候其实就已经出现了性能瓶颈,并不能直接避免系统卡顿的问题 。
所以,对于手机厂商来说,如何能够让swap技术“活起来,智能起来”才是关键,而在这方面其实才区分出手机厂商之间的技术差别,大家可以去看一下在VIVO Origin OS的第一次发布会上对于内存融合技术的描述,有两个很重要的指标——“智能分配,提前介入” 。什么意思,简单来说经过改练后的内存融合技术会根据用户的使用习惯,软件本身的特性来智能的判断哪个进程可以被放入到由闪存划拨空间中,而不会影响用户的体验,这就需要手机厂商的系统研发部门依照自己的用户行为数据以及和应用厂商的沟通结果来进行判断 。
这可是一个大工程,需要下大功夫的,可没有大家想象的那么简单 。而提前介入就是指,内存融合技术会主动的,提前介入到用户的行为模式中去,而不是等到了内存不足的时候再去介入,从而在一定程度上避免了由于内存不足所带来的流畅度下滑的风险 。这个同样需要手机厂商进行开发 。至于zram技术,同样也得到了比较长足的优化,譬如在VIVO最新的开发者大会上所说的那样,它可以通过内存融合技术将原生系统对于运存的占用降低800M,这就是一个典型的技术应用,经过优化的zram技术,可以更好地和NPU进行配合,从而减轻CPU的负担,让他为系统流畅服务的同时规避一些弊端 。

推荐阅读