Date: Fri, 06 Nov 2009 15:52:18 -0800 From: Xin LI <delphij@delphij.net> To: Bruce Evans <brde@optusnet.com.au> Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG, Xin LI <delphij@FreeBSD.ORG> Subject: Re: svn commit: r198848 - head/bin/ps Message-ID: <4AF4B6B2.3090706@delphij.net> In-Reply-To: <20091103214231.H23957@delplex.bde.org> References: <200911030928.nA39SjLx085597@svn.freebsd.org> <20091103214231.H23957@delplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------000600040007090308040408 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Bruce Evans wrote: > On Tue, 3 Nov 2009, Xin LI wrote: > >> Log: >> Increase width for %CPU, RSS and VSZ columns for now. Modern systems >> tend to have larger memory, larger process, and more CPU. > > This uses space that is not available. Command names(+args) are now > truncated to 9 columns in "ps l" output :-(. They used to be truncated to > 11 columns recently (down from 12 columns in FreeBSD-5.2). I think we may have to live with this, even if we can cut down CPU percentage part, the memory column's width is still too narrow for modern systems. I have actually thought about having the numbers humanized but I'm afraid it would break some existing scripts :( [...] > There seems to be no better fix than to further granulate and dehumanize > the numbers so that they fit in the available space. E.g., a %CPU of >> = 100 and < 9999 should be displayed in %4.0f format; this only > involvues granulation, but above 9999 it needs to be dehumanized as > well and displayed in k or M or larger granularity (it can be > 9999 > with 100 CPUs and > 999k with 10000 CPUs). A VSZ of >= 10000 (k > implicit) needs to be displayed in M or larger granularity (M explicit). Will it sound reasonable to divide pcpu by ncpu and cap the number at 100? Cheers, - -- Xin LI <delphij@delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.13 (FreeBSD) iEYEARECAAYFAkr0trIACgkQi+vbBBjt66CxkwCeLjSGhfB438LAsqFcK6vCgdmY 0OIAn2OmQLRttIhvMYVjqQvYviLzgVBc =C87q -----END PGP SIGNATURE----- --------------000600040007090308040408 Content-Type: text/plain; name="ps.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ps.diff" Index: keyword.c =================================================================== --- keyword.c (revision 199006) +++ keyword.c (working copy) @@ -70,7 +70,7 @@ /* PLEASE KEEP THE TABLE BELOW SORTED ALPHABETICALLY!!! */ static VAR var[] = { - {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 5, 0, CHAR, NULL, 0}, + {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 4, 0, CHAR, NULL, 0}, {"%mem", "%MEM", NULL, 0, pmem, NULL, 4, 0, CHAR, NULL, 0}, {"acflag", "ACFLG", NULL, 0, kvar, NULL, 3, KOFF(ki_acflag), USHORT, "x", 0}, Index: nlist.c =================================================================== --- nlist.c (revision 199006) +++ nlist.c (working copy) @@ -47,6 +47,7 @@ int nlistread; /* if nlist already read. */ unsigned long mempages; /* number of pages of phys. memory */ int fscale; /* kernel _fscale variable */ +int ncpu; /* number of cpus */ int donlist(void) @@ -62,6 +63,9 @@ oldlen = sizeof(mempages); if (sysctlbyname("hw.availpages", &mempages, &oldlen, NULL, 0) == -1) return (1); + oldlen = sizeof(ncpu); + if (sysctlbyname("hw.ncpu", &ncpu, &oldlen, NULL, 0) == -1) + return (1); nlistread = 1; return (0); } Index: extern.h =================================================================== --- extern.h (revision 199006) +++ extern.h (working copy) @@ -36,7 +36,7 @@ struct varent; extern fixpt_t ccpu; -extern int cflag, eval, fscale, nlistread, rawcpu; +extern int cflag, eval, fscale, ncpu, nlistread, rawcpu; extern unsigned long mempages; extern time_t now; extern int showthreads, sumrusage, termwidth, totwidth; Index: print.c =================================================================== --- print.c (revision 199006) +++ print.c (working copy) @@ -642,10 +642,13 @@ void pcpu(KINFO *k, VARENT *ve) { - VAR *v; + VAR *v = ve->var; + double pctcpu = getpcpu(k); - v = ve->var; - (void)printf("%*.1f", v->width, getpcpu(k)); + if (pctcpu / ncpu >= 100.0) + (void)printf(" 100"); + else + (void)printf("%*.1f", v->width, pctcpu / ncpu); } static double --------------000600040007090308040408--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AF4B6B2.3090706>