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) {