for disk i/o stats and in adjusting interrupt rate; also purge sun swap
stats flag -- they page now
SCCS-vsn: usr.bin/vmstat/vmstat.c 4.12
-static char *sccsid = "@(#)vmstat.c 4.11 (Berkeley) %G%";
+static char *sccsid = "@(#)vmstat.c 4.12 (Berkeley) %G%";
#endif
#include <stdio.h>
#endif
#include <stdio.h>
{ "_pgintime" },
#define X_HZ 12
{ "_hz" },
{ "_pgintime" },
#define X_HZ 12
{ "_hz" },
+#define X_PHZ 13
+ { "_phz" },
{ "_ubdinit" },
#endif
#ifdef sun
{ "_ubdinit" },
#endif
#ifdef sun
{ "_mbdinit" },
#endif
{ "" },
{ "_mbdinit" },
#endif
{ "" },
double stat1();
int firstfree, maxfree;
int hz;
double stat1();
int firstfree, maxfree;
int hz;
+int phz;
+int HZ;
+#ifdef sun
+#define INTS(x) (x)
+#endif
+#ifdef vax
+#define INTS(x) ((x) - (hz + phz))
+#endif
+
int deficit;
double etime;
int mf;
int deficit;
double etime;
int mf;
main(argc, argv)
int argc;
main(argc, argv)
int argc;
long t;
extern char _sobuf[];
long t;
extern char _sobuf[];
-#ifdef sun
- swflag = 1;
-#endif
setbuf(stdout, _sobuf);
nlist("/vmunix", nl);
if(nl[0].n_type == 0) {
setbuf(stdout, _sobuf);
nlist("/vmunix", nl);
if(nl[0].n_type == 0) {
argc--;
while (*++cp) switch (*cp) {
argc--;
while (*++cp) switch (*cp) {
- case 'S':
- swflag = 1 - swflag;
- break;
-
-
case 't':
dotimes();
exit(0);
case 't':
dotimes();
exit(0);
read(mf, &boottime, sizeof boottime);
lseek(mf, (long)nl[X_HZ].n_value, 0);
read(mf, &hz, sizeof hz);
read(mf, &boottime, sizeof boottime);
lseek(mf, (long)nl[X_HZ].n_value, 0);
read(mf, &hz, sizeof hz);
+ lseek(mf, (long)nl[X_PHZ].n_value, 0);
+ read(mf, &phz, sizeof phz);
+ HZ = phz ? phz : hz;
for (i = 0; i < DK_NDRIVE; i++) {
strcpy(dr_name[i], "xx");
dr_unit[i] = i;
for (i = 0; i < DK_NDRIVE; i++) {
strcpy(dr_name[i], "xx");
dr_unit[i] = i;
/* s1 = z; */
printf("\
procs memory page disk faults cpu\n\
/* s1 = z; */
printf("\
procs memory page disk faults cpu\n\
- r b w avm fre %5s pi po fr de sr %c%d %c%d %c%d %c%d in sy cs us sy id\n\
-", swflag ? "si so" : "re at",
+ r b w avm fre re at pi po fr de sr %c%d %c%d %c%d %c%d in sy cs us sy id\n",
dr_name[0][0], dr_unit[0], dr_name[1][0], dr_unit[1], dr_name[2][0], dr_unit[2], dr_name[3][0], dr_unit[3]);
loop:
lseek(mf, (long)nl[X_CPTIME].n_value, 0);
dr_name[0][0], dr_unit[0], dr_name[1][0], dr_unit[1], dr_name[2][0], dr_unit[2], dr_name[3][0], dr_unit[3]);
loop:
lseek(mf, (long)nl[X_CPTIME].n_value, 0);
printf("%2d%2d%2d", total.t_rq, total.t_dw+total.t_pw, total.t_sw);
#define pgtok(a) ((a)*NBPG/1024)
printf("%6d%5d", pgtok(total.t_avm), pgtok(total.t_free));
printf("%2d%2d%2d", total.t_rq, total.t_dw+total.t_pw, total.t_sw);
#define pgtok(a) ((a)*NBPG/1024)
printf("%6d%5d", pgtok(total.t_avm), pgtok(total.t_free));
- printf("%4d%3d",
- swflag ?
- sum.v_swpin-osum.v_swpin :
- (rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec))/nintv,
- swflag ?
- sum.v_swpout-osum.v_swpout :
- (rate.v_xsfrec+rate.v_xifrec)/nintv);
+ printf("%4d%3d", (rate.v_pgrec - (rate.v_xsfrec+rate.v_xifrec))/nintv,
+ (rate.v_xsfrec+rate.v_xifrec)/nintv);
printf("%4d", pgtok(rate.v_pgpgin)/nintv);
printf("%4d%4d%4d%4d", pgtok(rate.v_pgpgout)/nintv,
pgtok(rate.v_dfree)/nintv, pgtok(deficit), rate.v_scan/nintv);
printf("%4d", pgtok(rate.v_pgpgin)/nintv);
printf("%4d%4d%4d%4d", pgtok(rate.v_pgpgout)/nintv,
pgtok(rate.v_dfree)/nintv, pgtok(deficit), rate.v_scan/nintv);
for(i=0; i<4; i++)
stats(i);
for(i=0; i<4; i++)
stats(i);
-#ifdef sun
- printf("%4d%4d", (rate.v_intr/nintv), rate.v_syscall/nintv);
-#endif
-#ifdef vax
- printf("%4d%4d", (rate.v_intr/nintv) - hz, rate.v_syscall/nintv);
-#endif
- printf("%4d", rate.v_swtch/nintv);
+ printf("%4d%4d%4d", INTS(rate.v_intr/nintv), rate.v_syscall/nintv,
+ rate.v_swtch/nintv);
for(i=0; i<CPUSTATES; i++) {
float f = stat1(i);
if (i == 0) { /* US+NI */
for(i=0; i<CPUSTATES; i++) {
float f = stat1(i);
if (i == 0) { /* US+NI */