源码基于:Linux5.4
0. 前言
在buddy系统慢速分配一文中,我们分析了从快速分配流程无法分配到内存之后,会进入慢速分配流程。通过多种方式尝试内存分配:
通过降低水位等方式修改 alloc_flags,尝试唤醒kswapd,并尝试再次分配;修改ac 的nodemask,并再次尝试分配;直接内存回收之后的尝试分配;直接内存规整之后的尝试分配;reclaim retry、compact retry 之后的尝试分配;
如果经过这些努力之后还是无法分配到内存时,内核采取最后的极端分配:OOM
本文将详细剖析内核的OOM 机制,以及此机制在的分配申请过程。