kernel killing processes when out of swap

ALeine aleine at austrosearch.net
Tue Apr 12 11:37:54 PDT 2005


marcolz at stack.nl wrote: 

> On Tue, Apr 12, 2005 at 06:46:45PM +0200, Dag-Erling Smrgrav
> wrote:
> > There is no "large process detection".  The first process that
> > tries to fault in a new page after the system runs out of swap
> > gets killed.
> 
> Are you suggesting that vm_pageout_pmap_collect() is no longer in
> use ?
> 
> That has a FOREACH_PROC_IN_SYSTEM(p) ... find biggest unlocked
> ...
> kill-kill-kill...

The largest process gets killed in vm_pageout_scan() according to the
latest sources:

http://fxr.watson.org/fxr/source/vm/vm_pageout.c#L1168

1168         /*
1169          * If we are critically low on one of RAM or swap and low on
1170          * the other, kill the largest process.  However, we avoid
1171          * doing this on the first pass in order to give ourselves a
1172          * chance to flush out dirty vnode-backed pages and to allow
1173          * active pages to be moved to the inactive queue and reclaimed.
1174          *
1175          * We keep the process bigproc locked once we find it to keep anyone
1176          * from messing with it; however, there is a possibility of
1177          * deadlock if process B is bigproc and one of it's child processes
1178          * attempts to propagate a signal to B while we are waiting for A's
1179          * lock while walking this list.  To avoid this, we don't block on
1180          * the process lock but just skip a process if it is already locked.
1181          */

http://fxr.watson.org/fxr/source/vm/vm_pageout.c?v=RELENG4#L1112

1112         /*
1113          * If we are out of swap and were not able to reach our paging
1114          * target, kill the largest process.
1115          */

ALeine
___________________________________________________________________
WebMail FREE http://mail.austrosearch.net 


More information about the freebsd-hackers mailing list