You were redirected here from mtund.
Some VM subsystem important knobs
There are at least two hysteresis-like cycles in the VM code.
One regulates when the page daemon performs paging out.
The other regulates when page allocation succeeds.
Important levels of available pages (v_free_count + v_cache_count), from higher to lower.
Prior to http://svnweb.freebsd.org/changeset/base/254304:
| Threshold | Sample values from untuned amd64 system with 8GB RAM | Description and useful information | Page daemon active | Normal requests are satisfied | Normal waiters waken up |
| v_cache_min + v_free_target | 104572 = 52286 + 52286 | a level that a page scan pass tries to reach; at this level and above vm_paging_target() == 0, below it is 1. | X | X | |
| v_cache_min + v_free_reserved | 54904 = 52286 + 2618 | a level below which vm_page_alloc() still succeeds for all request classes, but sets vm_pages_needed flag and triggers a page scan; vm_paging_needed() == 1 below this level. | X | X | X |
| v_free_min | 12417 | at this level threads waiting for pages in VM_WAIT are waken up after page shortage (and vm_pages_needed flag is reset) in vm_page_free_wakeup(); vm_page_count_min() == 1 below this level. vm_page_free_wakeup() is called by vm_page_free_toq() and vm_page_cache(), that is, upon increasing available pages count. | X | X | X |
| v_free_severe | 7517 | below this level some users of vm_page_alloc() decide to not call it and instead voluntary wait until more pages are available. Important cases of this check are: vm_fault() and vm_forkproc(). vm_page_count_severe() == 1 below this level. | X | X | |
| v_free_reserved | 2618 | at this level vm_page_alloc() would return NULL for normal requests; threads needing (M_WAITOK) memory would call VM_WAIT before retrying. | X | ||
| v_pageout_free_min | 34 | if the page daemon thread runs into a page shortage and ends up in VM_WAIT, then it would be waken up when this threshold is exceeded | X | ||
| v_interrupt_free_min | 2 | at this level vm_page_alloc() would fail even for VM_ALLOC_SYSTEM requests, only VM_ALLOC_INTERRUPT requests can succeed | X | ||
| zero | 0 | with zero available pages vm_page_alloc() would fail for all requests, all memory is exhausted | X |
After http://svnweb.freebsd.org/changeset/base/254304:
| Threshold | Sample values from untuned amd64 system with 8GB RAM | Description and useful information | Page daemon active | Normal requests are satisfied | Normal waiters waken up |
| v_free_target | 40536 | a level that a page scan pass tries to reach; at this level and above vm_paging_target() == 0, below it is 1. | X | X | |
| vm_pageout_wakeup_thresh | 13233 | a level below which vm_page_alloc() still succeeds for all request classes, but sets vm_pages_needed flag and triggers a page scan; vm_paging_needed() == 1 below this level. | X | X | X |
| v_free_min | 12417 | at this level threads waiting for pages in VM_WAIT are waken up after page shortage (and vm_pages_needed flag is reset) in vm_page_free_wakeup(); vm_page_count_min() == 1 below this level. vm_page_free_wakeup() is called by vm_page_free_toq() and vm_page_cache(), that is, upon increasing available pages count. | X | X | X |
| v_free_severe | 7517 | below this level some users of vm_page_alloc() decide to not call it and instead voluntary wait until more pages are available. Important cases of this check are: vm_fault() and vm_forkproc(). vm_page_count_severe() == 1 below this level. | X | X | |
| v_free_reserved | 2618 | at this level vm_page_alloc() would return NULL for normal requests; threads needing (M_WAITOK) memory would call VM_WAIT before retrying. | X | ||
| v_pageout_free_min | 34 | if the page daemon thread runs into a page shortage and ends up in VM_WAIT, then it would be waken up when this threshold is exceeded | X | ||
| v_interrupt_free_min | 2 | at this level vm_page_alloc() would fail even for VM_ALLOC_SYSTEM requests, only VM_ALLOC_INTERRUPT requests can succeed | X | ||
| zero | 0 | with zero available pages vm_page_alloc() would fail for all requests, all memory is exhausted | X |