I have been dealing with a deadlock problem on netbsd-5, which I though was related to PUFFS, but it seems it is another problem, hence the new thread.
When running perfused stress test (a build of NetBSD over a glusterfs volume), memory gets low, and the machine hangs. I can see ioflush is sleeping on km_getwait2 kernel memory allocation in PUFFS code: puffs_vnop_fsync/flushvncache/puffs_vnop_strategy/puffs_msgmem_alloc (the backtrace has more function calls, but this is to give an idea). Indeed memory is low, but there is a lot of free swap, as DDB tells us (see below). I understand pageademon should provide the new pages, but it keeps sleeping on pgdaemon. Code from HEAD works much better: intead of freezing, it kills big processes. It would be nice if we could reach that stage on netbsd-5: having a system freezing is bad. It does not even reboots on its own. If someone has suggestions on how to improve that. For instance, why does pagedaemon stays aslept while I have 1 free page left in memory and 98303 left in swap. db> show uvm Current UVM status: pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12 63217 VM pages: 37237 active, 18514 inactive, 3075 wired, 1 free pages 44073 anon, 11651 file, 2557 exec freemin=256, free-target=341, wired-max=21072 faults=28130665, traps=28370005, intrs=5696666, ctxswitch=12864729 softint=10808869, syscalls=1277512298, swapins=30, swapouts=62 fault counts: noram=3, noanon=0, pgwait=0, pgrele=0 ok relocks(total)=3868(3868), anget(retrys)=6761147(1482), amapcopy=4569671 neighbor anon/obj pg=5435996/54403069, gets(lock/unlock)=13039755/2386 cases: anon=4936937, anoncow=1752606, obj=10898520, prcopy=2141234, przero=8 357613 daemon and swap counts: woke=55, revs=48, scans=55713, obscans=18396, anscans=33358 busy=0, freed=50847, reactivate=3106, deactivate=76784 pageouts=4210, pending=29422, nswget=1482 nswapdev=2, swpgavail=98303 swpages=98303, swpginuse=33496, swpgonly=31129, paging=907 -- Emmanuel Dreyfus m...@netbsd.org