memory-courses

硬件原理和分页管理

  • CPU寻址内存,虚拟地址、物理地址
  • MMU以及RWX权限、kernel和user模式权限
  • 内存的zone: DMA、Normal和HIGHMEM
  • Linux内存管理Buddy算法
  • 连续内存分配器(CMA)

内存的动态申请和释放

  • slab、kmalloc/kfree、/proc/slabinfo和slabtop
  • 用户空间malloc/free与内核之间的关系
  • mallopt
  • vmalloc
  • 内存耗尽(OOM)、oom_score和oom_adj
  • Android进程生命周期与OOM

进程的内存消耗和泄漏

  • 进程的VMA。
  • 进程内存消耗的4个概念:vss、rss、pss和uss
  • page fault的几种可能性,major和minor
  • 应用内存泄漏的界定方法
  • 应用内存泄漏的检测方法:valgrind和addresssanitizer

内存与I/O的交换

  • page cache
  • free命令的详细解释
  • read、write和mmap
  • file-backed的页面和匿名页
  • swap以及zRAM
  • 页面回收和LRU

其他工程问题以及调优

  • DMA和cache一致性
  • 内存的cgroup
  • 性能方面的调优:page in/out, swapin/out
  • Dirty ratio的一些设置
  • swappiness