- 什么是OOM Killer
- OOM Killer是linux自带的一个程序。它的作用是在系统内存不足的时候启动,杀掉一些进程来保证系统继续运行。
- 为什么需要OOM Killer
- 这里就需要介绍一个Linux里非常重要的概念了,overcommit。什么是overcommit呢?在Linux系统中,如果一个进程需要申请新的可用的内存,这个进程就会向操作系统提出申请(malloc之类的)。此时不同操作系统会有不同的策略来应对这样的内存申请。在默认情况下,Linux遵循的原则是:只要申请不是明显的夸张,即使系统现在有没有那么多可以使用的内存,也会同意进程的内存申请。这样做是为了让系统的内存使用更加高效。来举个🌰,比如我向用一个1000个int的数组,我要先向系统申请能容纳1000个int的内存空间,但是我这个数组并不会马上使用,如果系统给我分配了我需要的所有内存空间,那就势必导致这段内存会空置一段时间。这样我们的内存使用就不是很高效。为了解决这个问题,系统就会分配比自己拥有内存更多的内存给进程们,当进程真正access这些内存的时候,才会去物理内存中申请空页。这时候另外一个问题就来了,如果本来系统只有4G内存,但是分配了20G给所有的进程,那么,如果当这些进程同时access他们的内存的时候,4G就有可能不够用了,这个时候,OOM Killer就会启动来杀掉一些进程来保证系统的正常运行
- overcommit有什么参数可以调优吗?
- 当然有。在现代的Linux系统中,有3个模式。这三个模式都可以在/proc/sys/vm/overcommit_memory中进行设置
Linux内存管理之OOM Killer
于 2021-02-04 02:30:58 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)