tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: netbsd-5 deadlocks when memory is low



YAMAMOTO Takashi <yamt%mwd.biglobe.ne.jp@localhost> wrote:

> the pagedaemon stays sleeping because there's already enough paging
> requests in-progress.  (see "paging=" in the ddb show uvm output.)
> it (reasonably) assumes i/o will complete "soon".

The offending code would be

void  
uvm_kick_pdaemon(void)
{
 
        KASSERT(mutex_owned(&uvm_fpageqlock));  
  
        if (uvmexp.free + uvmexp.paging < uvmexp.freemin ||
            (uvmexp.free + uvmexp.paging < uvmexp.freetarg &&
             uvmpdpol_needsscan_p())) {
                wakeup(&uvm.pagedaemon);
        }
}

My uvm stats gives me this, and indeed nothing wakes up pagedaemon:
uvmexp.free = 1
uvmexp.paging = 907
uvmexp.freemin = 256
uvmexp.freetarg = 341

But I would expect paging requests to complete one day, why would thet
remain in progress forever?

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index