1 /* $OpenBSD: uvmexp.h,v 1.2 2016/05/08 11:52:32 stefan Exp $ */ 2 3 #ifndef _UVM_UVMEXP_ 4 #define _UVM_UVMEXP_ 5 6 /* 7 * CTL_VM identifiers 8 */ 9 #define VM_METER 1 /* struct vmmeter */ 10 #define VM_LOADAVG 2 /* struct loadavg */ 11 #define VM_PSSTRINGS 3 /* PSSTRINGS */ 12 #define VM_UVMEXP 4 /* struct uvmexp */ 13 #define VM_SWAPENCRYPT 5 /* int */ 14 #define VM_NKMEMPAGES 6 /* int - # kmem_map pages */ 15 #define VM_ANONMIN 7 16 #define VM_VTEXTMIN 8 17 #define VM_VNODEMIN 9 18 #define VM_MAXSLP 10 19 #define VM_USPACE 11 20 #define VM_MAXID 12 /* number of valid vm ids */ 21 22 #define CTL_VM_NAMES { \ 23 { 0, 0 }, \ 24 { "vmmeter", CTLTYPE_STRUCT }, \ 25 { "loadavg", CTLTYPE_STRUCT }, \ 26 { "psstrings", CTLTYPE_STRUCT }, \ 27 { "uvmexp", CTLTYPE_STRUCT }, \ 28 { "swapencrypt", CTLTYPE_NODE }, \ 29 { "nkmempages", CTLTYPE_INT }, \ 30 { "anonmin", CTLTYPE_INT }, \ 31 { "vtextmin", CTLTYPE_INT }, \ 32 { "vnodemin", CTLTYPE_INT }, \ 33 { "maxslp", CTLTYPE_INT }, \ 34 { "uspace", CTLTYPE_INT }, \ 35 } 36 37 /* 38 * uvmexp: global data structures that are exported to parts of the kernel 39 * other than the vm system. 40 */ 41 struct uvmexp { 42 /* vm_page constants */ 43 int pagesize; /* size of a page (PAGE_SIZE): must be power of 2 */ 44 int pagemask; /* page mask */ 45 int pageshift; /* page shift */ 46 47 /* vm_page counters */ 48 int npages; /* number of pages we manage */ 49 int free; /* number of free pages */ 50 int active; /* number of active pages */ 51 int inactive; /* number of pages that we free'd but may want back */ 52 int paging; /* number of pages in the process of being paged out */ 53 int wired; /* number of wired pages */ 54 55 int zeropages; /* number of zero'd pages */ 56 int reserve_pagedaemon; /* number of pages reserved for pagedaemon */ 57 int reserve_kernel; /* number of pages reserved for kernel */ 58 int anonpages; /* number of pages used by anon pagers */ 59 int vnodepages; /* number of pages used by vnode page cache */ 60 int vtextpages; /* number of pages used by vtext vnodes */ 61 62 /* pageout params */ 63 int freemin; /* min number of free pages */ 64 int freetarg; /* target number of free pages */ 65 int inactarg; /* target number of inactive pages */ 66 int wiredmax; /* max number of wired pages */ 67 int anonmin; /* min threshold for anon pages */ 68 int vtextmin; /* min threshold for vtext pages */ 69 int vnodemin; /* min threshold for vnode pages */ 70 int anonminpct; /* min percent anon pages */ 71 int vtextminpct;/* min percent vtext pages */ 72 int vnodeminpct;/* min percent vnode pages */ 73 74 /* swap */ 75 int nswapdev; /* number of configured swap devices in system */ 76 int swpages; /* number of PAGE_SIZE'ed swap pages */ 77 int swpginuse; /* number of swap pages in use */ 78 int swpgonly; /* number of swap pages in use, not also in RAM */ 79 int nswget; /* number of times fault calls uvm_swap_get() */ 80 int nanon; /* number total of anon's in system */ 81 int nanonneeded;/* number of anons currently needed */ 82 int nfreeanon; /* number of free anon's */ 83 84 /* stat counters */ 85 int faults; /* page fault count */ 86 int traps; /* trap count */ 87 int intrs; /* interrupt count */ 88 int swtch; /* context switch count */ 89 int softs; /* software interrupt count */ 90 int syscalls; /* system calls */ 91 int pageins; /* pagein operation count */ 92 /* pageouts are in pdpageouts below */ 93 int obsolete_swapins; /* swapins */ 94 int obsolete_swapouts; /* swapouts */ 95 int pgswapin; /* pages swapped in */ 96 int pgswapout; /* pages swapped out */ 97 int forks; /* forks */ 98 int forks_ppwait; /* forks where parent waits */ 99 int forks_sharevm; /* forks where vmspace is shared */ 100 int pga_zerohit; /* pagealloc where zero wanted and zero 101 was available */ 102 int pga_zeromiss; /* pagealloc where zero wanted and zero 103 not available */ 104 int zeroaborts; /* number of times page zeroing was 105 aborted */ 106 107 /* fault subcounters */ 108 int fltnoram; /* number of times fault was out of ram */ 109 int fltnoanon; /* number of times fault was out of anons */ 110 int fltnoamap; /* number of times fault was out of amap chunks */ 111 int fltpgwait; /* number of times fault had to wait on a page */ 112 int fltpgrele; /* number of times fault found a released page */ 113 int fltrelck; /* number of times fault relock called */ 114 int fltrelckok; /* number of times fault relock is a success */ 115 int fltanget; /* number of times fault gets anon page */ 116 int fltanretry; /* number of times fault retrys an anon get */ 117 int fltamcopy; /* number of times fault clears "needs copy" */ 118 int fltnamap; /* number of times fault maps a neighbor anon page */ 119 int fltnomap; /* number of times fault maps a neighbor obj page */ 120 int fltlget; /* number of times fault does a locked pgo_get */ 121 int fltget; /* number of times fault does an unlocked get */ 122 int flt_anon; /* number of times fault anon (case 1a) */ 123 int flt_acow; /* number of times fault anon cow (case 1b) */ 124 int flt_obj; /* number of times fault is on object page (2a) */ 125 int flt_prcopy; /* number of times fault promotes with copy (2b) */ 126 int flt_przero; /* number of times fault promotes with zerofill (2b) */ 127 128 /* daemon counters */ 129 int pdwoke; /* number of times daemon woke up */ 130 int pdrevs; /* number of times daemon rev'd clock hand */ 131 int pdswout; /* number of times daemon called for swapout */ 132 int pdfreed; /* number of pages daemon freed since boot */ 133 int pdscans; /* number of pages daemon scanned since boot */ 134 int pdanscan; /* number of anonymous pages scanned by daemon */ 135 int pdobscan; /* number of object pages scanned by daemon */ 136 int pdreact; /* number of pages daemon reactivated since boot */ 137 int pdbusy; /* number of times daemon found a busy page */ 138 int pdpageouts; /* number of times daemon started a pageout */ 139 int pdpending; /* number of times daemon got a pending pagout */ 140 int pddeact; /* number of pages daemon deactivates */ 141 int pdreanon; /* anon pages reactivated due to min threshold */ 142 int pdrevnode; /* vnode pages reactivated due to min threshold */ 143 int pdrevtext; /* vtext pages reactivated due to min threshold */ 144 145 int fpswtch; /* FPU context switches */ 146 int kmapent; /* number of kernel map entries */ 147 }; 148 149 struct _ps_strings { 150 void *val; 151 }; 152 153 #endif /*_UVM_UVMEXP_ */ 154