OOM_KILLER触发的条件和代码剖析

总结:实际上2.6的代码和3.0的代码已经是今非昔比了,所有的代码都应该按照最新的版本进行解读,当然如果我们的操作环境是旧版本,我们也只好研读了。

两个函数调用了shrink_cache
try_to_free_pages
shrink_zone
文件:mm/page_alloc.c
_alloc_pages函数调用out_of_memory(gfp_mask)
如下是oom_killer的参数,实际上,我根本就不知道系统会
在out of memory的时候调用oom_killer函数,下面的设置
应该是怎样子的,我应该如何调试,这些参数,才能够知道
输出。
我尝试搜索了oom或者下面的管禁止panic_on_oom,可是
一无所知!!

vm.panic_on_oom=0
vm.oom_kill_allocating_task=0
vm.oom_dump_tasks=1
vm.would_have_oomkilled=0

按道理说:如果出现内存不足的情况,应该会调用oom_killer函数
进行进程的销毁,因为会调用如下的打印:
printk("oom-killer: gfp_mask=0x%x\n", gfp_mask);

static inline long PTR_ERR(const void *ptr)
{
 return (long) ptr;
}
/*
 * fs/fs-writeback.c
 */
enum writeback_sync_modes {
 WB_SYNC_NONE, /* Don't wait on anything */
 WB_SYNC_ALL, /* Wait on every mapping */
 WB_SYNC_HOLD, /* Hold the inode on sb_dirty for sys_sync() */
};

你可能感兴趣的:(内核版本,代码剖析)