overlay: Scale the CPU busy value by the numer of active cores
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 27 Aug 2013 16:40:45 +0000 (17:40 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 27 Aug 2013 16:43:46 +0000 (17:43 +0100)
Having 100% always mean one processor fully utilised is much easier to
understand (than having to remember how many cores are on each machine
and scale appropriately).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
overlay/cpu-top.c
overlay/cpu-top.h
overlay/overlay.c

index 4e31da1..c134d40 100644 (file)
 #include <stdio.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <string.h>
 #include <errno.h>
 
 #include "cpu-top.h"
 
+int cpu_top_init(struct cpu_top *cpu)
+{
+       memset(cpu, 0, sizeof(*cpu));
+
+       cpu->nr_cpu = sysconf(_SC_NPROCESSORS_ONLN);
+
+       return 0;
+}
+
 int cpu_top_update(struct cpu_top *cpu)
 {
        struct cpu_stat *s = &cpu->stat[cpu->count++&1];
index 8d630fd..c91814f 100644 (file)
@@ -29,6 +29,7 @@
 
 struct cpu_top {
        uint8_t busy;
+       int nr_cpu;
 
        int count;
        struct cpu_stat {
@@ -37,6 +38,7 @@ struct cpu_top {
        } stat[2];
 };
 
+int cpu_top_init(struct cpu_top *cpu);
 int cpu_top_update(struct cpu_top *cpu);
 
 #endif /* CPU_TOP_H */
index 08b90ae..a457a40 100644 (file)
@@ -143,8 +143,8 @@ static void init_gpu_top(struct overlay_context *ctx,
        };
        int n;
 
+       cpu_top_init(&gt->cpu_top);
        gpu_top_init(&gt->gpu_top);
-       memset(&gt->cpu, 0, sizeof(gt->cpu));
 
        chart_init(&gt->cpu, "CPU", 120);
        chart_set_position(&gt->cpu, PAD, PAD);
@@ -222,7 +222,7 @@ static void show_gpu_top(struct overlay_context *ctx, struct overlay_gpu_top *gt
        y = PAD + 12 - 2;
        cairo_set_source_rgba(ctx->cr, 0.75, 0.25, 0.75, 1.);
        cairo_move_to(ctx->cr, PAD, y);
-       sprintf(txt, "CPU: %3d%% busy", gt->cpu_top.busy);
+       sprintf(txt, "CPU: %3d%% busy", gt->cpu_top.busy * gt->cpu_top.nr_cpu);
        cairo_show_text(ctx->cr, txt);
        y += 14;