History log of /src/sys/uvm/uvm_pdpolicy_clockpro.c |
Revision | | Date | Author | Comments |
1.27 |
| 12-Apr-2022 |
andvar | s/stablize/stabilize/
|
1.26 |
| 17-May-2020 |
ad | Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
1.25 |
| 10-Apr-2020 |
tsutsui | Update a link to "CLOCK-Pro" paper.
|
1.24 |
| 14-Mar-2020 |
ad | branches: 1.24.2; uvm_pdpolicy: Require a write lock on the object only for dequeue. No sense in requiring that for enqueue/activate/deactivate.
|
1.23 |
| 30-Jan-2020 |
ad | uvmpdpol_estimatepageable(): Don't take any locks here. This can be called from DDB, and in any case the numbers are stale the instant the lock is dropped, so it just doesn't matter.
|
1.22 |
| 31-Dec-2019 |
ad | branches: 1.22.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs 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.
|
1.21 |
| 31-Dec-2019 |
ad | Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
1.20 |
| 30-Dec-2019 |
ad | pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
1.19 |
| 27-Dec-2019 |
ad | vm_page: Now that listq is gone, give the pagedaemon its own private TAILQ_ENTRY, so that update of page replacement state can be made asynchronous/lazy. No functional change.
|
1.18 |
| 13-Dec-2019 |
ad | Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
1.17 |
| 20-Jun-2011 |
yamt | branches: 1.17.54; band-aid fix after the merge of rmind-uvmplock branch.
|
1.16 |
| 05-Feb-2011 |
yamt | branches: 1.16.2; pageobj: remove a wrong assertion.
|
1.15 |
| 04-Jun-2008 |
ad | branches: 1.15.16; 1.15.20; 1.15.26; 1.15.28; vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
1.14 |
| 22-Mar-2008 |
bjs | branches: 1.14.2; 1.14.4; 1.14.6; Allow this to compile if LISTQ is undefined:
- Put '#ifdef LISTQ' ... '#endif' pairs around pageq_insert_head() and clockpro_insert_head().
- Add missing argument to printf statement.
|
1.13 |
| 07-Feb-2008 |
yamt | branches: 1.13.6; nonresident_rotate: avoid too long loops which can happen on some workloads.
|
1.12 |
| 18-Jan-2008 |
yamt | push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
1.11 |
| 13-Jan-2008 |
yamt | nonresident_rotate: micro optimization
|
1.10 |
| 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.9 |
| 01-Aug-2007 |
yamt | branches: 1.9.4; 1.9.10; 1.9.12; 1.9.16; 1.9.20; use separate nreslookup evcnt for obj and anon pages.
|
1.8 |
| 22-Feb-2007 |
thorpej | branches: 1.8.4; 1.8.12; TRUE -> true, FALSE -> false
|
1.7 |
| 21-Feb-2007 |
thorpej | Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
1.6 |
| 28-Nov-2006 |
yamt | branches: 1.6.4; 1.6.6; uvmpdpol_pagedequeue: clear PQ_INITIALREF. otherwise, dequeue/enqueue cycles (eg. page loaning) can cause an assertion failure in clockpro_pageenqueue.
|
1.5 |
| 16-Nov-2006 |
christos | __unused removal on arguments; approved by core.
|
1.4 |
| 12-Oct-2006 |
yamt | remove unnecessary #include of vnode.h.
|
1.3 |
| 09-Oct-2006 |
yamt | fix some warnings in the case of PDSIM.
|
1.2 |
| 15-Sep-2006 |
yamt | branches: 1.2.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
1.1 |
| 06-Mar-2006 |
yamt | branches: 1.1.2; 1.1.6; file uvm_pdpolicy_clockpro.c was initially added on branch yamt-pdpolicy.
|
1.1.6.2 |
| 12-Jan-2007 |
ad | Sync with head.
|
1.1.6.1 |
| 18-Nov-2006 |
ad | Sync with head.
|
1.1.2.11 |
| 15-Sep-2006 |
yamt | make UVM_KICK_PDAEMON() a real function and stop including uvm_pdpolicy.h from uvm.h. this also fixes build of pmap(1).
|
1.1.2.10 |
| 24-Mar-2006 |
yamt | get rid of bootstrap code from frequently called path.
|
1.1.2.9 |
| 24-Mar-2006 |
yamt | separate "nresrecord" statistics for obj and anon.
|
1.1.2.8 |
| 21-Mar-2006 |
yamt | add a sysctl knob to adjust cold target.
|
1.1.2.7 |
| 18-Mar-2006 |
yamt | reduce BUCKETSIZE to make sizeof(struct bucket) a power of two.
|
1.1.2.6 |
| 10-Mar-2006 |
yamt | reduce unnecessary c99'ism.
|
1.1.2.5 |
| 08-Mar-2006 |
yamt | some comments.
|
1.1.2.4 |
| 08-Mar-2006 |
yamt | add a statistic.
|
1.1.2.3 |
| 08-Mar-2006 |
yamt | remove unnecessary ";".
|
1.1.2.2 |
| 07-Mar-2006 |
yamt | simplify #ifdef a little.
|
1.1.2.1 |
| 06-Mar-2006 |
yamt | an experimental implementation of CLOCK-Pro.
|
1.2.2.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
1.2.2.1 |
| 22-Oct-2006 |
yamt | sync with head
|
1.6.6.1 |
| 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
1.6.4.7 |
| 24-Mar-2008 |
yamt | sync with head.
|
1.6.4.6 |
| 11-Feb-2008 |
yamt | sync with head.
|
1.6.4.5 |
| 21-Jan-2008 |
yamt | sync with head
|
1.6.4.4 |
| 03-Sep-2007 |
yamt | sync with head.
|
1.6.4.3 |
| 26-Feb-2007 |
yamt | sync with head.
|
1.6.4.2 |
| 30-Dec-2006 |
yamt | sync with head.
|
1.6.4.1 |
| 28-Nov-2006 |
yamt | file uvm_pdpolicy_clockpro.c was added on branch yamt-lazymbuf on 2006-12-30 20:51:05 +0000
|
1.8.12.1 |
| 15-Aug-2007 |
skrll | Sync with HEAD.
|
1.8.4.2 |
| 20-Aug-2007 |
ad | Sync with HEAD.
|
1.8.4.1 |
| 13-Mar-2007 |
ad | Pull in the initial set of changes for the vmlocking branch.
|
1.9.20.2 |
| 01-Aug-2007 |
yamt | use separate nreslookup evcnt for obj and anon pages.
|
1.9.20.1 |
| 01-Aug-2007 |
yamt | file uvm_pdpolicy_clockpro.c was added on branch matt-mips64 on 2007-08-01 14:49:56 +0000
|
1.9.16.2 |
| 19-Jan-2008 |
bouyer | Sync with HEAD
|
1.9.16.1 |
| 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.9.12.1 |
| 04-Dec-2007 |
ad | Pull the vmlocking changes into a new branch.
|
1.9.10.1 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.9.4.2 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.9.4.1 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.13.6.2 |
| 05-Jun-2008 |
mjf | Sync with HEAD.
Also fix build.
|
1.13.6.1 |
| 03-Apr-2008 |
mjf | Sync with HEAD.
|
1.14.6.1 |
| 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
1.14.4.1 |
| 04-May-2009 |
yamt | sync with head.
|
1.14.2.1 |
| 17-Jun-2008 |
yamt | sync with head.
|
1.15.28.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.15.26.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.15.20.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.15.16.1 |
| 09-Feb-2012 |
matt | Major changes to uvm. Support multiple collections (groups) of free pages and run the page reclaimation algorithm on each group independently.
|
1.16.2.1 |
| 23-Jun-2011 |
cherry | Catchup with rmind-uvmplock merge.
|
1.17.54.2 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
1.17.54.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.22.2.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.24.2.1 |
| 20-Apr-2020 |
bouyer | Sync with HEAD
|