Linux内存从0到1学习笔记(9.10 内存优化调试之panic_on_oom介绍

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(9.10 内存优化调试之panic_on_oom介绍相关的知识,希望对你有一定的参考价值。

通过配置/proc/sys/vm/panic_on_oom文件节点可以使能或禁用out-of-memory的panic。接下来我分享下在对该节点功能及代码架构的学习笔记;

一,简介

文件节点路径:/proc/sys/vm/panic_on_oom
相关变量:vm.panic_on_oom

该节点有三个值,分别是0,1,2;0为默认值。

  • 0(默认值),表示当发生oom时,内核会调用oom_killer查杀一部分进程。通常情况下,oom_killer通过杀掉失控进程以确保系统稳定运行;
  • 1,表示当oom发生时,内核会发生panic。但是,如果某个进程通过 mempolicy/cpusets 限制使用节点,并且这些节点成为内存耗尽状态,则可能会被 oom-killer 杀死一个进程。在这种情况下不会发生panic。因为其他节点的内存可能是空闲的。也就是说系统总状态可能还不是致命的。
  • 2,表示,当有oom发生时触发内核panic,即便是oom发生在memory cgroup控制策略中,也会触发系统panic。

二,代码示例

2.1 out_of_memory()

linux_mainline-5.17.0/mm/page_alloc.c
__alloc_pages() --> __alloc_pages_slowpath() --> __alloc_pages_may_oom() --> out_of_memory()

linux_mainline-5.17.0/mm/oom_kill.c </

以上是关于Linux内存从0到1学习笔记(9.10 内存优化调试之panic_on_oom介绍的主要内容,如果未能解决你的问题,请参考以下文章

Linux内存从0到1学习笔记(九,内存优化调试之三 - 内存拆解)--- 持续更新

Linux内存从0到1学习笔记(九,内存优化调试之一 - kswapd0)

Linux内存从0到1学习笔记(九,内存优化调试之三 - 使用page owner调试内存黑洞)

Linux内存从0到1学习笔记(9.6,内存优化调试之page_owner拆解)

Linux内存从0到1学习笔记(9.5,内存优化调试之记录pid到page_owner)

Linux内存从0到1学习笔记(9.7 内存优化调试之page_owner内存分配堆栈详解)---更新中