Index | Thread | Search

From:
Martin Pieuchot <mpi@grenadille.net>
Subject:
tweak uvm view in systat(1)
To:
tech@openbsd.org
Date:
Wed, 22 Jan 2025 11:33:50 +0100

Download raw body.

Thread
Diff below makes some room in the UVM view of systat(1) for upcoming
counters related to running the fault handler in parallel.

The following values, unused on OpenBSD, are no longer displayed:
- `anonmin', `vtextmin', `vnodemin', `anonminpct', `vtextminpct', `vnodeminpct'

The following value, currently displayed twice, is now printed only in the
"Swap Counters" section:
- `swpgonly'

The "Per-CPU Counters" is moved around to allow the "Fault Counters"
block to grow.  While here, also document this section.


===============
	Before:
	=======

   3 users Load 2.08 1.99 2.08 (1-21 of 31)        oliva.grenadille.ne 11:17:15
                                                                                
 ===== Page Counters        ===== Stats Counters       ===== Fault Counters     
 1887K npages               5109K FAULTS                     fltnoram           
642868 FREE                 5298K TRAPS                      fltnoanon          
326792 ACTIVE               1248K intrs                      fltnoamap          
271567 inactive             5475K swtch                      fltpgwait          
       paging               3072K softs                      fltpgrele          
 71540 wired               14008K SYSCALLS             1091K fltrelck           
 80414 zeropages                  pageins              1070K fltrelckok         
    34 percpucaches               pgswapin              995K FLTANGET           
                                  pgswapout                  fltanretry         
                             6563 forks               306939 FLTAMCOPY          
 ===== Pageout Params          14 forks_ppwait        177678 fltnamap           
 64427 freemin               4690 forks_sharevm        1070K FLTNOMAP           
 85902 freetarg             39105 pga_zerohit          1522K FLTLGET            
       inactarg             36250 pga_zeromiss         1092K fltget             
644277 wiredmax                                       958008 FLT_ANON           
       anonmin              ===== Daemon Counters      61851 flt_acow           
       vtextmin                   pdwoke               1397K FLT_OBJ            
       vnodemin                   pdrevs              105328 flt_prcopy         
       anonminpct                 pdswout              2609K FLT_PRZERO         
       vtextminpct                swpgonly                                      
       vnodeminpct                pdfreed              ===== Swap Counters      
                                  pdscans                  1 nswapdev           
 ===== Misc Counters              pdanscan             2028K swpages            
       fpswtch                    pdobscan                   swpginuse          
    21 KMAPENT                    pdreact                    swpgonly           
                                  pdbusy                     nswget             
 ===== Constants                  pdpageouts                                    
  4096 pagesize                   pdpending            ===== Per-CPU Counters   
  4095 pagemask                   pddeact              3984K PCPHIT             
    12 pageshift                                      562403 PCPMISS            



==============
	After:
	======

   3 users Load 2.35 2.21 2.14 (1-21 of 31)        oliva.grenadille.ne 11:23:57
                                                                                
 ===== Page Counters        ===== Stats Counters       ===== Fault Counters     
 1887K npages               5452K FAULTS                     fltnoram           
636129 FREE                 5649K TRAPS                      fltnoanon          
330906 ACTIVE               1284K intrs                      fltnoamap          
271515 inactive             5673K swtch                      fltpgwait          
       paging               3127K softs                      fltpgrele          
 74099 wired               14552K SYSCALLS             1174K fltrelck           
 79954 zeropages                  pageins              1152K fltrelckok         
    20 PERCPUCACHES               pgswapin             1023K FLTANGET           
                                  pgswapout                  fltanretry         
                             6726 forks               323942 FLTAMCOPY          
 ===== Pageout Params          14 forks_ppwait        186437 fltnamap           
 64427 freemin               4775 forks_sharevm        1140K FLTNOMAP           
 85902 freetarg             40035 pga_zerohit          1626K FLTLGET            
       inactarg             36298 pga_zeromiss         1174K fltget             
644277 wiredmax                                       983704 FLT_ANON           
                                                       63891 flt_acow           
                            ===== Daemon Counters      1499K FLT_OBJ            
 ===== Per-CPU Counters           pdwoke              106635 flt_prcopy         
 4277K PCPHIT                     pdrevs               2823K FLT_PRZERO         
604650 PCPMISS                    pdswout                                       
                                  pdfreed                                       
                                  pdscans                                       
 ===== Misc Counters              pdanscan                                      
       fpswtch                    pdobscan                                      
    21 KMAPENT                    pdreact              ===== Swap Counters      
                                  pdbusy                   1 nswapdev           
 ===== Constants                  pdpageouts           2028K swpages            
  4096 pagesize                   pdpending                  swpginuse          
  4095 pagemask                   pddeact                    swpgonly           
    12 pageshift                                             nswget             


Ok?

Index: systat.1
===================================================================
RCS file: /cvs/src/usr.bin/systat/systat.1,v
diff -u -p -r1.123 systat.1
--- systat.1	25 Sep 2024 06:13:01 -0000	1.123
+++ systat.1	22 Jan 2025 10:25:09 -0000
@@ -687,18 +687,12 @@ target number of free pages
 target number of inactive pages
 .It wiredmax
 maximum number of wired pages
-.It anonmin
-minimum threshold for anon pages
-.It vtextmin
-minimum threshold for vtext pages
-.It vnodemin
-minimum threshold for vnode pages
-.It anonminpct
-minimum percent anon pages
-.It vtextminpct
-minimum percent vtext pages
-.It vnodeminpct
-minimum percent vnode pages
+.Pp
+.It Per-CPU Counters:
+.It pcphit
+pages allocated from a per-CPU cache since boot
+.It pcpmiss
+times a per-CPU cache was empty when allocating a page
 .Pp
 .It Swap Counters:
 .It nswapdev
Index: uvm.c
===================================================================
RCS file: /cvs/src/usr.bin/systat/uvm.c,v
diff -u -p -r1.10 uvm.c
--- uvm.c	18 May 2024 09:02:34 -0000	1.10
+++ uvm.c	22 Jan 2025 10:11:17 -0000
@@ -103,51 +103,51 @@ struct uvmline uvmline[] = {
 	{ &uvmexp.wiredmax, &last_uvmexp.wiredmax, "wiredmax",
 	  NULL, NULL, NULL,
 	  &uvmexp.flt_anon, &last_uvmexp.flt_anon, "flt_anon" },
-	{ &uvmexp.anonmin, &last_uvmexp.anonmin, "anonmin",
-	  NULL, NULL, "Daemon Counters",
+	{ NULL, NULL, NULL,
+	  NULL, NULL, NULL,
 	  &uvmexp.flt_acow, &last_uvmexp.flt_acow, "flt_acow" },
-	{ &uvmexp.vtextmin, &last_uvmexp.vtextmin, "vtextmin",
-	  &uvmexp.pdwoke, &last_uvmexp.pdwoke, "pdwoke",
+	{ NULL, NULL, NULL,
+	  NULL, NULL, "Daemon Counters",
 	  &uvmexp.flt_obj, &last_uvmexp.flt_obj, "flt_obj" },
-	{ &uvmexp.vnodemin, &last_uvmexp.vnodemin, "vnodemin",
-	  &uvmexp.pdrevs, &last_uvmexp.pdrevs, "pdrevs",
+	{ NULL, NULL, "Per-CPU Counters",
+	  &uvmexp.pdwoke, &last_uvmexp.pdwoke, "pdwoke",
 	  &uvmexp.flt_prcopy, &last_uvmexp.flt_prcopy, "flt_prcopy" },
-	{ &uvmexp.anonminpct, &last_uvmexp.anonminpct, "anonminpct",
-	  &uvmexp.pdswout, &last_uvmexp.pdswout, "pdswout",
+	{ &uvmexp.pcphit, &last_uvmexp.pcphit, "pcphit",
+	  &uvmexp.pdrevs, &last_uvmexp.pdrevs, "pdrevs",
 	  &uvmexp.flt_przero, &last_uvmexp.flt_przero, "flt_przero" },
-	{ &uvmexp.vtextminpct, &last_uvmexp.vtextminpct, "vtextminpct",
-	  &uvmexp.swpgonly, &last_uvmexp.swpgonly, "swpgonly",
+	{ &uvmexp.pcpmiss, &last_uvmexp.pcpmiss, "pcpmiss",
+	  &uvmexp.pdswout, &last_uvmexp.pdswout, "pdswout",
 	  NULL, NULL, NULL },
-	{ &uvmexp.vnodeminpct, &last_uvmexp.vnodeminpct, "vnodeminpct",
+	{ NULL, NULL, NULL,
 	  &uvmexp.pdfreed, &last_uvmexp.pdfreed, "pdfreed",
-	  NULL, NULL, "Swap Counters" },
+	  NULL, NULL, NULL },
 	{ NULL, NULL, NULL,
 	  &uvmexp.pdscans, &last_uvmexp.pdscans, "pdscans",
-	  &uvmexp.nswapdev, &last_uvmexp.nswapdev, "nswapdev" },
+	  NULL, NULL, NULL },
 	{ NULL, NULL, "Misc Counters",
 	  &uvmexp.pdanscan, &last_uvmexp.pdanscan, "pdanscan",
-	  &uvmexp.swpages, &last_uvmexp.swpages, "swpages" },
+	  NULL, NULL, NULL },
 	{ &uvmexp.fpswtch, &last_uvmexp.fpswtch, "fpswtch",
 	  &uvmexp.pdobscan, &last_uvmexp.pdobscan, "pdobscan",
-	  &uvmexp.swpginuse, &last_uvmexp.swpginuse, "swpginuse" },
+	  NULL, NULL, NULL },
 	{ &uvmexp.kmapent, &last_uvmexp.kmapent, "kmapent",
 	  &uvmexp.pdreact, &last_uvmexp.pdreact, "pdreact",
-	  &uvmexp.swpgonly, &last_uvmexp.swpgonly, "swpgonly" },
+	  NULL, NULL, "Swap Counters" },
 	{ NULL, NULL, NULL,
 	  &uvmexp.pdbusy, &last_uvmexp.pdbusy, "pdbusy",
-	  &uvmexp.nswget, &last_uvmexp.nswget, "nswget" },
+	  &uvmexp.nswapdev, &last_uvmexp.nswapdev, "nswapdev" },
 	{ NULL, NULL, "Constants",
 	  &uvmexp.pdpageouts, &last_uvmexp.pdpageouts, "pdpageouts",
-	  NULL, NULL, NULL },
+	  &uvmexp.swpages, &last_uvmexp.swpages, "swpages" },
 	{ &uvmexp.pagesize, &last_uvmexp.pagesize, "pagesize",
 	  &uvmexp.pdpending, &last_uvmexp.pdpending, "pdpending",
-	  NULL, NULL, "Per-CPU Counters" },
+	  &uvmexp.swpginuse, &last_uvmexp.swpginuse, "swpginuse" },
 	{ &uvmexp.pagemask, &last_uvmexp.pagemask, "pagemask",
 	  &uvmexp.pddeact, &last_uvmexp.pddeact, "pddeact",
-	  &uvmexp.pcphit, &last_uvmexp.pcphit, "pcphit" },
+	  &uvmexp.swpgonly, &last_uvmexp.swpgonly, "swpgonly" },
 	{ &uvmexp.pageshift, &last_uvmexp.pageshift, "pageshift",
 	  NULL, NULL, NULL,
-	  &uvmexp.pcpmiss, &last_uvmexp.pcpmiss, "pcpmiss" }
+	  &uvmexp.nswget, &last_uvmexp.nswget, "nswget" }
 };
 
 field_def fields_uvm[] = {