Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/vmstat Use vm.uvmexp data as much as possible for vm...



details:   https://anonhg.NetBSD.org/src/rev/47e3966970b5
branches:  trunk
changeset: 796447:47e3966970b5
user:      joerg <joerg%NetBSD.org@localhost>
date:      Tue Jun 03 21:31:54 2014 +0000

description:
Use vm.uvmexp data as much as possible for vmstat -s.
Temporarily disable shadowing warning until the other users are cleaned
up.

diffstat:

 usr.bin/vmstat/Makefile |    4 +-
 usr.bin/vmstat/vmstat.c |  203 +++++++++++++++++++++++++++++++----------------
 2 files changed, 136 insertions(+), 71 deletions(-)

diffs (283 lines):

diff -r d4f13c19915c -r 47e3966970b5 usr.bin/vmstat/Makefile
--- a/usr.bin/vmstat/Makefile   Tue Jun 03 21:16:37 2014 +0000
+++ b/usr.bin/vmstat/Makefile   Tue Jun 03 21:31:54 2014 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.30 2011/08/17 13:54:31 christos Exp $
+#      $NetBSD: Makefile,v 1.31 2014/06/03 21:31:54 joerg Exp $
 #      @(#)Makefile    8.1 (Berkeley) 6/6/93
 
 .include <bsd.own.mk>
@@ -14,6 +14,6 @@
 BINMODE=2555
 
 CWARNFLAGS.clang+=     -Wno-format-extra-args
-COPTS.vmstat.c += -Wno-format-nonliteral
+COPTS.vmstat.c += -Wno-format-nonliteral -Wno-shadow
 
 .include <bsd.prog.mk>
diff -r d4f13c19915c -r 47e3966970b5 usr.bin/vmstat/vmstat.c
--- a/usr.bin/vmstat/vmstat.c   Tue Jun 03 21:16:37 2014 +0000
+++ b/usr.bin/vmstat/vmstat.c   Tue Jun 03 21:31:54 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: vmstat.c,v 1.194 2014/06/03 21:16:15 joerg Exp $ */
+/* $NetBSD: vmstat.c,v 1.195 2014/06/03 21:31:54 joerg Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000, 2001, 2007 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
 #if 0
 static char sccsid[] = "@(#)vmstat.c   8.2 (Berkeley) 3/1/95";
 #else
-__RCSID("$NetBSD: vmstat.c,v 1.194 2014/06/03 21:16:15 joerg Exp $");
+__RCSID("$NetBSD: vmstat.c,v 1.195 2014/06/03 21:31:54 joerg Exp $");
 #endif
 #endif /* not lint */
 
@@ -850,7 +850,7 @@
 {
        struct nchstats_sysctl nch_stats;
        uint64_t nchtotal;
-       struct uvmexp_sysctl uvmexp2;
+       struct uvmexp_sysctl uvmexp;
        size_t ssize;
        int active_kernel;
        struct cpu_counter cc;
@@ -860,47 +860,112 @@
         * are now estimated by the kernel and sadly
         * can not easily be dug out of a crash dump.
         */
-       ssize = sizeof(uvmexp2);
-       memset(&uvmexp2, 0, ssize);
+       ssize = sizeof(uvmexp);
+       memset(&uvmexp, 0, ssize);
        active_kernel = (memf == NULL);
        if (active_kernel) {
                /* only on active kernel */
-               if (sysctl(uvmexp2_mib, __arraycount(uvmexp2_mib), &uvmexp2,
+               if (sysctl(uvmexp2_mib, __arraycount(uvmexp2_mib), &uvmexp,
                    &ssize, NULL, 0) == -1)
                        warn("sysctl vm.uvmexp2 failed");
+       } else {
+               struct uvmexp uvmexp_kernel;
+               kread(namelist, X_UVMEXP, &uvmexp_kernel, sizeof(uvmexp_kernel));
+#define COPY(field) uvmexp.field = uvmexp_kernel.field
+               COPY(pagesize);
+               COPY(ncolors);
+               COPY(npages);
+               COPY(free);
+               COPY(paging);
+               COPY(wired);
+               COPY(zeropages);
+               COPY(reserve_pagedaemon);
+               COPY(reserve_kernel);
+               COPY(anonpages);
+               COPY(filepages);
+               COPY(execpages);
+               COPY(freemin);
+               COPY(freetarg);
+               COPY(wiredmax);
+               COPY(nswapdev);
+               COPY(swpages);
+               COPY(swpginuse);
+               COPY(nswget);
+               COPY(pageins);
+               COPY(pdpageouts);
+               COPY(pgswapin);
+               COPY(pgswapout);
+               COPY(forks);
+               COPY(forks_ppwait);
+               COPY(forks_sharevm);
+               COPY(pga_zerohit);
+               COPY(pga_zeromiss);
+               COPY(zeroaborts);
+               COPY(colorhit);
+               COPY(colormiss);
+               COPY(cpuhit);
+               COPY(cpumiss);
+               COPY(fltnoram);
+               COPY(fltnoanon);
+               COPY(fltpgwait);
+               COPY(fltpgrele);
+               COPY(fltrelck);
+               COPY(fltrelckok);
+               COPY(fltanget);
+               COPY(fltanretry);
+               COPY(fltamcopy);
+               COPY(fltamcopy);
+               COPY(fltnomap);
+               COPY(fltlget);
+               COPY(fltget);
+               COPY(flt_anon);
+               COPY(flt_acow);
+               COPY(flt_obj);
+               COPY(flt_prcopy);
+               COPY(flt_przero);
+               COPY(pdwoke);
+               COPY(pdrevs);
+               COPY(pdfreed);
+               COPY(pdscans);
+               COPY(pdanscan);
+               COPY(pdobscan);
+               COPY(pdreact);
+               COPY(pdbusy);
+               COPY(pdpending);
+               COPY(pddeact);
+#undef COPY
        }
 
-       kread(namelist, X_UVMEXP, &uvmexp, sizeof(uvmexp));
 
-       (void)printf("%9u bytes per page\n", uvmexp.pagesize);
+       (void)printf("%9" PRIu64 " bytes per page\n", uvmexp.pagesize);
 
-       (void)printf("%9u page color%s\n",
+       (void)printf("%9" PRIu64 " page color%s\n",
            uvmexp.ncolors, uvmexp.ncolors == 1 ? "" : "s");
 
-       (void)printf("%9u pages managed\n", uvmexp.npages);
-       (void)printf("%9u pages free\n", uvmexp.free);
+       (void)printf("%9" PRIu64 " pages managed\n", uvmexp.npages);
+       (void)printf("%9" PRIu64 " pages free\n", uvmexp.free);
        if (active_kernel) {
-               (void)printf("%9" PRIu64 " pages active\n", uvmexp2.active);
-               (void)printf("%9" PRIu64 " pages inactive\n", uvmexp2.inactive);
+               (void)printf("%9" PRIu64 " pages active\n", uvmexp.active);
+               (void)printf("%9" PRIu64 " pages inactive\n", uvmexp.inactive);
        }
-       (void)printf("%9u pages paging\n", uvmexp.paging);
-       (void)printf("%9u pages wired\n", uvmexp.wired);
-       (void)printf("%9u zero pages\n", uvmexp.zeropages);
-       (void)printf("%9u reserve pagedaemon pages\n",
+       (void)printf("%9" PRIu64 " pages paging\n", uvmexp.paging);
+       (void)printf("%9" PRIu64 " pages wired\n", uvmexp.wired);
+       (void)printf("%9" PRIu64 " zero pages\n", uvmexp.zeropages);
+       (void)printf("%9" PRIu64 " reserve pagedaemon pages\n",
            uvmexp.reserve_pagedaemon);
-       (void)printf("%9u reserve kernel pages\n", uvmexp.reserve_kernel);
-       (void)printf("%9u anonymous pages\n", uvmexp.anonpages);
-       (void)printf("%9u cached file pages\n", uvmexp.filepages);
-       (void)printf("%9u cached executable pages\n", uvmexp.execpages);
+       (void)printf("%9" PRIu64 " reserve kernel pages\n", uvmexp.reserve_kernel);
+       (void)printf("%9" PRIu64 " anonymous pages\n", uvmexp.anonpages);
+       (void)printf("%9" PRIu64 " cached file pages\n", uvmexp.filepages);
+       (void)printf("%9" PRIu64 " cached executable pages\n", uvmexp.execpages);
 
-       (void)printf("%9u minimum free pages\n", uvmexp.freemin);
-       (void)printf("%9u target free pages\n", uvmexp.freetarg);
-       (void)printf("%9u maximum wired pages\n", uvmexp.wiredmax);
+       (void)printf("%9" PRIu64 " minimum free pages\n", uvmexp.freemin);
+       (void)printf("%9" PRIu64 " target free pages\n", uvmexp.freetarg);
+       (void)printf("%9" PRIu64 " maximum wired pages\n", uvmexp.wiredmax);
 
-       (void)printf("%9u swap devices\n", uvmexp.nswapdev);
-       (void)printf("%9u swap pages\n", uvmexp.swpages);
-       (void)printf("%9u swap pages in use\n", uvmexp.swpginuse);
-       (void)printf("%9u swap allocations\n", uvmexp.nswget);
+       (void)printf("%9" PRIu64 " swap devices\n", uvmexp.nswapdev);
+       (void)printf("%9" PRIu64 " swap pages\n", uvmexp.swpages);
+       (void)printf("%9" PRIu64 " swap pages in use\n", uvmexp.swpginuse);
+       (void)printf("%9" PRIu64 " swap allocations\n", uvmexp.nswget);
 
        kread(namelist, X_CPU_INFOS, &cpu_infos, sizeof(cpu_infos));
        cpucounters(&cc);
@@ -911,59 +976,59 @@
        (void)printf("%9" PRIu64 " CPU context switches\n", cc.nswtch);
        (void)printf("%9" PRIu64 " software interrupts\n", cc.nsoft);
        (void)printf("%9" PRIu64 " system calls\n", cc.nsyscall);
-       (void)printf("%9u pagein requests\n", uvmexp.pageins);
-       (void)printf("%9u pageout requests\n", uvmexp.pdpageouts);
-       (void)printf("%9u pages swapped in\n", uvmexp.pgswapin);
-       (void)printf("%9u pages swapped out\n", uvmexp.pgswapout);
-       (void)printf("%9u forks total\n", uvmexp.forks);
-       (void)printf("%9u forks blocked parent\n", uvmexp.forks_ppwait);
-       (void)printf("%9u forks shared address space with parent\n",
+       (void)printf("%9" PRIu64 " pagein requests\n", uvmexp.pageins);
+       (void)printf("%9" PRIu64 " pageout requests\n", uvmexp.pdpageouts);
+       (void)printf("%9" PRIu64 " pages swapped in\n", uvmexp.pgswapin);
+       (void)printf("%9" PRIu64 " pages swapped out\n", uvmexp.pgswapout);
+       (void)printf("%9" PRIu64 " forks total\n", uvmexp.forks);
+       (void)printf("%9" PRIu64 " forks blocked parent\n", uvmexp.forks_ppwait);
+       (void)printf("%9" PRIu64 " forks shared address space with parent\n",
            uvmexp.forks_sharevm);
-       (void)printf("%9u pagealloc zero wanted and avail\n",
+       (void)printf("%9" PRIu64 " pagealloc zero wanted and avail\n",
            uvmexp.pga_zerohit);
-       (void)printf("%9u pagealloc zero wanted and not avail\n",
+       (void)printf("%9" PRIu64 " pagealloc zero wanted and not avail\n",
            uvmexp.pga_zeromiss);
-       (void)printf("%9u aborts of idle page zeroing\n",
+       (void)printf("%9" PRIu64 " aborts of idle page zeroing\n",
            uvmexp.zeroaborts);
-       (void)printf("%9u pagealloc desired color avail\n",
+       (void)printf("%9" PRIu64 " pagealloc desired color avail\n",
            uvmexp.colorhit);
-       (void)printf("%9u pagealloc desired color not avail\n",
+       (void)printf("%9" PRIu64 " pagealloc desired color not avail\n",
            uvmexp.colormiss);
-       (void)printf("%9u pagealloc local cpu avail\n",
+       (void)printf("%9" PRIu64 " pagealloc local cpu avail\n",
            uvmexp.cpuhit);
-       (void)printf("%9u pagealloc local cpu not avail\n",
+       (void)printf("%9" PRIu64 " pagealloc local cpu not avail\n",
            uvmexp.cpumiss);
 
-       (void)printf("%9u faults with no memory\n", uvmexp.fltnoram);
-       (void)printf("%9u faults with no anons\n", uvmexp.fltnoanon);
-       (void)printf("%9u faults had to wait on pages\n", uvmexp.fltpgwait);
-       (void)printf("%9u faults found released page\n", uvmexp.fltpgrele);
-       (void)printf("%9u faults relock (%u ok)\n", uvmexp.fltrelck,
+       (void)printf("%9" PRIu64 " faults with no memory\n", uvmexp.fltnoram);
+       (void)printf("%9" PRIu64 " faults with no anons\n", uvmexp.fltnoanon);
+       (void)printf("%9" PRIu64 " faults had to wait on pages\n", uvmexp.fltpgwait);
+       (void)printf("%9" PRIu64 " faults found released page\n", uvmexp.fltpgrele);
+       (void)printf("%9" PRIu64 " faults relock (%" PRIu64 " ok)\n", uvmexp.fltrelck,
            uvmexp.fltrelckok);
-       (void)printf("%9u anon page faults\n", uvmexp.fltanget);
-       (void)printf("%9u anon retry faults\n", uvmexp.fltanretry);
-       (void)printf("%9u amap copy faults\n", uvmexp.fltamcopy);
-       (void)printf("%9u neighbour anon page faults\n", uvmexp.fltnamap);
-       (void)printf("%9u neighbour object page faults\n", uvmexp.fltnomap);
-       (void)printf("%9u locked pager get faults\n", uvmexp.fltlget);
-       (void)printf("%9u unlocked pager get faults\n", uvmexp.fltget);
-       (void)printf("%9u anon faults\n", uvmexp.flt_anon);
-       (void)printf("%9u anon copy on write faults\n", uvmexp.flt_acow);
-       (void)printf("%9u object faults\n", uvmexp.flt_obj);
-       (void)printf("%9u promote copy faults\n", uvmexp.flt_prcopy);
-       (void)printf("%9u promote zero fill faults\n", uvmexp.flt_przero);
+       (void)printf("%9" PRIu64 " anon page faults\n", uvmexp.fltanget);
+       (void)printf("%9" PRIu64 " anon retry faults\n", uvmexp.fltanretry);
+       (void)printf("%9" PRIu64 " amap copy faults\n", uvmexp.fltamcopy);
+       (void)printf("%9" PRIu64 " neighbour anon page faults\n", uvmexp.fltnamap);
+       (void)printf("%9" PRIu64 " neighbour object page faults\n", uvmexp.fltnomap);
+       (void)printf("%9" PRIu64 " locked pager get faults\n", uvmexp.fltlget);
+       (void)printf("%9" PRIu64 " unlocked pager get faults\n", uvmexp.fltget);
+       (void)printf("%9" PRIu64 " anon faults\n", uvmexp.flt_anon);
+       (void)printf("%9" PRIu64 " anon copy on write faults\n", uvmexp.flt_acow);
+       (void)printf("%9" PRIu64 " object faults\n", uvmexp.flt_obj);
+       (void)printf("%9" PRIu64 " promote copy faults\n", uvmexp.flt_prcopy);
+       (void)printf("%9" PRIu64 " promote zero fill faults\n", uvmexp.flt_przero);
 
-       (void)printf("%9u times daemon wokeup\n",uvmexp.pdwoke);
-       (void)printf("%9u revolutions of the clock hand\n", uvmexp.pdrevs);
-       (void)printf("%9u pages freed by daemon\n", uvmexp.pdfreed);
-       (void)printf("%9u pages scanned by daemon\n", uvmexp.pdscans);
-       (void)printf("%9u anonymous pages scanned by daemon\n",
+       (void)printf("%9" PRIu64 " times daemon wokeup\n",uvmexp.pdwoke);
+       (void)printf("%9" PRIu64 " revolutions of the clock hand\n", uvmexp.pdrevs);
+       (void)printf("%9" PRIu64 " pages freed by daemon\n", uvmexp.pdfreed);
+       (void)printf("%9" PRIu64 " pages scanned by daemon\n", uvmexp.pdscans);
+       (void)printf("%9" PRIu64 " anonymous pages scanned by daemon\n",
            uvmexp.pdanscan);
-       (void)printf("%9u object pages scanned by daemon\n", uvmexp.pdobscan);
-       (void)printf("%9u pages reactivated\n", uvmexp.pdreact);
-       (void)printf("%9u pages found busy by daemon\n", uvmexp.pdbusy);
-       (void)printf("%9u total pending pageouts\n", uvmexp.pdpending);
-       (void)printf("%9u pages deactivated\n", uvmexp.pddeact);
+       (void)printf("%9" PRIu64 " object pages scanned by daemon\n", uvmexp.pdobscan);
+       (void)printf("%9" PRIu64 " pages reactivated\n", uvmexp.pdreact);
+       (void)printf("%9" PRIu64 " pages found busy by daemon\n", uvmexp.pdbusy);
+       (void)printf("%9" PRIu64 " total pending pageouts\n", uvmexp.pdpending);
+       (void)printf("%9" PRIu64 " pages deactivated\n", uvmexp.pddeact);
 
        if (active_kernel) {
                ssize = sizeof(nch_stats);



Home | Main Index | Thread Index | Old Index