Skip site navigation (1)Skip section navigation (2)
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>