当前位置: 主页 > Linux安装教程 > 系统设置 >

Linux内核精髓:精通Linux内核必会的75个绝技

时间:2017-05-11 09:00来源:网络整理 作者:Linux先生 举报 点击:
下面开始介绍与OOM Killer相关的proc文件系统。/proc/PID/oom_adj为/proc/PID/oom_adj设置值就可以调整得分。调整值的范围为ndash;16~15。正的值容易被OOM Kille

读书频道 > 系统 > linux > Linux内核精髓:精通Linux内核必会的75个绝技  
关于OOM Killer的proc文件系统  
2013-02-20 09:09:59           我要投稿     

本文所属图书 > Linux内核精髓:精通Linux内核必会的75个绝技

经过近20年的发展,Linux操作系统已经成为当今最成功的开源软件之一,使用广泛,影响深远。随着Linux操作系统功能的不断丰富和完善,Linux内核的源代码也从最初的几万行增加到如今的数百万行,庞大无比,对于Lin...  立即去当当网订购

下面开始介绍与OOM Killer相关的proc文件系统。
/proc/<PID>/oom_adj

为/proc/<PID>/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/<PID>/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/<PID>/oom_score_adj

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

/proc/<PID>/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.
.....

 

 
点击复制链接 与好友分享!回本站首页  

分享到: 更多

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力    
上一篇:计算分数的方法   下一篇:RHEL5的特征  

相关文章  

关于调度策略的系统调用

关于Block I/O控制器的CFQ设置用虚拟

关于mount选项

关于功能标志

2.2.11 关于使用libtool链接库的讨论

HACK #16 OOM Killer的运行与结构

3.1.3 调用copy_process函数

1.8.3.9 procinfo


图文推荐  

  3.3.6 GNOME的软件管  
  3.3.5 GNOME的文件管  
  3.3.4 GNOME的窗口管  
  3.3.3 收藏夹和快捷  

------分隔线----------------------------
推荐内容