From b3a01bdf1f114c3ccd66f8c267c319908965ad2d Mon Sep 17 00:00:00 2001 From: Andrey Zonov Date: Mon, 28 Jan 2013 12:54:53 +0000 Subject: [PATCH] - Add system wide page faults requiring I/O counter. Reviewed by: alc MFC after: 2 weeks --- sys/sys/vmmeter.h | 1 + sys/vm/vm_fault.c | 5 +++-- sys/vm/vm_meter.c | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/sys/vmmeter.h b/sys/sys/vmmeter.h index 1a29ec185382..59b430d53206 100644 --- a/sys/sys/vmmeter.h +++ b/sys/sys/vmmeter.h @@ -61,6 +61,7 @@ struct vmmeter { * Virtual memory activity. */ u_int v_vm_faults; /* (p) address memory faults */ + u_int v_io_faults; /* (p) page faults requiring I/O */ u_int v_cow_faults; /* (p) copy-on-writes faults */ u_int v_cow_optim; /* (p) optimized copy-on-writes faults */ u_int v_zfod; /* (p) pages zero filled on demand */ diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 6865782a5eac..b79b3f5e7b78 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -939,9 +939,10 @@ RetryFault:; * Unlock everything, and return */ unlock_and_deallocate(&fs); - if (hardfault) + if (hardfault) { + PCPU_INC(cnt.v_io_faults); curthread->td_ru.ru_majflt++; - else + } else curthread->td_ru.ru_minflt++; return (KERN_SUCCESS); diff --git a/sys/vm/vm_meter.c b/sys/vm/vm_meter.c index b5bb0fa9580a..05174e987867 100644 --- a/sys/vm/vm_meter.c +++ b/sys/vm/vm_meter.c @@ -283,6 +283,7 @@ VM_STATS_SYS(v_syscall, "System calls"); VM_STATS_SYS(v_intr, "Device interrupts"); VM_STATS_SYS(v_soft, "Software interrupts"); VM_STATS_VM(v_vm_faults, "Address memory faults"); +VM_STATS_VM(v_io_faults, "Page faults requiring I/O"); VM_STATS_VM(v_cow_faults, "Copy-on-write faults"); VM_STATS_VM(v_cow_optim, "Optimized COW faults"); VM_STATS_VM(v_zfod, "Pages zero-filled on demand");