On 09/17/14 07:44, Alexander Hall wrote:


On September 17, 2014 3:54:34 AM CEST, David Gwynne <da...@gwynne.id.au> wrote:
not yet. we could make -1 toggle combine_cpu, or have something like -1
and -N for combined and "N" cpus displayed?

If we want it, I'm in strong favor for the latter. Toggles are horrible, IMO. 
If we don't consider needing it, it might make sense not to compress the CPU 
list for non-interactive use.

I didn't realize top had toggles already, so never mind...

/Alexander


/Alexander


On 16 Sep 2014, at 11:08 pm, Alexander Hall <alexan...@beard.se> wrote:



On September 16, 2014 2:11:28 PM CEST, Mark Kettenis
<mark.kette...@xs4all.nl> wrote:
Date: Tue, 16 Sep 2014 21:51:00 +1000
From: David Gwynne <da...@gwynne.id.au>

if you have more than 8 cpus, combine the cpu lines by default.

Just curious, is there a command line argument to expand the list?

/Alexander


ok?

8 seems a reasonable number

ok kettenis@

Index: machine.c
===================================================================
RCS file: /cvs/src/usr.bin/top/machine.c,v
retrieving revision 1.78
diff -u -p -r1.78 machine.c
--- machine.c   4 Jul 2014 05:58:31 -0000       1.78
+++ machine.c   16 Sep 2014 11:46:41 -0000
@@ -141,14 +141,26 @@ int               ncpu;
unsigned int    maxslp;

int
-machine_init(struct statics *statics)
+getncpu(void)
{
+       int mib[] = { CTL_HW, HW_NCPU };
+       int ncpu;
        size_t size = sizeof(ncpu);
-       int mib[2], pagesize, cpu;

-       mib[0] = CTL_HW;
-       mib[1] = HW_NCPU;
-       if (sysctl(mib, 2, &ncpu, &size, NULL, 0) == -1)
+       if (sysctl(mib, sizeof(mib) / sizeof(mib[0]),
+           &ncpu, &size, NULL, 0) == -1)
+               return (-1);
+
+       return (ncpu);
+}
+
+int
+machine_init(struct statics *statics)
+{
+       int pagesize, cpu;
+
+       ncpu = getncpu();
+       if (ncpu == -1)
                return (-1);
        cpu_states = calloc(ncpu, CPUSTATES * sizeof(int64_t));
        if (cpu_states == NULL)
Index: machine.h
===================================================================
RCS file: /cvs/src/usr.bin/top/machine.h,v
retrieving revision 1.17
diff -u -p -r1.17 machine.h
--- machine.h   5 Jun 2012 18:52:53 -0000       1.17
+++ machine.h   16 Sep 2014 11:46:41 -0000
@@ -93,3 +93,5 @@ extern char    *format_next_process(cadd
extern uid_t    proc_owner(pid_t);

extern struct kinfo_proc        *getprocs(int, int, int *);
+
+int            getncpu(void);
Index: top.c
===================================================================
RCS file: /cvs/src/usr.bin/top/top.c,v
retrieving revision 1.81
diff -u -p -r1.81 top.c
--- top.c       7 Apr 2014 15:49:22 -0000       1.81
+++ top.c       16 Sep 2014 11:46:41 -0000
@@ -250,6 +250,13 @@ parseargs(int ac, char **av)
                }
        }

+       i = getncpu();
+       if (i == -1)
+               err(1, NULL);
+
+       if (i > 8)
+               combine_cpus = 1;
+
        /* get count of top processes to display (if any) */
        if (optind < ac) {
                if ((topn = atoiwi(av[optind])) == Invalid) {





Reply via email to