android的oomkiller_[Android Memory] Linux下malloc函数和OOM Killer
下面开始介绍与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相关推荐
- linux下syscall函数,SYS_gettid,SYS_tgkill
出处:http://blog.chinaunix.net/uid-28458801-id-4630215.html linux下syscall函数,SYS_gettid,SYS_tgkill 2014 ...
- linux下system函数的深入理解
这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...
- Linux下curses函数库的详细介绍
Linux下curses函数库的详细介绍 curses库介绍 安装 curses库函数介绍 初始化和重置函数 管理屏幕的函数 输出到屏幕 从屏幕读取 清除屏幕 移动光标 字符属性 管理键盘的函数 键盘 ...
- linux下readlink函数详解
linux下readlink函数详解 相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:int readlink(con ...
- linux 纪元时间转换,[转]Linux下时间函数time gettimeofday
Linux下时间函数time & gettimeofday UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒.Epoch是指定为1970年1月1日凌晨零点零分零秒 ...
- Linux下connect函数 阻塞 与 非阻塞 问题
一.概述 linux系统下,connect函数是阻塞的,阻塞时间的长度与系统相关.而如果把套接字设置成非阻塞,调用connect函数时会报错Operation now in progress,且err ...
- Linux下select函数实现的聊天服务器
转载: http://blog.csdn.net/microtong/article/details/4989902 Linux下select函数实现的聊天服务器 佟强 http://blog.cs ...
- LINUX下poll函数用法
LINUX下poll函数用法 文章目录 LINUX下poll函数用法 一.函数介绍 二.使用 1. 一.函数介绍 int poll(struct pollfd *fds, nfds_t nfds, i ...
- linux 函数返回string,linux 下c函数strcmp的返回值疑问?
linux 下c函数strcmp的返回值疑问? strcmp函数解释: NAME strcmp, strncmp - compare two strings SYNOPSIS #include int ...
最新文章
- 信息系统项目管理师论文范文-干系人管理
- 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
- 服务器 不支持gbk,解决JS请求服务器gbk文件乱码的问题
- 【报告分享】2021中国消费者报告-麦肯锡.pdf(附下载链接)
- Oracle 写存储过程的一个模板还有一些基本的知识点
- MySQL------存储过程的使用
- pku 3592 Instantaneous Transference tarjan缩点重建图+spfa求最长路
- UDS协议(车辆控制单元诊断系统开发架构及DID读取数据流程)
- Crackme 21
- C语言定义结构体的几种方法
- 上海公积金提取办法(外地购房,公积金在上海)
- 愚见《Nighttime Visibility Enhancement by Increasing the Dynamic Range andSuppression of Light Effects》
- 免费WiFi等你来上钩
- ROS2 Humble测试版功能包列表
- 成为Java GC专家系列(三) ——如何优化Java垃圾回收
- 关于IAP支付,谷歌和苹果订阅商品——最白话,手把手教你做系列。
- 【React】React 详细教程
- 机器人瓦力有什么西方的风格_机器人瓦力观后感 英文
- dos命令行-禁用和启用本地连接
- java中的artifact啥意思_maven中的groupId和artifactId到底指的是什么