VMTUNE(8)

NAME
vmtune - tune system-wide virtual-memory parameters

SYNOPSIS
/etc/vmtune [ -f ] [ options ]

DESCRIPTION
Vmtune provides a programmatic interface to the vm_ctl(2) system call, allowing display and tuning of system-wide virtual-memory parameters. With no arguments, vmtune prints the current contents of the vmtune structure in the kernel, which holds the tuning parameters. The decimal value of each field is printed next to the name of the field. All memory sizes are displayed and entered in Kbytes.

Options allow the modification of the parameters, either individually or as a group. Only the super-user may alter the setting of the parameters. Options come in both a short form (easy to type) and long form (easy to remember). Available options are:

-r minRS

-minRS minRS
    minimum allowable size of a process resident-set, in Kbytes. This value is silently enforced to be at least two, and limited by maxRS.

-R maxRS

-maxRS maxRS
    maximum allowable size of a process resident-set, in Kbytes. This value is silently enforced to be at least two, and limited by a boot-time determined value that insures the resident-set can fit in physical memory. The current resident-set size of a process will be adjusted to be greater than "minRS" but less than "maxRS" or equal to those values.

-e RSexecslop

-RSexecslop RSexecslop
    See RSexecdiv below.

-m RSexecmult

-RSexecmult RSexecmult

See RSexecdiv below. -d RSexecdiv

-RSexecdiv RSexecdiv
    The exec(2) system-call determines the initial allowable resident-set size of a process via

    ((text + data + bss) * RSexecmult) / RSexecdiv + RSexecslop

    where RSexecmult / RSexecdiv provides a rational fraction and all other values are in Kbytes.

-L dirtylow

-dirtylow dirtylow
    minimum size of the dirty-memory list, in Kbytes.

-H dirtyhigh

-dirtyhigh dirtyhigh
    maximum size of the dirty-memory list, in Kbytes. When the size of the dirty-list exceeds this, a system process begins writing pages to swap-space. Once this process starts, it won't stop until the size of the dirty-list is within the maximum pageout-size of dirtylow. The maximum pageout size is currently 16 Kbytes.

-K klout_look

-klout_look klout_look
    When the pageout process runs, it attempts to locate dirty pages that live in adjacent blocks on the swap device(s) to write with one operation (to minimize the number of I/O requests). Klout_look specifies how deep into the dirty-list it will look (in kernel pages). A value of zero disables clustered pageouts.

-v PFFvtime

-PFFvtime PFFvtime
    the number of clock ticks (10ms) of process virtual time between calls to the page-fault frequency algorithm. If zero, page-fault frequency adjustment of all processes is disabled. If non-zero, when the interval elapses the system normalizes the number of page-faults the process has taken to number of faults per second, and may adjust the resident-set size of the process up or down depending on the rate. This adjustment takes place on a per-process basis.

-D PFFdecr

-PFFdecr PFFdecr
    the number of Kbytes to reduce the resident-set of the process if its page-fault rate is below PFFlow.

-l PFFlow

-PFFlow PFFlow
    page-fault frequency lower-limit (page-faults per second).

-I PFFincr

-PFFincr PFFincr
    the number of Kbytes to increase the resident-set of the process if its page-fault rate is above PFFhigh.

-h PFFhigh

-PFFhigh PFFhigh
    page-fault frequency upper-limit (page-faults per second).

-s minfree

-minfree minfree
    the lower-bound on average free memory (in Kbytes) before the swapper gets more aggressive about swapping out processes.

-S desfree

-desfree desfree
    the swapper wants this much memory (in Kbytes) to be free on the average.

-M maxdirty

-maxdirty maxdirty
    if the average size of the dirty-list (in Kbytes), the swapper becomes equally as aggressive as in the minfree case.

The DYNIX kernel does some sanity checking on the altered values, but improper or naive settings can adversely affect the performance and other behavior of the system. Because of this, vmtune normally dumps the values and asks for verification of the change. The -f flag forces the change with no verification query.

SEE ALSO
getpagesize(2), vm_ctl(2)

BUGS

There should be guidelines on why, when, and how to alter these parameters.

Naive setting of the parameters can adversely affect system performance.