uvmexp.h 5.9 KB

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