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 </

猜你喜欢

转载自blog.csdn.net/huangyabin001/article/details/126815057