History log of /netbsd-src/sys/uvm/uvm_pdpolicy_clockpro.c (Results 1 – 25 of 26)
Revision Date Author Comments
# 06ddeb9f 12-Apr-2022 andvar <andvar@NetBSD.org>

s/stablize/stabilize/


# ff872804 17-May-2020 ad <ad@NetBSD.org>

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.

-

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.

show more ...


# edf49f7c 10-Apr-2020 tsutsui <tsutsui@NetBSD.org>

Update a link to "CLOCK-Pro" paper.


# 231cabb5 14-Mar-2020 ad <ad@NetBSD.org>

uvm_pdpolicy: Require a write lock on the object only for dequeue.
No sense in requiring that for enqueue/activate/deactivate.


# da84a45c 30-Jan-2020 ad <ad@NetBSD.org>

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.


# 94843b13 31-Dec-2019 ad <ad@NetBSD.org>

- 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

- 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.

show more ...


# b78a6618 31-Dec-2019 ad <ad@NetBSD.org>

Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()


# 9344a595 30-Dec-2019 ad <ad@NetBSD.org>

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

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

show more ...


# 6c2dc768 27-Dec-2019 ad <ad@NetBSD.org>

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.


# 5978ddc6 13-Dec-2019 ad <ad@NetBSD.org>

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 extre

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

show more ...


# 05d8362d 20-Jun-2011 yamt <yamt@NetBSD.org>

band-aid fix after the merge of rmind-uvmplock branch.


# c6c7ed99 05-Feb-2011 yamt <yamt@NetBSD.org>

pageobj: remove a wrong assertion.


# 06c343ac 04-Jun-2008 ad <ad@NetBSD.org>

vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.


# d5e8b5ed 22-Mar-2008 bjs <bjs@NetBSD.org>

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.


# 79c62b78 07-Feb-2008 yamt <yamt@NetBSD.org>

nonresident_rotate: avoid too long loops which can happen on some workloads.


# 2b40f350 18-Jan-2008 yamt <yamt@NetBSD.org>

push pmap_clear_reference calls into pdpolicy code, where reference bits
actually matter.


# b0fbe32d 13-Jan-2008 yamt <yamt@NetBSD.org>

nonresident_rotate: micro optimization


# 4a780c9a 02-Jan-2008 ad <ad@NetBSD.org>

Merge vmlocking2 to head.


# 603d434b 01-Aug-2007 yamt <yamt@NetBSD.org>

use separate nreslookup evcnt for obj and anon pages.


# b3667ada 22-Feb-2007 thorpej <thorpej@NetBSD.org>

TRUE -> true, FALSE -> false


# 712239e3 21-Feb-2007 thorpej <thorpej@NetBSD.org>

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.


# ec1dd90a 28-Nov-2006 yamt <yamt@NetBSD.org>

uvmpdpol_pagedequeue: clear PQ_INITIALREF.
otherwise, dequeue/enqueue cycles (eg. page loaning) can cause
an assertion failure in clockpro_pageenqueue.


# 168cd830 16-Nov-2006 christos <christos@NetBSD.org>

__unused removal on arguments; approved by core.


# 0a8c1584 12-Oct-2006 yamt <yamt@NetBSD.org>

remove unnecessary #include of vnode.h.


# 86004aae 09-Oct-2006 yamt <yamt@NetBSD.org>

fix some warnings in the case of PDSIM.


12