[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
UVM / pmap assertion under load
Trying to get a stress test consisting of a bunch of fsx, fsstress and dbench
running this combination leads within minutes to a failed assertion
"(npte & PG_RW) != 0" in file x86/x86/pmap.c.
With some tracing I always get the same pattern:
- fsx gets a trap(), user memory, write.
-> the uobj is a vnode with VI_WRMAPDIRTY set.
- uvm_fault_lower() has to call uvm_fault_lower_io() as uobjpage is zero.
- short before uvm_fault_lower_io() has a chance to re-lock uobj another thread
comes through genfs_do_putpages() and clears VI_WRMAPDIRTY.
- uvm_fault_lower_direct() sees UVM_OBJ_NEEDS_WRITEFAULT() and clears
- pmap_enter_ma() fires the assertion "(npte & PG_RW) != 0".
~ one of ten times I get the assertion
"(uobj == NULL || !UVM_OBJ_IS_CLEAN(uobjpage->uobject) ||
(uobjpage->flags & PG_CLEAN) != 0);"
which may be related.
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig
Main Index |
Thread Index |