94843b1390
of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar. - Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper. |
||
---|---|---|
.. | ||
deadfs | ||
fdesc | ||
fifofs | ||
genfs | ||
kernfs | ||
nullfs | ||
overlay | ||
procfs | ||
specfs | ||
umapfs | ||
Makefile |