Submit #2482 ยป 0001-refs-2447-TOP-isn-t-reporting-correctly-CPU-states-w.patch
usr.bin/top/m_dragonfly.c | ||
---|---|---|
/* these are for detailing the cpu states */
|
||
#define CPU_STATES 5
|
||
int *cpu_states;
|
||
int* cpu_averages;
|
||
char *cpustatenames[CPU_STATES + 1] = {
|
||
"user", "nice", "system", "interrupt", "idle", NULL
|
||
};
|
||
... | ... | |
lastpid = 0;
|
||
/* convert cp_time counts to percentages */
|
||
int combine_cpus = (enable_ncpus == 0 && n_cpus > 1);
|
||
for (cpu = 0; cpu < n_cpus; ++cpu) {
|
||
cputime_percentages(cpu_states + cpu * CPU_STATES,
|
||
&cp_time[cpu], &cp_old[cpu]);
|
||
}
|
||
if (combine_cpus) {
|
||
if (cpu_averages == NULL) {
|
||
cpu_averages = calloc(CPU_STATES, sizeof(*cpu_averages));
|
||
if (cpu_averages == NULL)
|
||
err(1, "cpu_averages");
|
||
}
|
||
memset(cpu_averages, 0, sizeof(*cpu_averages) * CPU_STATES);
|
||
for (cpu = 0; cpu < n_cpus; ++cpu) {
|
||
int j = 0;
|
||
cpu_averages[0] += *(cpu_states + ((cpu * CPU_STATES) + j++) );
|
||
cpu_averages[1] += *(cpu_states + ((cpu * CPU_STATES) + j++) );
|
||
cpu_averages[2] += *(cpu_states + ((cpu * CPU_STATES) + j++) );
|
||
cpu_averages[3] += *(cpu_states + ((cpu * CPU_STATES) + j++) );
|
||
cpu_averages[4] += *(cpu_states + ((cpu * CPU_STATES) + j++) );
|
||
}
|
||
for (int i = 0; i < CPU_STATES; ++i)
|
||
cpu_averages[i] /= n_cpus;
|
||
}
|
||
/* sum memory & swap statistics */
|
||
{
|
||
... | ... | |
}
|
||
/* set arrays and strings */
|
||
si->cpustates = cpu_states;
|
||
si->cpustates = combine_cpus == 1 ?
|
||
cpu_averages : cpu_states;
|
||
si->memory = memory_stats;
|
||
si->swap = swap_stats;
|
||
usr.bin/top/top.1 | ||
---|---|---|
by a breakdown of processes per state. Examples of states common
|
||
to Unix systems are sleeping, running, starting, stopped, and zombie.
|
||
The next line displays a percentage of time spent in each of the
|
||
processor states (typically user, nice, system, idle, and iowait).
|
||
processor states (user, nice, system, interrupt, idle).
|
||
These percentages show the processor activity during the time since
|
||
the last update. For multi-processor systems, this information is
|
||
a summation of time across all processors. The next line shows
|
||
an average of all processors. The next line shows
|
||
kernel-related activity (not available on all systems). The numbers
|
||
shown on this line are per-second rates sampled since the last update.
|
||
The exact
|