Subject: Re: bin/29213: sysstat(1) vmstat cannot display large memory values
To: None <gnats-admin@NetBSD.org, netbsd-bugs@NetBSD.org>
From: Nicolas Joly <njoly@pasteur.fr>
List: netbsd-bugs
Date: 02/03/2005 15:03:23
--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Thu, Feb 03, 2005 at 01:23:00PM +0000, Nicolas Joly wrote:
> >Number: 29213
> >Category: bin
> >Synopsis: sysstat(1) vmstat cannot display large memory values
> >Confidential: no
> >Severity: non-critical
> >Priority: low
> >Responsible: bin-bug-people
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Thu Feb 03 13:23:00 +0000 2005
> >Originator: Nicolas Joly
> >Release: NetBSD 2.99.15
> >Organization:
> Institut Pasteur, Paris.
> >Environment:
> System: NetBSD lanfeust.sis.pasteur.fr 2.99.15 NetBSD 2.99.15 (LANFEUST) #0: Tue Jan 25 18:26:25 CET 2005 njoly@lanfeust.sis.pasteur.fr:/local/src/NetBSD/obj/amd64/sys/arch/amd64/compile/LANFEUST amd64
> Architecture: x86_64
> Machine: amd64
> >Description:
> On systems with memory + swap exceed 10GB, `sysstat vmstat' command is not
> able to display correctly some memory values. The memory columns are currently
> limited to 7 chars :
>
> memory totals (in kB) 3570 Interrupts fksvm
> real virtual free 100 cpu0 softclock pwait
> Active 31652 31652 6962188 6 cpu0 softnet relck
> All 596140 596140 ******* 100 cpu0 timer rlkok
>
> Bumping columns to 9 characters (8 numbers + 1 separator for easier reading)
> gives a better result :
>
> memory totals (in kB) 4619 Interrupts fksvm
> real virtual free 100 cpu0 softclock pwait
> Active 31652 3165 6962188 cpu0 softnet relck
> All 596140 59614 15351516 100 cpu0 timer rlkok
The previous patch was incorrect ... the `virtual' column was
truncated (and i didn't noticed it !).
Attached a new one :
memory totals (in kB) 4531 Interrupts fksvm
real virtual free 100 cpu0 softclock pwait
Active 30712 30712 6963180 cpu0 softnet relck
All 595148 595148 15352508 100 cpu0 timer rlkok
--
Nicolas Joly
Biological Software and Databanks.
Institut Pasteur, Paris.
--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="netbsd-sysstat.diff"
Index: vmstat.c
===================================================================
RCS file: /cvsroot/src/usr.bin/systat/vmstat.c,v
retrieving revision 1.56
diff -u -r1.56 vmstat.c
--- vmstat.c 13 Jun 2004 08:56:21 -0000 1.56
+++ vmstat.c 3 Feb 2005 13:53:35 -0000
@@ -324,8 +324,8 @@
clear();
mvprintw(STATROW, STATCOL + 4, "users Load");
- mvprintw(MEMROW, MEMCOL, " memory totals (in kB)");
- mvprintw(MEMROW + 1, MEMCOL, " real virtual free");
+ mvprintw(MEMROW, MEMCOL, " memory totals (in kB)");
+ mvprintw(MEMROW + 1, MEMCOL, " real virtual free");
mvprintw(MEMROW + 2, MEMCOL, "Active");
mvprintw(MEMROW + 3, MEMCOL, "All");
@@ -501,15 +501,15 @@
mvaddstr(STATROW, STATCOL + 53, buf);
#define pgtokb(pg) ((pg) * (s.uvmexp.pagesize / 1024))
- putint(pgtokb(s.uvmexp.active), MEMROW + 2, MEMCOL + 6, 7);
+ putint(pgtokb(s.uvmexp.active), MEMROW + 2, MEMCOL + 6, 8);
putint(pgtokb(s.uvmexp.active + s.uvmexp.swpginuse), /* XXX */
- MEMROW + 2, MEMCOL + 16, 7);
- putint(pgtokb(s.uvmexp.npages - s.uvmexp.free), MEMROW + 3, MEMCOL + 6, 7);
+ MEMROW + 2, MEMCOL + 15, 8);
+ putint(pgtokb(s.uvmexp.npages - s.uvmexp.free), MEMROW + 3, MEMCOL + 6, 8);
putint(pgtokb(s.uvmexp.npages - s.uvmexp.free + s.uvmexp.swpginuse),
- MEMROW + 3, MEMCOL + 16, 7);
- putint(pgtokb(s.uvmexp.free), MEMROW + 2, MEMCOL + 24, 7);
+ MEMROW + 3, MEMCOL + 15, 8);
+ putint(pgtokb(s.uvmexp.free), MEMROW + 2, MEMCOL + 24, 8);
putint(pgtokb(s.uvmexp.free + s.uvmexp.swpages - s.uvmexp.swpginuse),
- MEMROW + 3, MEMCOL + 24, 7);
+ MEMROW + 3, MEMCOL + 24, 8);
putint(total.t_rq - 1, PROCSROW + 1, PROCSCOL + 3, 3);
putint(total.t_dw, PROCSROW + 1, PROCSCOL + 6, 3);
putint(total.t_sl, PROCSROW + 1, PROCSCOL + 9, 3);
--cNdxnHkX5QqsyA0e--