fallback to vm.stats.vm for page_{in,out}
This commit is contained in:
parent
28c04122c7
commit
e35bc28775
|
@ -264,12 +264,76 @@ static int sigar_vmstat(sigar_t *sigar, vm_statistics_data_t *vmstat)
|
||||||
static int sigar_vmstat(sigar_t *sigar, struct vmmeter *vmstat)
|
static int sigar_vmstat(sigar_t *sigar, struct vmmeter *vmstat)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
|
size_t size = sizeof(unsigned int);
|
||||||
|
|
||||||
status = kread(sigar, vmstat, sizeof(*vmstat),
|
status = kread(sigar, vmstat, sizeof(*vmstat),
|
||||||
sigar->koffsets[KOFFSET_VMMETER]);
|
sigar->koffsets[KOFFSET_VMMETER]);
|
||||||
|
|
||||||
/* XXX sysctlbyname("vm.stats.vm.*", ...) */
|
if (status == SIGAR_OK) {
|
||||||
return status;
|
return SIGAR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIGAR_ZERO(vmstat);
|
||||||
|
|
||||||
|
/* derived from src/usr.bin/vmstat/vmstat.c */
|
||||||
|
/* only collect the ones we actually use */
|
||||||
|
#define GET_VM_STATS(cat, name, used) \
|
||||||
|
if (used) sysctlbyname("vm.stats." #cat "." #name, &vmstat->name, &size, NULL, 0)
|
||||||
|
|
||||||
|
/* sys */
|
||||||
|
GET_VM_STATS(sys, v_swtch, 0);
|
||||||
|
GET_VM_STATS(sys, v_trap, 0);
|
||||||
|
GET_VM_STATS(sys, v_syscall, 0);
|
||||||
|
GET_VM_STATS(sys, v_intr, 0);
|
||||||
|
GET_VM_STATS(sys, v_soft, 0);
|
||||||
|
|
||||||
|
/* vm */
|
||||||
|
GET_VM_STATS(vm, v_vm_faults, 0);
|
||||||
|
GET_VM_STATS(vm, v_cow_faults, 0);
|
||||||
|
GET_VM_STATS(vm, v_cow_optim, 0);
|
||||||
|
GET_VM_STATS(vm, v_zfod, 0);
|
||||||
|
GET_VM_STATS(vm, v_ozfod, 0);
|
||||||
|
GET_VM_STATS(vm, v_swapin, 1);
|
||||||
|
GET_VM_STATS(vm, v_swapout, 1);
|
||||||
|
GET_VM_STATS(vm, v_swappgsin, 0);
|
||||||
|
GET_VM_STATS(vm, v_swappgsout, 0);
|
||||||
|
GET_VM_STATS(vm, v_vnodein, 1);
|
||||||
|
GET_VM_STATS(vm, v_vnodeout, 1);
|
||||||
|
GET_VM_STATS(vm, v_vnodepgsin, 0);
|
||||||
|
GET_VM_STATS(vm, v_vnodepgsout, 0);
|
||||||
|
GET_VM_STATS(vm, v_intrans, 0);
|
||||||
|
GET_VM_STATS(vm, v_reactivated, 0);
|
||||||
|
GET_VM_STATS(vm, v_pdwakeups, 0);
|
||||||
|
GET_VM_STATS(vm, v_pdpages, 0);
|
||||||
|
GET_VM_STATS(vm, v_dfree, 0);
|
||||||
|
GET_VM_STATS(vm, v_pfree, 0);
|
||||||
|
GET_VM_STATS(vm, v_tfree, 0);
|
||||||
|
GET_VM_STATS(vm, v_page_size, 0);
|
||||||
|
GET_VM_STATS(vm, v_page_count, 0);
|
||||||
|
GET_VM_STATS(vm, v_free_reserved, 0);
|
||||||
|
GET_VM_STATS(vm, v_free_target, 0);
|
||||||
|
GET_VM_STATS(vm, v_free_min, 0);
|
||||||
|
GET_VM_STATS(vm, v_free_count, 1);
|
||||||
|
GET_VM_STATS(vm, v_wire_count, 0);
|
||||||
|
GET_VM_STATS(vm, v_active_count, 0);
|
||||||
|
GET_VM_STATS(vm, v_inactive_target, 0);
|
||||||
|
GET_VM_STATS(vm, v_inactive_count, 0);
|
||||||
|
GET_VM_STATS(vm, v_cache_count, 0);
|
||||||
|
GET_VM_STATS(vm, v_cache_min, 0);
|
||||||
|
GET_VM_STATS(vm, v_cache_max, 0);
|
||||||
|
GET_VM_STATS(vm, v_pageout_free_min, 0);
|
||||||
|
GET_VM_STATS(vm, v_interrupt_free_min, 0);
|
||||||
|
GET_VM_STATS(vm, v_forks, 0);
|
||||||
|
GET_VM_STATS(vm, v_vforks, 0);
|
||||||
|
GET_VM_STATS(vm, v_rforks, 0);
|
||||||
|
GET_VM_STATS(vm, v_kthreads, 0);
|
||||||
|
GET_VM_STATS(vm, v_forkpages, 0);
|
||||||
|
GET_VM_STATS(vm, v_vforkpages, 0);
|
||||||
|
GET_VM_STATS(vm, v_rforkpages, 0);
|
||||||
|
GET_VM_STATS(vm, v_kthreadpages, 0);
|
||||||
|
#undef GET_VM_STATS
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue