Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
Re: tweak uvm view in systat(1)
To:
tech@openbsd.org
Date:
Wed, 22 Jan 2025 11:42:45 +0100

Download raw body.

Thread
On Wed, Jan 22, 2025 at 11:33:50AM +0100, Martin Pieuchot wrote:
> 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?

OK claudio@
 
> 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[] = {
> 
> 

-- 
:wq Claudio