下面开始介绍与OOM Killer相关的proc文件系统。

/proc//oom_adj

为/proc//oom_adj设置值就可以调整得分。调整值的范围为–16~15。正的值容易被OOM Killer选定。负值可能性较低。例如,当指定3时,得分就变为23倍;当指定–5时,得分就变为1/25。

“–17”是一个特殊的值。如果设置为–17,就会禁止OOM Killer发出的信号(从Linux 2.6.12开始支持设置–17)。

在OOM Killer运行的情况下,为了实现远程登录而想要将sshd排除在对象外时,可以执行下列命令。

# cat /proc/'cat /var/run/sshd.pid'/oom_score

15

# echo -17 >  /proc/'cat /var/run/sshd.pid'/oom_adj

# tail /proc/'cat /var/run/sshd.pid'/oom_*

==> /proc/2278/oom_adj <==

-17

==> /proc/2278/oom_score <==

0                               /*得分变成0*/

从Linux 2.6.18开始可以使用/proc//oom_adj。内容记载在Documentation /filesystems/proc.txt中。

/proc/sys/vm/panic_on_oom

将/proc/sys/vm/panic_on_oom设置为1时,在OOM Killer运行时可以不发送进程信号,而是使内核产生重大故障。

# echo 1 > /proc/sys/vm/panic_on_oom

/proc/sys/vm/oom_kill_allocating_task

从Linux 2.6.24开始proc文件系统就有oom_kill_allocating_task。如果对此设置除0以外的值,则促使OOM Killer运行的进程自身将接收信号。此处省略对所有进程的得分计算过程。

# echo 1 > /proc/sys/vm/oom_kill_allocating_task

这样就不需要参照所有进程,但是也不会考虑进程的优先级和root权限等,只发送信号。

/proc/sys/vm/oom_dump_tasks

从Linux 2.6.25开始,将oom_dump_tasks设置为除0以外的值时,在OOM Killer运行时的输出中会增加进程的列表信息。

下面为设置示例。

# echo 1 > /proc/sys/vm/oom_dump_tasks

列表信息显示如下,可以使用dmesg或syslog来确认。

[ pid ]   uid  tgid total_vm      rss cpu oom_adj name

[    1]     0     1     2580        1   0       0 init

[  500]     0   500     3231        0   1     -17 udevd

[ 2736]     0  2736     1470        1   0       0 syslogd

[ 2741]     0  2741      944        0   0       0 klogd

[ 2765]    81  2765     5307        0   0       0 dbus-daemon

[ 2861]     0  2861      944        0   0       0 acpid

...

[ 3320]     0  3320   525842   241215   1       0 stress

/proc//oom_score_adj

从Linux 2.6.36开始都安装了/proc//oom_score_adj,此后将替换为/proc/ /oom_adj。详细内容请参考Documentation/feature-removal-schedules.txt。即使当前是对/proc//oom_adj进行的设置,在内核内部进行变换后的值也是针对/proc//oom_score_adj设置的。

/proc//oom_score_adj可以设置–1000~1000之间的值。设置为–1000时,该进程就被排除在OOM Killer强制终止的对象外。

在内核2.6.36以后的版本中写入oom_adj,只会输出一次如下的信息。

# dmesg

.....

udevd (60): /proc/60/oom_adj is deprecated, please use /proc/60/oom_score_adj instead.

android的oomkiller_[Android Memory] Linux下malloc函数和OOM Killer相关推荐

  1. linux下syscall函数,SYS_gettid,SYS_tgkill

    出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html linux下syscall函数,SYS_gettid,SYS_tgkill 2014 ...

  2. linux下system函数的深入理解

    这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

  3. Linux下curses函数库的详细介绍

    Linux下curses函数库的详细介绍 curses库介绍 安装 curses库函数介绍 初始化和重置函数 管理屏幕的函数 输出到屏幕 从屏幕读取 清除屏幕 移动光标 字符属性 管理键盘的函数 键盘 ...

  4. linux下readlink函数详解

    linux下readlink函数详解 相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:int  readlink(con ...

  5. linux 纪元时间转换,[转]Linux下时间函数time gettimeofday

    Linux下时间函数time & gettimeofday UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒.Epoch是指定为1970年1月1日凌晨零点零分零秒 ...

  6. Linux下connect函数 阻塞 与 非阻塞 问题

    一.概述 linux系统下,connect函数是阻塞的,阻塞时间的长度与系统相关.而如果把套接字设置成非阻塞,调用connect函数时会报错Operation now in progress,且err ...

  7. Linux下select函数实现的聊天服务器

    转载: http://blog.csdn.net/microtong/article/details/4989902 Linux下select函数实现的聊天服务器  佟强 http://blog.cs ...

  8. LINUX下poll函数用法

    LINUX下poll函数用法 文章目录 LINUX下poll函数用法 一.函数介绍 二.使用 1. 一.函数介绍 int poll(struct pollfd *fds, nfds_t nfds, i ...

  9. linux 函数返回string,linux 下c函数strcmp的返回值疑问?

    linux 下c函数strcmp的返回值疑问? strcmp函数解释: NAME strcmp, strncmp - compare two strings SYNOPSIS #include int ...

最新文章

  1. 信息系统项目管理师论文范文-干系人管理
  2. 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
  3. 服务器 不支持gbk,解决JS请求服务器gbk文件乱码的问题
  4. 【报告分享】2021中国消费者报告-麦肯锡.pdf(附下载链接)
  5. Oracle 写存储过程的一个模板还有一些基本的知识点
  6. MySQL------存储过程的使用
  7. pku 3592 Instantaneous Transference tarjan缩点重建图+spfa求最长路
  8. UDS协议(车辆控制单元诊断系统开发架构及DID读取数据流程)
  9. Crackme 21
  10. C语言定义结构体的几种方法
  11. 上海公积金提取办法(外地购房,公积金在上海)
  12. 愚见《Nighttime Visibility Enhancement by Increasing the Dynamic Range andSuppression of Light Effects》
  13. 免费WiFi等你来上钩
  14. ROS2 Humble测试版功能包列表
  15. 成为Java GC专家系列(三) ——如何优化Java垃圾回收
  16. 关于IAP支付,谷歌和苹果订阅商品——最白话,手把手教你做系列。
  17. 【React】React 详细教程
  18. 机器人瓦力有什么西方的风格_机器人瓦力观后感 英文
  19. dos命令行-禁用和启用本地连接
  20. java中的artifact啥意思_maven中的groupId和artifactId到底指的是什么

热门文章

  1. 正则表达式之全部符号解释
  2. Fragmen的onAttach方法
  3. linux 软连接【转】
  4. 微信小程序组件 自定义单选
  5. 使用RouteDebugger对MVC路由进行调试
  6. ajax用get刷新页面元素在IE下无效解决~~
  7. 02~ 一步一步教你使用 SVN之SVN 的介绍
  8. 移动端html头部meta标签的含义
  9. hdu 1856 并查集——ac的不一定正确
  10. Microsoft Excel 不能访问文件