OOM機(jī)制
OOM機(jī)制會(huì)監(jiān)控占用內(nèi)存過大的進(jìn)程并且自動(dòng)殺死該進(jìn)程.可以設(shè)置proc/PID/oom_adj參數(shù)為-17,臨時(shí)關(guān)閉OOM機(jī)制,proc/$PID/oom_adj則保護(hù)進(jìn)程被殺掉
linux系統(tǒng)中,OOM機(jī)制的實(shí)現(xiàn)文件是mm/oom_kill
內(nèi)存不足調(diào)用out_of_memory處理
oom_kill_process的功能是執(zhí)行具體的殺死進(jìn)程
check_panic_on_oom檢查處理當(dāng)前運(yùn)行的進(jìn)程
android系統(tǒng)Low Memory killer架構(gòu)
在android系統(tǒng)中,通過low memory killer在用戶空間中設(shè)置了一組內(nèi)存臨界值.如果里面的某個(gè)值與進(jìn)程描述中的oom_adj值在同一范圍就kill該進(jìn)程
設(shè)備中sys/module/lowmemorykiller/parameters/adj指定oom_adj的最小值
sys/module/lowmemorykiller/parameters/minfree中存儲(chǔ)空閑頁面的數(shù)量
例:將0,9寫入sys/module/lowmemorykiller/parameters/adj, 1024,4096寫入sys/module/lowmemorykiller/parameters/minfree,表示當(dāng)一個(gè)進(jìn)程的空閑存儲(chǔ)空間下降到4096個(gè)頁面,會(huì)kill掉oom_adj值為9的或者更大的進(jìn)程,當(dāng)下降到1024個(gè)頁面,會(huì)kill掉oom_adj值為0或者更大的進(jìn)程
驅(qū)動(dòng)實(shí)現(xiàn)文件drivers/misc/lowmemorykiller.c