HUAWEI CLOUD EULEROS-内核异常事件分析指南:global OOM
global OOM
Linux的OOM killer特性是一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择结束一些进程释放掉一些内存。
- 原理
通常oom_killer的触发流程是:内核为某个进程分配内存,当发现当前物理内存不够时,触发OOM。OOM killer遍历当前所有进程,根据进程的内存使用情况进行打分,然后从中选择一个分数最高的进程,终止进程释放内存。
OOM killer的处理主要集中在mm/oom_kill.c,核心函数为out_of_memory,函数处理流程为:
- 通知系统中注册了oom_notify_list的模块释放一些内存,如果从这些模块中释放出了一些内存,直接结束oom killer流程;如果回收失败,进入下一步。
- 触发oom killer通常是由当前进程进行内存分配所引起。如果当前进程已经挂起了一个SIG_KILL信号或者正在退出,直接选中当前进程,终止进程释放内存;否则进入下一步。
- 检查panic_on_oom系统管理员的设置,决定OOM时是进行oom killer还是panic。如果选择panic,则系统崩溃并重启;如果选择oom killer,进入下一步。
- 进入oom killer,检查系统设置,系统管理员可设置终止当前尝试分配内存、引起OOM的进程或其它进程。如果选择终止当前进程,oom killer结束;否则进入下一步。
- 调用select_bad_process选中合适进程,然后调用oom_kill_process终止选中的进程。如果select_bad_process没有选出任何进程,内核进入panic。
- 触发方法
- 监控告警_云容器引擎
- 云数据库RDS for MySQL版本升级_MySQL版本_升级数据库版本
- 华为云云监测服务_华为云云服务器监测_什么是云监测
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- 什么是应用运维管理_AOM是什么_基本功能_优势
- GA全球加速有什么功能_GA全球加速如何计费_GA全球加速使用场景
- 使用容器镜像部署函数_函数部署_函数工作流 FunctionGraph-华为云
- 华为CCI怎么用_华为云CCI如何使用_云容器实例使用
- 云数据库 RDS for MySQL版本升级_MySQL如何进行版本升级_华为云
- 数据库安全服务介绍_数据库安全服务功能特性_数据库安全服务产品优势