interrupt statistics
Peter Pentchev
roam at ringlet.net
Thu Nov 20 05:19:10 PST 2003
On Thu, Nov 20, 2003 at 05:49:45AM +0100, Erik Trulsson wrote:
> On Wed, Nov 19, 2003 at 11:13:03PM -0500, Mike Tancsa wrote:
> > Speaking of which, why is it some devices are not always present
> > (same with systat -vmstat)
> >
> > eg on one machine
> > v2% vmstat -i
> > interrupt total rate
> > stray irq7 2 0
> > hifn0 irq10 15680 0
> > fxp0 irq11 259067 2
> > mux irq15 378597 3
> > atkbd0 irq1 1 0
> > sio0 irq4 178 0
> > clk irq0 11466632 99
> > rtc irq8 14677398 127
> > Total 26797555 233
> >
> > yet on another,
> > offsite# vmstat -i
> > interrupt total rate
> > fxp0 irq11 29547828 61
> > mux irq15 453753 0
> > sio0 irq4 177 0
> > clk irq0 48204090 99
> > rtc irq8 61701185 127
> > Total 139907033 290
> > offsite#
> > offsite# dmesg | grep hifn
> > hifn0 mem 0xe9802000-0xe9802fff,0xe9801000-0xe9801fff irq 10 at device
> > 0.0 on pci1
> > hifn0: Hifn 7951, rev 0, 128KB sram, 193 sessions
> > offsite#
> >
> > How come the hifn does not show up ? I have noticed this with other
> > devices as well
>
> vmstat -i only displays those devices that have generated interrupts.
> I.e. if some device would have the total number of interrupts as 0, it
> will not be show by vmstat -i
> You will note that in your listings above, all the devices displayed
> have generated at least one interrupt.
This is easily fixed, e.g. by the attached. Note that I've only tested
the RELENG_4 patch, my 5.x machine is out of commission for the next few
days :( (and no, I couldn't test it on ref5 for obvious reasons related
to /dev/mem ;)
G'luck,
Peter
--
Peter Pentchev roam at ringlet.net roam at sbnd.net roam at FreeBSD.org
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
because I didn't think of a good beginning of it.
-------------- next part --------------
Index: src/usr.bin/vmstat/vmstat.8
===================================================================
RCS file: /home/ncvs/src/usr.bin/vmstat/vmstat.8,v
retrieving revision 1.25
diff -u -r1.25 vmstat.8
--- src/usr.bin/vmstat/vmstat.8 14 Apr 2003 07:22:25 -0000 1.25
+++ src/usr.bin/vmstat/vmstat.8 20 Nov 2003 12:23:59 -0000
@@ -41,7 +41,7 @@
.Sh SYNOPSIS
.Nm
.\" .Op Fl fimst
-.Op Fl fimsz
+.Op Fl afimsz
.Op Fl c Ar count
.Op Fl M Ar core
.Op Fl N Ar system
@@ -62,6 +62,10 @@
.Pp
The options are as follows:
.Bl -tag -width indent
+.It Fl a
+When used with
+.Fl i ,
+include statistics about interrupts that have never been generated.
.It Fl c
Repeat the display
.Ar count
Index: src/usr.bin/vmstat/vmstat.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/vmstat/vmstat.c,v
retrieving revision 1.69
diff -u -r1.69 vmstat.c
--- src/usr.bin/vmstat/vmstat.c 9 Nov 2003 20:39:56 -0000 1.69
+++ src/usr.bin/vmstat/vmstat.c 20 Nov 2003 12:24:28 -0000
@@ -129,6 +129,7 @@
struct vmmeter sum, osum;
int winlines = 20;
+int aflag = 0;
int nflag = 0;
kvm_t *kd;
@@ -174,8 +175,11 @@
memf = nlistf = NULL;
interval = reps = todo = 0;
maxshowdevs = 2;
- while ((c = getopt(argc, argv, "c:fiM:mN:n:p:stw:z")) != -1) {
+ while ((c = getopt(argc, argv, "ac:fiM:mN:n:p:stw:z")) != -1) {
switch (c) {
+ case 'a':
+ aflag++;
+ break;
case 'c':
reps = atoi(optarg);
break;
@@ -756,7 +760,7 @@
"rate");
inttotal = 0;
while (--nintr >= 0) {
- if (*intrcnt)
+ if (*intrcnt || (aflag && intrname[0]))
(void)printf("%-*s %20lu %10lu\n", istrnamlen, intrname,
*intrcnt, *intrcnt / uptime);
intrname += strlen(intrname) + 1;
@@ -829,7 +833,7 @@
usage()
{
(void)fprintf(stderr, "%s%s",
- "usage: vmstat [-imsz] [-c count] [-M core] [-N system] [-w wait]\n",
+ "usage: vmstat [-aimsz] [-c count] [-M core] [-N system] [-w wait]\n",
" [-n devs] [disks]\n");
exit(1);
}
-------------- next part --------------
Index: src/usr.bin/vmstat/vmstat.8
===================================================================
RCS file: /home/ncvs/src/usr.bin/vmstat/vmstat.8,v
retrieving revision 1.16.2.5
diff -u -r1.16.2.5 vmstat.8
--- src/usr.bin/vmstat/vmstat.8 16 Aug 2001 13:17:13 -0000 1.16.2.5
+++ src/usr.bin/vmstat/vmstat.8 20 Nov 2003 12:21:23 -0000
@@ -41,7 +41,7 @@
.Sh SYNOPSIS
.Nm
.\" .Op Fl fimst
-.Op Fl imsz
+.Op Fl aimsz
.Op Fl c Ar count
.Op Fl M Ar core
.Op Fl N Ar system
@@ -61,6 +61,10 @@
.Pp
The options are as follows:
.Bl -tag -width indent
+.It Fl a
+When used with
+.Fl i ,
+include statistics about interrupts that have never been generated.
.It Fl c
Repeat the display
.Ar count
Index: src/usr.bin/vmstat/vmstat.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/vmstat/vmstat.c,v
retrieving revision 1.38.2.5
diff -u -r1.38.2.5 vmstat.c
--- src/usr.bin/vmstat/vmstat.c 20 Sep 2003 19:10:01 -0000 1.38.2.5
+++ src/usr.bin/vmstat/vmstat.c 20 Nov 2003 12:22:59 -0000
@@ -135,6 +135,7 @@
struct vmmeter sum, osum;
int winlines = 20;
+int aflag = 0;
int nflag = 0;
kvm_t *kd;
@@ -169,8 +170,11 @@
memf = nlistf = NULL;
interval = reps = todo = 0;
maxshowdevs = 2;
- while ((c = getopt(argc, argv, "c:fiM:mN:n:p:stw:z")) != -1) {
+ while ((c = getopt(argc, argv, "ac:fiM:mN:n:p:stw:z")) != -1) {
switch (c) {
+ case 'a':
+ aflag++;
+ break;
case 'c':
reps = atoi(optarg);
break;
@@ -739,7 +743,7 @@
inttotal = 0;
nintr /= sizeof(long);
while (--nintr >= 0) {
- if (*intrcnt)
+ if (*intrcnt || (aflag && intrname[0]))
(void)printf("%-12s %20lu %10lu\n", intrname,
*intrcnt, *intrcnt / uptime);
intrname += strlen(intrname) + 1;
@@ -917,7 +921,7 @@
usage()
{
(void)fprintf(stderr, "%s%s",
- "usage: vmstat [-imsz] [-c count] [-M core] [-N system] [-w wait]\n",
+ "usage: vmstat [-aimsz] [-c count] [-M core] [-N system] [-w wait]\n",
" [-n devs] [disks]\n");
exit(1);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20031120/5216e9d9/attachment.bin
More information about the freebsd-hackers
mailing list