192 } 193 mtx_unlock(&vm_object_list_mtx); 194 totalp->t_free = cnt.v_free_count + cnt.v_cache_count; 195 return (sysctl_handle_opaque(oidp, totalp, sizeof total, req)); 196} 197 198/* 199 * vcnt() - accumulate statistics from all cpus and the global cnt 200 * structure. 201 * 202 * The vmmeter structure is now per-cpu as well as global. Those 203 * statistics which can be kept on a per-cpu basis (to avoid cache 204 * stalls between cpus) can be moved to the per-cpu vmmeter. Remaining 205 * statistics, such as v_free_reserved, are left in the global 206 * structure. 207 * 208 * (sysctl_oid *oidp, void *arg1, int arg2, struct sysctl_req *req) 209 */ 210static int 211vcnt(SYSCTL_HANDLER_ARGS) 212{ 213 int error = 0; 214 int count = *(int *)arg1; 215#ifdef SMP 216 int i; 217 int offset = (char *)arg1 - (char *)&cnt; 218 219 for (i = 0; i < mp_ncpus; ++i) { 220 struct pcpu *pcpu = pcpu_find(i); 221 count += *(int *)((char *)&pcpu->pc_cnt + offset); 222 } 223#else 224 int offset = (char *)arg1 - (char *)&cnt; 225 count += *(int *)((char *)PCPU_PTR(cnt) + offset); 226#endif 227 error = SYSCTL_OUT(req, &count, sizeof(int)); 228 return(error); 229} 230 231SYSCTL_PROC(_vm, VM_METER, vmmeter, CTLTYPE_OPAQUE|CTLFLAG_RD, 232 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal", 233 "System virtual memory statistics"); 234SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats"); 235SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, "VM meter sys stats"); 236SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0, "VM meter vm stats"); 237SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats"); 238 239SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_swtch, CTLTYPE_UINT|CTLFLAG_RD, 240 &cnt.v_swtch, 0, vcnt, "IU", "Context switches"); 241SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_trap, CTLTYPE_UINT|CTLFLAG_RD, 242 &cnt.v_trap, 0, vcnt, "IU", "Traps"); 243SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_syscall, CTLTYPE_UINT|CTLFLAG_RD, 244 &cnt.v_syscall, 0, vcnt, "IU", "Syscalls"); 245SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_intr, CTLTYPE_UINT|CTLFLAG_RD, 246 &cnt.v_intr, 0, vcnt, "IU", "Hardware interrupts"); 247SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_soft, CTLTYPE_UINT|CTLFLAG_RD, 248 &cnt.v_soft, 0, vcnt, "IU", "Software interrupts"); 249SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vm_faults, CTLTYPE_UINT|CTLFLAG_RD, 250 &cnt.v_vm_faults, 0, vcnt, "IU", "VM faults"); 251SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_faults, CTLTYPE_UINT|CTLFLAG_RD, 252 &cnt.v_cow_faults, 0, vcnt, "IU", "COW faults"); 253SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_optim, CTLTYPE_UINT|CTLFLAG_RD, 254 &cnt.v_cow_optim, 0, vcnt, "IU", "Optimized COW faults"); 255SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_zfod, CTLTYPE_UINT|CTLFLAG_RD, 256 &cnt.v_zfod, 0, vcnt, "IU", "Zero fill"); 257SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_ozfod, CTLTYPE_UINT|CTLFLAG_RD, 258 &cnt.v_ozfod, 0, vcnt, "IU", "Optimized zero fill"); 259SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapin, CTLTYPE_UINT|CTLFLAG_RD, 260 &cnt.v_swapin, 0, vcnt, "IU", "Swapin operations"); 261SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapout, CTLTYPE_UINT|CTLFLAG_RD, 262 &cnt.v_swapout, 0, vcnt, "IU", "Swapout operations"); 263SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsin, CTLTYPE_UINT|CTLFLAG_RD, 264 &cnt.v_swappgsin, 0, vcnt, "IU", "Swapin pages"); 265SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsout, CTLTYPE_UINT|CTLFLAG_RD, 266 &cnt.v_swappgsout, 0, vcnt, "IU", "Swapout pages"); 267SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodein, CTLTYPE_UINT|CTLFLAG_RD, 268 &cnt.v_vnodein, 0, vcnt, "IU", "Vnodein operations"); 269SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodeout, CTLTYPE_UINT|CTLFLAG_RD, 270 &cnt.v_vnodeout, 0, vcnt, "IU", "Vnodeout operations"); 271SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsin, CTLTYPE_UINT|CTLFLAG_RD, 272 &cnt.v_vnodepgsin, 0, vcnt, "IU", "Vnodein pages"); 273SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsout, CTLTYPE_UINT|CTLFLAG_RD, 274 &cnt.v_vnodepgsout, 0, vcnt, "IU", "Vnodeout pages"); 275SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_intrans, CTLTYPE_UINT|CTLFLAG_RD, 276 &cnt.v_intrans, 0, vcnt, "IU", "In transit page blocking"); 277SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_reactivated, CTLTYPE_UINT|CTLFLAG_RD, 278 &cnt.v_reactivated, 0, vcnt, "IU", "Reactivated pages"); 279SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdwakeups, CTLTYPE_UINT|CTLFLAG_RD, 280 &cnt.v_pdwakeups, 0, vcnt, "IU", "Pagedaemon wakeups"); 281SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdpages, CTLTYPE_UINT|CTLFLAG_RD, 282 &cnt.v_pdpages, 0, vcnt, "IU", "Pagedaemon page scans"); 283SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_dfree, CTLTYPE_UINT|CTLFLAG_RD, 284 &cnt.v_dfree, 0, vcnt, "IU", ""); 285SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pfree, CTLTYPE_UINT|CTLFLAG_RD, 286 &cnt.v_pfree, 0, vcnt, "IU", ""); 287SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tfree, CTLTYPE_UINT|CTLFLAG_RD, 288 &cnt.v_tfree, 0, vcnt, "IU", ""); 289SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_size, CTLTYPE_UINT|CTLFLAG_RD, 290 &cnt.v_page_size, 0, vcnt, "IU", ""); 291SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_count, CTLTYPE_UINT|CTLFLAG_RD, 292 &cnt.v_page_count, 0, vcnt, "IU", ""); 293SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_reserved, CTLTYPE_UINT|CTLFLAG_RD, 294 &cnt.v_free_reserved, 0, vcnt, "IU", ""); 295SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_target, CTLTYPE_UINT|CTLFLAG_RD, 296 &cnt.v_free_target, 0, vcnt, "IU", ""); 297SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_min, CTLTYPE_UINT|CTLFLAG_RD, 298 &cnt.v_free_min, 0, vcnt, "IU", ""); 299SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_count, CTLTYPE_UINT|CTLFLAG_RD, 300 &cnt.v_free_count, 0, vcnt, "IU", ""); 301SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_wire_count, CTLTYPE_UINT|CTLFLAG_RD, 302 &cnt.v_wire_count, 0, vcnt, "IU", ""); 303SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_active_count, CTLTYPE_UINT|CTLFLAG_RD, 304 &cnt.v_active_count, 0, vcnt, "IU", ""); 305SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_target, CTLTYPE_UINT|CTLFLAG_RD, 306 &cnt.v_inactive_target, 0, vcnt, "IU", ""); 307SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_count, CTLTYPE_UINT|CTLFLAG_RD, 308 &cnt.v_inactive_count, 0, vcnt, "IU", ""); 309SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_count, CTLTYPE_UINT|CTLFLAG_RD, 310 &cnt.v_cache_count, 0, vcnt, "IU", ""); 311SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_min, CTLTYPE_UINT|CTLFLAG_RD, 312 &cnt.v_cache_min, 0, vcnt, "IU", ""); 313SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_max, CTLTYPE_UINT|CTLFLAG_RD, 314 &cnt.v_cache_max, 0, vcnt, "IU", ""); 315SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pageout_free_min, CTLTYPE_UINT|CTLFLAG_RD, 316 &cnt.v_pageout_free_min, 0, vcnt, "IU", ""); 317SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLTYPE_UINT|CTLFLAG_RD, 318 &cnt.v_interrupt_free_min, 0, vcnt, "IU", ""); 319SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forks, CTLTYPE_UINT|CTLFLAG_RD, 320 &cnt.v_forks, 0, vcnt, "IU", "Number of fork() calls"); 321SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforks, CTLTYPE_UINT|CTLFLAG_RD, 322 &cnt.v_vforks, 0, vcnt, "IU", "Number of vfork() calls"); 323SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforks, CTLTYPE_UINT|CTLFLAG_RD, 324 &cnt.v_rforks, 0, vcnt, "IU", "Number of rfork() calls"); 325SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreads, CTLTYPE_UINT|CTLFLAG_RD, 326 &cnt.v_kthreads, 0, vcnt, "IU", "Number of fork() calls by kernel"); 327SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forkpages, CTLTYPE_UINT|CTLFLAG_RD, 328 &cnt.v_forkpages, 0, vcnt, "IU", "VM pages affected by fork()"); 329SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforkpages, CTLTYPE_UINT|CTLFLAG_RD, 330 &cnt.v_vforkpages, 0, vcnt, "IU", "VM pages affected by vfork()"); 331SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforkpages, CTLTYPE_UINT|CTLFLAG_RD, 332 &cnt.v_rforkpages, 0, vcnt, "IU", "VM pages affected by rfork()"); 333SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreadpages, CTLTYPE_UINT|CTLFLAG_RD, 334 &cnt.v_kthreadpages, 0, vcnt, "IU", "VM pages affected by fork() by kernel"); 335 336SYSCTL_INT(_vm_stats_misc, OID_AUTO, 337 zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, ""); 338#if 0 339SYSCTL_INT(_vm_stats_misc, OID_AUTO, 340 page_mask, CTLFLAG_RD, &page_mask, 0, ""); 341SYSCTL_INT(_vm_stats_misc, OID_AUTO, 342 page_shift, CTLFLAG_RD, &page_shift, 0, ""); 343SYSCTL_INT(_vm_stats_misc, OID_AUTO, 344 first_page, CTLFLAG_RD, &first_page, 0, ""); 345SYSCTL_INT(_vm_stats_misc, OID_AUTO, 346 last_page, CTLFLAG_RD, &last_page, 0, ""); 347#endif
| 201 } 202 mtx_unlock(&vm_object_list_mtx); 203 totalp->t_free = cnt.v_free_count + cnt.v_cache_count; 204 return (sysctl_handle_opaque(oidp, totalp, sizeof total, req)); 205} 206 207/* 208 * vcnt() - accumulate statistics from all cpus and the global cnt 209 * structure. 210 * 211 * The vmmeter structure is now per-cpu as well as global. Those 212 * statistics which can be kept on a per-cpu basis (to avoid cache 213 * stalls between cpus) can be moved to the per-cpu vmmeter. Remaining 214 * statistics, such as v_free_reserved, are left in the global 215 * structure. 216 * 217 * (sysctl_oid *oidp, void *arg1, int arg2, struct sysctl_req *req) 218 */ 219static int 220vcnt(SYSCTL_HANDLER_ARGS) 221{ 222 int error = 0; 223 int count = *(int *)arg1; 224#ifdef SMP 225 int i; 226 int offset = (char *)arg1 - (char *)&cnt; 227 228 for (i = 0; i < mp_ncpus; ++i) { 229 struct pcpu *pcpu = pcpu_find(i); 230 count += *(int *)((char *)&pcpu->pc_cnt + offset); 231 } 232#else 233 int offset = (char *)arg1 - (char *)&cnt; 234 count += *(int *)((char *)PCPU_PTR(cnt) + offset); 235#endif 236 error = SYSCTL_OUT(req, &count, sizeof(int)); 237 return(error); 238} 239 240SYSCTL_PROC(_vm, VM_METER, vmmeter, CTLTYPE_OPAQUE|CTLFLAG_RD, 241 0, sizeof(struct vmtotal), vmtotal, "S,vmtotal", 242 "System virtual memory statistics"); 243SYSCTL_NODE(_vm, OID_AUTO, stats, CTLFLAG_RW, 0, "VM meter stats"); 244SYSCTL_NODE(_vm_stats, OID_AUTO, sys, CTLFLAG_RW, 0, "VM meter sys stats"); 245SYSCTL_NODE(_vm_stats, OID_AUTO, vm, CTLFLAG_RW, 0, "VM meter vm stats"); 246SYSCTL_NODE(_vm_stats, OID_AUTO, misc, CTLFLAG_RW, 0, "VM meter misc stats"); 247 248SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_swtch, CTLTYPE_UINT|CTLFLAG_RD, 249 &cnt.v_swtch, 0, vcnt, "IU", "Context switches"); 250SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_trap, CTLTYPE_UINT|CTLFLAG_RD, 251 &cnt.v_trap, 0, vcnt, "IU", "Traps"); 252SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_syscall, CTLTYPE_UINT|CTLFLAG_RD, 253 &cnt.v_syscall, 0, vcnt, "IU", "Syscalls"); 254SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_intr, CTLTYPE_UINT|CTLFLAG_RD, 255 &cnt.v_intr, 0, vcnt, "IU", "Hardware interrupts"); 256SYSCTL_PROC(_vm_stats_sys, OID_AUTO, v_soft, CTLTYPE_UINT|CTLFLAG_RD, 257 &cnt.v_soft, 0, vcnt, "IU", "Software interrupts"); 258SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vm_faults, CTLTYPE_UINT|CTLFLAG_RD, 259 &cnt.v_vm_faults, 0, vcnt, "IU", "VM faults"); 260SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_faults, CTLTYPE_UINT|CTLFLAG_RD, 261 &cnt.v_cow_faults, 0, vcnt, "IU", "COW faults"); 262SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cow_optim, CTLTYPE_UINT|CTLFLAG_RD, 263 &cnt.v_cow_optim, 0, vcnt, "IU", "Optimized COW faults"); 264SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_zfod, CTLTYPE_UINT|CTLFLAG_RD, 265 &cnt.v_zfod, 0, vcnt, "IU", "Zero fill"); 266SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_ozfod, CTLTYPE_UINT|CTLFLAG_RD, 267 &cnt.v_ozfod, 0, vcnt, "IU", "Optimized zero fill"); 268SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapin, CTLTYPE_UINT|CTLFLAG_RD, 269 &cnt.v_swapin, 0, vcnt, "IU", "Swapin operations"); 270SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swapout, CTLTYPE_UINT|CTLFLAG_RD, 271 &cnt.v_swapout, 0, vcnt, "IU", "Swapout operations"); 272SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsin, CTLTYPE_UINT|CTLFLAG_RD, 273 &cnt.v_swappgsin, 0, vcnt, "IU", "Swapin pages"); 274SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_swappgsout, CTLTYPE_UINT|CTLFLAG_RD, 275 &cnt.v_swappgsout, 0, vcnt, "IU", "Swapout pages"); 276SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodein, CTLTYPE_UINT|CTLFLAG_RD, 277 &cnt.v_vnodein, 0, vcnt, "IU", "Vnodein operations"); 278SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodeout, CTLTYPE_UINT|CTLFLAG_RD, 279 &cnt.v_vnodeout, 0, vcnt, "IU", "Vnodeout operations"); 280SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsin, CTLTYPE_UINT|CTLFLAG_RD, 281 &cnt.v_vnodepgsin, 0, vcnt, "IU", "Vnodein pages"); 282SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vnodepgsout, CTLTYPE_UINT|CTLFLAG_RD, 283 &cnt.v_vnodepgsout, 0, vcnt, "IU", "Vnodeout pages"); 284SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_intrans, CTLTYPE_UINT|CTLFLAG_RD, 285 &cnt.v_intrans, 0, vcnt, "IU", "In transit page blocking"); 286SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_reactivated, CTLTYPE_UINT|CTLFLAG_RD, 287 &cnt.v_reactivated, 0, vcnt, "IU", "Reactivated pages"); 288SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdwakeups, CTLTYPE_UINT|CTLFLAG_RD, 289 &cnt.v_pdwakeups, 0, vcnt, "IU", "Pagedaemon wakeups"); 290SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pdpages, CTLTYPE_UINT|CTLFLAG_RD, 291 &cnt.v_pdpages, 0, vcnt, "IU", "Pagedaemon page scans"); 292SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_dfree, CTLTYPE_UINT|CTLFLAG_RD, 293 &cnt.v_dfree, 0, vcnt, "IU", ""); 294SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pfree, CTLTYPE_UINT|CTLFLAG_RD, 295 &cnt.v_pfree, 0, vcnt, "IU", ""); 296SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_tfree, CTLTYPE_UINT|CTLFLAG_RD, 297 &cnt.v_tfree, 0, vcnt, "IU", ""); 298SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_size, CTLTYPE_UINT|CTLFLAG_RD, 299 &cnt.v_page_size, 0, vcnt, "IU", ""); 300SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_page_count, CTLTYPE_UINT|CTLFLAG_RD, 301 &cnt.v_page_count, 0, vcnt, "IU", ""); 302SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_reserved, CTLTYPE_UINT|CTLFLAG_RD, 303 &cnt.v_free_reserved, 0, vcnt, "IU", ""); 304SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_target, CTLTYPE_UINT|CTLFLAG_RD, 305 &cnt.v_free_target, 0, vcnt, "IU", ""); 306SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_min, CTLTYPE_UINT|CTLFLAG_RD, 307 &cnt.v_free_min, 0, vcnt, "IU", ""); 308SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_free_count, CTLTYPE_UINT|CTLFLAG_RD, 309 &cnt.v_free_count, 0, vcnt, "IU", ""); 310SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_wire_count, CTLTYPE_UINT|CTLFLAG_RD, 311 &cnt.v_wire_count, 0, vcnt, "IU", ""); 312SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_active_count, CTLTYPE_UINT|CTLFLAG_RD, 313 &cnt.v_active_count, 0, vcnt, "IU", ""); 314SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_target, CTLTYPE_UINT|CTLFLAG_RD, 315 &cnt.v_inactive_target, 0, vcnt, "IU", ""); 316SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_inactive_count, CTLTYPE_UINT|CTLFLAG_RD, 317 &cnt.v_inactive_count, 0, vcnt, "IU", ""); 318SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_count, CTLTYPE_UINT|CTLFLAG_RD, 319 &cnt.v_cache_count, 0, vcnt, "IU", ""); 320SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_min, CTLTYPE_UINT|CTLFLAG_RD, 321 &cnt.v_cache_min, 0, vcnt, "IU", ""); 322SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_cache_max, CTLTYPE_UINT|CTLFLAG_RD, 323 &cnt.v_cache_max, 0, vcnt, "IU", ""); 324SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_pageout_free_min, CTLTYPE_UINT|CTLFLAG_RD, 325 &cnt.v_pageout_free_min, 0, vcnt, "IU", ""); 326SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_interrupt_free_min, CTLTYPE_UINT|CTLFLAG_RD, 327 &cnt.v_interrupt_free_min, 0, vcnt, "IU", ""); 328SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forks, CTLTYPE_UINT|CTLFLAG_RD, 329 &cnt.v_forks, 0, vcnt, "IU", "Number of fork() calls"); 330SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforks, CTLTYPE_UINT|CTLFLAG_RD, 331 &cnt.v_vforks, 0, vcnt, "IU", "Number of vfork() calls"); 332SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforks, CTLTYPE_UINT|CTLFLAG_RD, 333 &cnt.v_rforks, 0, vcnt, "IU", "Number of rfork() calls"); 334SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreads, CTLTYPE_UINT|CTLFLAG_RD, 335 &cnt.v_kthreads, 0, vcnt, "IU", "Number of fork() calls by kernel"); 336SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_forkpages, CTLTYPE_UINT|CTLFLAG_RD, 337 &cnt.v_forkpages, 0, vcnt, "IU", "VM pages affected by fork()"); 338SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_vforkpages, CTLTYPE_UINT|CTLFLAG_RD, 339 &cnt.v_vforkpages, 0, vcnt, "IU", "VM pages affected by vfork()"); 340SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_rforkpages, CTLTYPE_UINT|CTLFLAG_RD, 341 &cnt.v_rforkpages, 0, vcnt, "IU", "VM pages affected by rfork()"); 342SYSCTL_PROC(_vm_stats_vm, OID_AUTO, v_kthreadpages, CTLTYPE_UINT|CTLFLAG_RD, 343 &cnt.v_kthreadpages, 0, vcnt, "IU", "VM pages affected by fork() by kernel"); 344 345SYSCTL_INT(_vm_stats_misc, OID_AUTO, 346 zero_page_count, CTLFLAG_RD, &vm_page_zero_count, 0, ""); 347#if 0 348SYSCTL_INT(_vm_stats_misc, OID_AUTO, 349 page_mask, CTLFLAG_RD, &page_mask, 0, ""); 350SYSCTL_INT(_vm_stats_misc, OID_AUTO, 351 page_shift, CTLFLAG_RD, &page_shift, 0, ""); 352SYSCTL_INT(_vm_stats_misc, OID_AUTO, 353 first_page, CTLFLAG_RD, &first_page, 0, ""); 354SYSCTL_INT(_vm_stats_misc, OID_AUTO, 355 last_page, CTLFLAG_RD, &last_page, 0, ""); 356#endif
|