Date: Sat, 24 Jun 1995 04:55:27 -0700 From: Matt Dillon <dillon@best.com> To: bugs@freebsd.org Cc: rdy@best.com Subject: more on the paging thing Message-ID: <199506241155.EAA13277@shell1.best.com>
index | next in thread | raw e-mail
Ach! And here I thought I had found a problem... I didn't see the
pcount-- in the while() loop, so the end-of-queue problem cannot
occur.
Damn. But the second part of my suggestion still holds.... since
act_count is not touched when the system is not paging, the pages
that DO get paged out are determined in a problematic fashion.
So I would change my suggestions as follows:
* keep the TAILQ_REMOVE/TAILQ_INSERT_TAIL in the else that I previously
thought should be taken out.
* run through ALL the pages in the active queue once every 5 seconds
testing pmap_is_referenced() and adjusting act_count up or down.
If the active count hits 0, insert the page at the head of the queue
If the page was referenced, move it to the tail.
This would work quite well... you can optimize it by keeping a pointer
to the last page with a 0 act_count occuring before any page with
a non-0 act_count, and use that as the insertion point for new pages
that are decremented to 0, inserting them into the queue at that
point rather then at the head of the queue.
-Matt
Matthew Dillon VP Engineering, BEST Internet Communications, Inc.
<dillon@best.com>, <dillon@apollo.west.oic.com>
[always include a portion of the original email in any response!]
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506241155.EAA13277>
