ageing page tables Jonathan S. Shapiro (shap@eros.cis.upenn.edu)
Wed, 11 Dec 1996 17:06:20 -0500

I am in the process of debugging ageing, which has been an adventure. Quite amazing how many clever ways an IDE subsystem can find to go wrong... :-)

As may be, this has led me to think about handling the ageing of page tables.

When the producer of a page table page is ejected from memory the page table page should also be freed. If the producer has gone out, we know that all of those page table entries are invalid in any case, and also that there are no references to the page table page. No point hanging onto the table. We can always buy another off of the free page frame list.

In principle, page table pages should not be aged independently of their nodes -- this is double jeopardy. Norm argued some years ago that page tables are cheap to rebuild, but this is not necessarily so. Each and every regenerated page table entry is going to cost on the order of 5 microseconds to rebuild. Well and good if the frame is not actively in use, but bad indeed if it was "hot" -- very nearly a page fault cost.

If page tables are NOT independently aged, then there are cross-cache pressure effects induced on the page cache by the node cache, and there is no straightforward feedback loop to eliminate this.

If node and page aging could be integrated the issue would not arise, but node ageing can induce page frame allocation for purposes of ageout I/O.

I'm therefore going to age page tables seperately and hope for the best.

Jonathan