Module Name: src
Committed By: pooka
Date: Thu Apr 16 10:26:34 UTC 2009
Modified Files:
src/sys/rump/librump/rumpvfs: rumpblk.c
Log Message:
evcnt mmio window statistics
To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/rump/librump/rumpvfs/rumpblk.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/rump/librump/rumpvfs/rumpblk.c
diff -u src/sys/rump/librump/rumpvfs/rumpblk.c:1.17 src/sys/rump/librump/rumpvfs/rumpblk.c:1.18
--- src/sys/rump/librump/rumpvfs/rumpblk.c:1.17 Tue Apr 7 18:34:18 2009
+++ src/sys/rump/librump/rumpvfs/rumpblk.c Thu Apr 16 10:26:34 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rumpblk.c,v 1.17 2009/04/07 18:34:18 pooka Exp $ */
+/* $NetBSD: rumpblk.c,v 1.18 2009/04/16 10:26:34 pooka Exp $ */
/*
* Copyright (c) 2009 Antti Kantee. All Rights Reserved.
@@ -43,13 +43,14 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rumpblk.c,v 1.17 2009/04/07 18:34:18 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rumpblk.c,v 1.18 2009/04/16 10:26:34 pooka Exp $");
#include <sys/param.h>
#include <sys/buf.h>
#include <sys/conf.h>
#include <sys/condvar.h>
#include <sys/disklabel.h>
+#include <sys/evcnt.h>
#include <sys/fcntl.h>
#include <sys/kmem.h>
#include <sys/malloc.h>
@@ -100,6 +101,10 @@
struct disklabel rblk_dl;
} minors[RUMPBLK_SIZE];
+static struct evcnt memblk_ev_reqs;
+static struct evcnt memblk_ev_hits;
+static struct evcnt memblk_ev_busy;
+
dev_type_open(rumpblk_open);
dev_type_close(rumpblk_close);
dev_type_read(rumpblk_read);
@@ -136,6 +141,7 @@
struct blkwin *win;
mutex_enter(&rblk->rblk_memmtx);
+ memblk_ev_reqs.ev_count++;
retry:
/* search for window */
TAILQ_FOREACH(win, &rblk->rblk_lruq, win_lru) {
@@ -145,6 +151,7 @@
/* found? return */
if (win) {
+ memblk_ev_hits.ev_count++;
TAILQ_REMOVE(&rblk->rblk_lruq, win, win_lru);
goto good;
}
@@ -180,6 +187,8 @@
}
} else {
DPRINTF(("memwin wait\n"));
+ memblk_ev_busy.ev_count++;
+
rblk->rblk_waiting = true;
cv_wait(&rblk->rblk_memcv, &rblk->rblk_memmtx);
goto retry;
@@ -257,6 +266,13 @@
cv_init(&minors[i].rblk_memcv, "rblkmcv");
}
+ evcnt_attach_dynamic(&memblk_ev_reqs, EVCNT_TYPE_MISC, NULL,
+ "rumpblk", "memblk requests");
+ evcnt_attach_dynamic(&memblk_ev_hits, EVCNT_TYPE_MISC, NULL,
+ "rumpblk", "memblk window hits");
+ evcnt_attach_dynamic(&memblk_ev_busy, EVCNT_TYPE_MISC, NULL,
+ "rumpblk", "memblk all windows busy");
+
if (blkfail) {
return devsw_attach("rumpblk", &rumpblk_bdevsw_fail, &rumpblk,
&rumpblk_cdevsw, &rumpblk);