Lost RAM可能的原因

最近遇到一个Lost RAM占用内存达到1,296,701K,Free RAM只有157,924K 出现lowmom问题:

  MemInfo:    43,292K slab,   114,292K shmem,    65,292K vm alloc,    12,324K page tables     5,568K kernel stack
               1,572K buffers,   269,472K cached,   188,532K mapped,    75,412K free
  ZRAM:         4K RAM,   520,908K swap total,   520,908K swap free
  Free RAM:   157,924K
  Used RAM:   591,439K
  Lost RAM: 1,296,701K

可以看到,出现lowmom问题是,Used RAM并不高,和正常的相差无几。

发现问题出现时,Lost RAM异常的大。

查阅相关资料,发现Lost RAM可能来自下面几个方面:
ION:我们知道很多多媒体的应用使用ION来分配memory的.大多数芯片供应商是没有把这部分Memory map到process中,也就没有统计在cached中.而ION为了分配效率会把这部分用过的memory先cached以便下次使用的时候直接从cache中分配,从而加快了分配速度,提高了系统性能.而当系统的memory吃紧时,这部分cached memory会free.这往往是Lost RAM的主要来源。MTK上就有类似问题导致Lost RAM越来越大的问题,最后都是通过patch解决的。
KGSL:Graphic系统分配的内存.这边分内存可能已经map到了process中,也有可能没有map到process中,取决于芯片厂商的实现.如果没有map到process ,这也是Lost RAM的重要来源。
ZRAM:ZRAM中被用掉的部分。
统计方法差异:多次计算用过的memory,例如filecache ,DSS等.常见的Lost RAM为负数就是这个原因。

未完,待续。。。


 

你可能感兴趣的:(知识扩展,android)