Lost RAMが可能な理由


最近、Lost RAMのメモリ使用量が1296701 Kに達し、Free RAMでは157924 Kで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で使われている部分.統計方法の違い:filecache、DSSなど、使用したmemoryを複数回計算する.一般的なLost RAMが負数であることがその理由です.
未完、続きます...