From: Kirk McKusick Date: Thu, 1 Oct 1992 06:17:04 +0000 (-0800) Subject: ufs_bufstats becomes vfs_bufstats X-Git-Tag: BSD-4_4-Snapshot-Development~4711 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/aa95c6fcad6f5b04e67f49bf8fa0e58dc691d681 ufs_bufstats becomes vfs_bufstats SCCS-vsn: sys/kern/vfs_bio.c 7.53 SCCS-vsn: sys/kern/vfs_cluster.c 7.53 --- diff --git a/usr/src/sys/kern/vfs_bio.c b/usr/src/sys/kern/vfs_bio.c index de4854db39..683afaf71b 100644 --- a/usr/src/sys/kern/vfs_bio.c +++ b/usr/src/sys/kern/vfs_bio.c @@ -633,3 +633,36 @@ biodone(bp) wakeup((caddr_t)bp); } } + +#ifdef DIAGNOSTIC +/* + * Print out statistics on the current allocation of the buffer pool. + * Can be enabled to print out on every ``sync'' by setting "syncprt" + * above. + */ +void +vfs_bufstats() +{ + int s, i, j, count; + register struct buf *dp, *bp; + int counts[MAXBSIZE/CLBYTES+1]; + static char *bname[BQUEUES] = { "LOCKED", "LRU", "AGE", "EMPTY" }; + + for (dp = bfreelist, i = 0; dp < &bfreelist[BQUEUES]; dp++, i++) { + count = 0; + for (j = 0; j <= MAXBSIZE/CLBYTES; j++) + counts[j] = 0; + s = splbio(); + for (bp = dp->av_forw; dp != bp; bp = bp->av_forw) { + counts[bp->b_bufsize/CLBYTES]++; + count++; + } + splx(s); + printf("%s: total-%d", bname[i], count); + for (j = 0; j <= MAXBSIZE/CLBYTES; j++) + if (counts[j] != 0) + printf(", %d-%d", j * CLBYTES, counts[j]); + printf("\n"); + } +} +#endif /* DIAGNOSTIC */ diff --git a/usr/src/sys/kern/vfs_cluster.c b/usr/src/sys/kern/vfs_cluster.c index 0ec3a1b0ff..81356d2db0 100644 --- a/usr/src/sys/kern/vfs_cluster.c +++ b/usr/src/sys/kern/vfs_cluster.c @@ -633,3 +633,36 @@ biodone(bp) wakeup((caddr_t)bp); } } + +#ifdef DIAGNOSTIC +/* + * Print out statistics on the current allocation of the buffer pool. + * Can be enabled to print out on every ``sync'' by setting "syncprt" + * above. + */ +void +vfs_bufstats() +{ + int s, i, j, count; + register struct buf *dp, *bp; + int counts[MAXBSIZE/CLBYTES+1]; + static char *bname[BQUEUES] = { "LOCKED", "LRU", "AGE", "EMPTY" }; + + for (dp = bfreelist, i = 0; dp < &bfreelist[BQUEUES]; dp++, i++) { + count = 0; + for (j = 0; j <= MAXBSIZE/CLBYTES; j++) + counts[j] = 0; + s = splbio(); + for (bp = dp->av_forw; dp != bp; bp = bp->av_forw) { + counts[bp->b_bufsize/CLBYTES]++; + count++; + } + splx(s); + printf("%s: total-%d", bname[i], count); + for (j = 0; j <= MAXBSIZE/CLBYTES; j++) + if (counts[j] != 0) + printf(", %d-%d", j * CLBYTES, counts[j]); + printf("\n"); + } +} +#endif /* DIAGNOSTIC */