Date: Fri, 19 Dec 2014 18:22:42 +0100 From: =?UTF-8?Q?Fernando_Apestegu=C3=ADa?= <fernando.apesteguia@gmail.com> To: John Baldwin <jhb@freebsd.org> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org>, Allan Jude <allanjude@freebsd.org> Subject: Re: top -d1 behavior Message-ID: <CAGwOe2bMka=sRz7Ug%2B0SsGxHaXKGUsUkb%2Bg9MY9w6byteUyk%2Bg@mail.gmail.com> In-Reply-To: <201412181449.16974.jhb@freebsd.org> References: <CAGwOe2Zp2cHhCb%2Br_m5HZYJFyc=3DDsPEi7v_7ZVxJ0fkO1jEA@mail.gmail.com> <201412161203.44257.jhb@freebsd.org> <CAGwOe2bvp-sa6tCgSUcSut8uWu5on7NOunOp26bL-d7PPfkuMg@mail.gmail.com> <201412181449.16974.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Dec 18, 2014 at 8:49 PM, John Baldwin <jhb@freebsd.org> wrote: > On Wednesday, December 17, 2014 5:27:40 pm Fernando Apestegu=C3=ADa wrote= : >> On Tue, Dec 16, 2014 at 6:03 PM, John Baldwin <jhb@freebsd.org> wrote: >> > On Sunday, November 23, 2014 4:57:33 pm Fernando Apestegu=C3=ADa wrote= : >> >> > Neither seem like what the user would expect. >> >> >> >> Agreed. But this is mostly unexpected (and can lead scripts to fail): >> > >> > Actually, I think having it output the states since boot would be more >> > consistent with other tools like iostat/vmstat/etc. They report state= s >> > on the first iteration that are states since boot. For example: >> > >> > % iostat 1 >> > tty ada0 ada1 cd0 = cpu >> > tin tout KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us ni sy= in id >> > 8 225 20.41 12 0.24 20.56 12 0.24 2.79 0 0.00 3 0 2= 0 95 >> > 0 6230 60.00 6 0.35 64.80 10 0.62 0.00 0 0.00 9 0 91= 0 0 >> > 0 6195 64.00 5 0.31 51.43 7 0.35 0.00 0 0.00 11 0 89= 0 1 >> > >> > Can you test this test patch to see if it gives you what you expect fr= om >> > top -d1? >> >> Yes it does. >> >> I thought however that the discussion was over :) so I filed a PR[1] >> to at least warn in the man page about the special behavior for this >> case. >> >> I would rather fix top and leave the man page as it is. > > I think fixing top makes the most sense. I saw this thread a while ago b= ut > just hadn't replied until I sent the previous message. Here's a real ver= sion > of the patch if you would like to test it. I don't know what I was doing wrong, but I couldn't apply your patch cleanly, sorry (patch -p0 < /path/to/patch). Anyway, I translated the changes to the code and it worked for me. Sample output: last pid: 8084; load averages: 0.36, 0.26, 0.23 up 1+00:47:24 16:38:10 47 processes: 1 running, 46 sleeping CPU: 32.0% user, 0.0% nice, 8.1% system, 0.1% interrupt, 59.8% idle Mem: 361M Active, 1024M Inact, 630M Wired, 528K Cache, 361M Buf, 1931M Free Swap: 128M Total, 40M Used, 88M Free, 31% Inuse ... [snip] If you are to commit this, could you please close PR 195717? > > Index: contrib/top/display.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- contrib/top/display.c (revision 275828) > +++ contrib/top/display.c (working copy) > @@ -557,46 +557,6 @@ > } > } > > -z_cpustates() > - > -{ > - register int i =3D 0; > - register char **names; > - register char *thisname; > - register int *lp; > - int cpu, value; > - > -for (cpu =3D 0; cpu < num_cpus; cpu++) { > - names =3D cpustate_names; > - > - /* show tag and bump lastline */ > - if (num_cpus =3D=3D 1) > - printf("\nCPU: "); > - else { > - value =3D printf("\nCPU %d: ", cpu); > - while (value++ <=3D cpustates_column) > - printf(" "); > - } > - lastline++; > - > - while ((thisname =3D *names++) !=3D NULL) > - { > - if (*thisname !=3D '\0') > - { > - printf("%s %% %s", (i++ % num_cpustates) =3D=3D 0 ? "" : "= , ", thisname); > - } > - } > -} > - > - /* fill the "last" array with all -1s, to insure correct updating */ > - lp =3D lcpustates; > - i =3D num_cpustates * num_cpus; > - while (--i >=3D 0) > - { > - *lp++ =3D -1; > - } > -} > - > /* > * *_memory(stats) - print "Memory: " followed by the memory summary st= ring > * > Index: contrib/top/top.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- contrib/top/top.c (revision 275828) > +++ contrib/top/top.c (working copy) > @@ -176,7 +176,6 @@ > int preset_argc =3D 0; > char **av; > int ac; > - char dostates =3D No; > char do_unames =3D Yes; > char interactive =3D Maybe; > char warnings =3D 0; > @@ -643,23 +642,7 @@ > system_info.procstates); > > /* display the cpu state percentage breakdown */ > - if (dostates) /* but not the first time */ > - { > - (*d_cpustates)(system_info.cpustates); > - } > - else > - { > - /* we'll do it next time */ > - if (smart_terminal) > - { > - z_cpustates(); > - } > - else > - { > - putchar('\n'); > - } > - dostates =3D Yes; > - } > + (*d_cpustates)(system_info.cpustates); > > /* display memory stats */ > (*d_memory)(system_info.memory); > > -- > John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGwOe2bMka=sRz7Ug%2B0SsGxHaXKGUsUkb%2Bg9MY9w6byteUyk%2Bg>