> Here's a diff that fixes the bug and does not make landisk slow other
> architectures. This gives a noticeable boost for page faults and
> aggressive swapping (like a stress test with torture).
>
> Note that NetBSD also calls pmap_kenter_pa(9) in this case. So maybe
> there's a fix for landisk out there. Anyone care about landisk?
I have tested that diff on landisk. With or without the __sh__ test,
after a complete build + release + xenocara cycle, attempting to "cvs
update" in xenocara (where there are large files and the memory usage of
cvs is higher) stalls with the ssh client process waiting on "pmrwait" -
or progresses very slowly, as the cpu time in ps for that process is
slowly increasing. Meanwhile, other processes are being responsive, and
it is possible to ssh to the machine.
I suppose this matches what Theo is seeing.
>From ddb, memory stats are not that bad:
ddb> show uvmexp
Current UVM status:
pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12
14870 VM pages: 208 active, 0 inactive, 1 wired, 10032 free (1276 zero)
freemin=495, free-target=660, inactive-target=661, wired-max=4956
faults=167811606, traps=89128730, intrs=40206503, ctxswitch=16760699 fpuswitc
h=0
softint=18260869, syscalls=89128728, kmapent=10
fault counts:
noram=993342, noanon=0, noamap=0, pgwait=444, pgrele=0
relocks=1749413(15645), upgrades=0(0) anget(retries)=69162137(439700), amap
copy=28198659
neighbor anon/obj pg=48566250/104332701, gets(lock/unlock)=30673401/1314764
cases: anon=56548669, anoncow=12602419, obj=26929597, prcopy=3738753, przer
o=67918633
daemon and swap counts:
woke=1342398, revs=1363281, scans=2419844, obscans=398458, anscans=1709393
busy=0, freed=1234489, reactivate=311881, deactivate=8755420
pageouts=64922, pending=64922, nswget=449369
nswapdev=1
swpages=4194415, swpginuse=4584, swpgonly=4469 paging=0
kernel pointers:
objs(kern)=0x8c3e1dcc
ddb> show bcstats
Current Buffer Cache status:
numbufs 184 busymapped 0, delwri 4
kvaslots 185 avail kva slots 185
bufpages 682, dmapages 682, dirtypages 16
pendingreads 0, pendingwrites 3
highflips 0, highflops 0, dmaflips 0