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);