From: Claudio Jeker Subject: Re: tweak uvm view in systat(1) To: tech@openbsd.org Date: Wed, 22 Jan 2025 11:42:45 +0100 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