Create Low Memory Killer.md

master
Omooo 5 years ago
parent c83269b9d2
commit dbcbbc6bed
  1. 21
      blogs/Android/Framework/深入理解 Android 内核设计思想/Low Memory Killer.md

@ -0,0 +1,21 @@
---
Low Memory Killer 机制
---
#### 引言
熟悉 Linux 的开发人员应该知道,底层内核有自己的内存监控机制,即 OOMKiller。一旦发现系统的可用内存达到临界值,这个 OOM 的管理者就会自动跳出来 “收拾残局”。根据策略的不同,OOM 的处理手段略有差异,不过它的核心思想始终是:
按照优先级顺序,从低到高逐步杀掉进程,回收内存。
优先级的设定策略一方面要考虑对系统的损害程度,另一方面也希望尽可能的多释放无用内存。根据经验,一个合理的策略至少要综合以下几个因素:
1. 进程消耗的内存
2. 进程占用的 CPU 时间
3. Oom_adj(OOM 权重)
#### OOM Killer
我们先来了解下 Linux Kernel 中的 OOM Killer。内核所管理的进程都有一个衡量其 oom 权重的值,存储在 /proc/\<PID>/oom_adj 中。根据这一权重值以及上面所提及的若干其他因素,系统会实时给每个进程评分,以决定 OOM 时应该杀死哪些进程。比如 oom_score 分数越低的进程,被杀死的概率越小,或者说被杀死的时间越晚。
这个值存储在 /proc/\<PID>/oom_score 中。
Loading…
Cancel
Save