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