Sunday, October 26, 2014

AIX VMM Page Classification

Working storage pages are pages that are not preserved across a system reboot.  Examples are process data, heap, stack and shared memory etc.  They are also called anonymous pages.  VMM will release the working storage when a process ends.

Permanent pages are pages that have a backup store (file) and so it persists across system reboot. There are 2 subtypes:


  • Non-client pages are those in a JFS file system.  They are also called persistent pages.
  • Client pages are pages from other file systems like NFS and JFS2.


Computational pages are working storage pages.  Program text is also computational pages.  Pages from other type of files are designated as non-computational pages.    Non-computational pages will retain in the file cache for performance purpose in case it is required at a later time.

A file can start off as non-computational but when a page fault is triggered for the file due to instruction fetch (i.e. system is trying to fetch an instruction from the file), the file will then be marked as computational.  All the pages in the RAM belong to the file will be marked as computational.

The tunables minperm and maxperm control the amount of permanent storage pages cached in the system.  When the number of permanent pages (numperm) is above maxperm, lrud will steal only from the permanent pages store (file cache) to replenish the free page list.  When numperm is lower than minperm, lrud will steal from both computational and non-computational pages.

When numperm is between minperm and maxperm, AIX will consult the lru_file_repage tunable.  When this tunable is active (set to 1), AIX maintains a lru repage table to track pages (computational and non-computational) that have been paged out but then got paged in shortly again.  This indicates these pages are needed frequently and should not have paged out.  If the computational pages has a higher repaging rate than non-computational, AIX will steal from non-computational pages.  Otherwise, AIX will steal from both computational and non-computational.  When the tunable is set to 0, AIX will always steal from non-computational which generally the better choice.

No comments: