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



On Sat, Sep 17, 2011 at 10:28 AM, Emmanuel Dreyfus <manu%netbsd.org@localhost> 
wrote:
> Masao Uebayashi <uebayasi%gmail.com@localhost> wrote:
>
>> So what I can think of now is, the underlying bdev can't finish I/O
>> because it allocates memory to handle I/O requests?
>
> I already spotted two points where ioflush was stuck in PUFFS code path,
> and I added code so that it can act immediatly or get an error. That
> helps, and I do not see ioflush deadlocking anymore.
>
> However the errors mean vnode are not really sync. When a process
> deadlocks awaiting the PUFFS filesystem, while the PUFFS filesystems
> sleeps on anonget2 (or sometime on flt_noram1), I can see that
> uvmexp.paging is high as a few hundred, and it can even be thousands.

My understanding is that the swap I/O code path including underlying
bdevs must *never* allocate memory to handle I/O, to resove such a
resource shortage situation.  Or the proc doing swap I/O would get
stuck somewhere.


Home | Main Index | Thread Index | Old Index