Re: quick fix for uvm deadlocks

2014-02-06 Thread Ted Unangst
On Thu, Feb 06, 2014 at 12:34, Mark Kettenis wrote: > I believe the scenario you sketched should only land you in > uvm_wait_pla(), but not in uvm_wait(). Perhaps with the current code > we can end up in uvm_wait(), but I think those would be bugs where the > driver I/O paths are doing memory all

Re: quick fix for uvm deadlocks

2014-02-06 Thread Mark Kettenis
> Date: Wed, 05 Feb 2014 23:03:09 -0500 > From: Ted Unangst > > On Wed, Feb 05, 2014 at 17:53, Bob Beck wrote: > > On Wed, Feb 5, 2014 at 3:17 PM, Ted Unangst wrote: > >> We are missing back pressure channels from uvm to the buf cache. The > >> buf cache will happily sit on 9000 free pages while

Re: quick fix for uvm deadlocks

2014-02-05 Thread Bob Beck
Yes, this is much better. although I think this problem related to big mmaps has been with us for a while. and appears to avoid the problem with the offending test programs on my machines. I'm ok with that going in for the moment, although I want some of your time to look at that nasty shit we t

Re: quick fix for uvm deadlocks

2014-02-05 Thread Ted Unangst
On Wed, Feb 05, 2014 at 17:53, Bob Beck wrote: > On Wed, Feb 5, 2014 at 3:17 PM, Ted Unangst wrote: >> We are missing back pressure channels from uvm to the buf cache. The >> buf cache will happily sit on 9000 free pages while uvm churns around >> trying to scavenge up one more page. > Or are you

Re: quick fix for uvm deadlocks

2014-02-05 Thread Bob Beck
On Wed, Feb 5, 2014 at 3:17 PM, Ted Unangst wrote: > We are missing back pressure channels from uvm to the buf cache. The > buf cache will happily sit on 9000 free pages while uvm churns around > trying to scavenge up one more page. Indeed, those are it's minimums (I presume in your case) and are

quick fix for uvm deadlocks

2014-02-05 Thread Ted Unangst
We are missing back pressure channels from uvm to the buf cache. The buf cache will happily sit on 9000 free pages while uvm churns around trying to scavenge up one more page. Fixing this is beyond the scope of a simple diff, but here's something that seems to help in a lot of the common cases, pa