summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzont <zont@FreeBSD.org>2013-01-28 12:54:53 +0000
committerzont <zont@FreeBSD.org>2013-01-28 12:54:53 +0000
commitb5edc96a845fd932d89c81b1732a89386ea911ad (patch)
treef0f1e93efdda800750720eb48a26324204721198
parent875b69507cd94ec1198d3d62a3f11b71b26cb756 (diff)
downloadFreeBSD-src-b5edc96a845fd932d89c81b1732a89386ea911ad.zip
FreeBSD-src-b5edc96a845fd932d89c81b1732a89386ea911ad.tar.gz
- Add system wide page faults requiring I/O counter.
Reviewed by: alc MFC after: 2 weeks
-rw-r--r--sys/sys/vmmeter.h1
-rw-r--r--sys/vm/vm_fault.c5
-rw-r--r--sys/vm/vm_meter.c1
3 files changed, 5 insertions, 2 deletions
diff --git a/sys/sys/vmmeter.h b/sys/sys/vmmeter.h
index 1a29ec1..59b430d 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 6865782..b79b3f5 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -939,9 +939,10 @@ vnode_locked:
* 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 b5bb0fa..05174e9 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");
OpenPOWER on IntegriCloud