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>
next in thread | raw e-mail | index | archive | help
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!]
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506241155.EAA13277>