top: use CPU_ZEROTICS to embrace the Nehalem logic

The recently added logic dealing with "missing" tics
is mutually exclusive with logic associated with a
define called CPU_ZEROTICS.

This commit expands the use of that define to exclude
such Nehalem logic as appropriate.

It also extends programmer notes in top.h to include
an attribution for initiating the topic of potential
Nehalem type % CPU distortions, acknowledging:
  Jaromir Capik, <jcapik@redhat.com>

References
commit ce1410a51a
commit 9e7dd43ab7
commit a9041a5526
This commit is contained in:
Jim Warner 2012-02-06 23:59:59 -06:00 committed by Craig Small
parent 95f2201730
commit 02508b3d76
2 changed files with 11 additions and 2 deletions

View File

@ -1826,13 +1826,14 @@ static CPU_t *cpus_refresh (CPU_t *cpus) {
cpus[Cpu_faux_tot].cur.tot = cpus[Cpu_faux_tot].cur.u + cpus[Cpu_faux_tot].cur.s cpus[Cpu_faux_tot].cur.tot = cpus[Cpu_faux_tot].cur.u + cpus[Cpu_faux_tot].cur.s
+ cpus[Cpu_faux_tot].cur.n + cpus[Cpu_faux_tot].cur.i + cpus[Cpu_faux_tot].cur.w + cpus[Cpu_faux_tot].cur.n + cpus[Cpu_faux_tot].cur.i + cpus[Cpu_faux_tot].cur.w
+ cpus[Cpu_faux_tot].cur.x + cpus[Cpu_faux_tot].cur.y + cpus[Cpu_faux_tot].cur.z; + cpus[Cpu_faux_tot].cur.x + cpus[Cpu_faux_tot].cur.y + cpus[Cpu_faux_tot].cur.z;
#ifndef CPU_ZEROTICS
/* if a Nehalem type cpu has been turned off completely, and thus registers /* if a Nehalem type cpu has been turned off completely, and thus registers
very few total tics, we'll force it to be treated as idle when that total very few total tics, we'll force it to be treated as idle when that total
falls below a % of those expected -- other cpus will register their full falls below a % of those expected -- other cpus will register their full
number of expected tics as 'idle' and thus won't be effected */ number of expected tics as 'idle' and thus won't be effected */
cpus[Cpu_faux_tot].edge = cpus[Cpu_faux_tot].edge =
((cpus[Cpu_faux_tot].cur.tot - cpus[Cpu_faux_tot].sav.tot) / smp_num_cpus) / (100 / TICS_EDGE); ((cpus[Cpu_faux_tot].cur.tot - cpus[Cpu_faux_tot].sav.tot) / smp_num_cpus) / (100 / TICS_EDGE);
#endif
// now value each separate cpu's tics, maybe // now value each separate cpu's tics, maybe
for (i = 0; i < Cpu_faux_tot && i < Screen_rows; i++) { for (i = 0; i < Cpu_faux_tot && i < Screen_rows; i++) {
#ifdef PRETEND4CPUS #ifdef PRETEND4CPUS
@ -1850,7 +1851,9 @@ static CPU_t *cpus_refresh (CPU_t *cpus) {
memmove(&cpus[i], &cpus[Cpu_faux_tot], sizeof(CPU_t)); memmove(&cpus[i], &cpus[Cpu_faux_tot], sizeof(CPU_t));
break; // tolerate cpus taken offline break; // tolerate cpus taken offline
} }
#ifndef CPU_ZEROTICS
cpus[i].edge = cpus[Cpu_faux_tot].edge; cpus[i].edge = cpus[Cpu_faux_tot].edge;
#endif
// this is for symmetry only, it's not currently required // this is for symmetry only, it's not currently required
cpus[i].cur.tot = cpus[Cpu_faux_tot].cur.tot; cpus[i].cur.tot = cpus[Cpu_faux_tot].cur.tot;
#ifdef PRETEND4CPUS #ifdef PRETEND4CPUS

View File

@ -56,12 +56,16 @@
Jan Gorig <jgorig@redhat.com> - April, 2011 */ Jan Gorig <jgorig@redhat.com> - April, 2011 */
/* For the motivation and path to nls support, thanks to: /* For the motivation and path to nls support, thanks to:
Sami Kerola, <kerolasa@iki.fi> */ Sami Kerola, <kerolasa@iki.fi> - December, 2011 */
/* There are still some short strings that may yet be candidates /* There are still some short strings that may yet be candidates
for nls support inclusion. They're identified with: for nls support inclusion. They're identified with:
// nls_maybe */ // nls_maybe */
/* For initiating the topic of potential % CPU distortions due
to Nehalem type processors (see CPU_ZEROTICS), thanks to:
Jaromir Capik, <jcapik@redhat.com> - February, 2012 */
#ifdef PRETEND2_5_X #ifdef PRETEND2_5_X
#define linux_version_code LINUX_VERSION(2,5,43) #define linux_version_code LINUX_VERSION(2,5,43)
#endif #endif
@ -225,7 +229,9 @@ typedef struct CT_t {
typedef struct CPU_t { typedef struct CPU_t {
CT_t cur; // current frame's cpu tics CT_t cur; // current frame's cpu tics
CT_t sav; // prior frame's cpu tics CT_t sav; // prior frame's cpu tics
#ifndef CPU_ZEROTICS
SIC_t edge; // tics adjustment threshold boundary SIC_t edge; // tics adjustment threshold boundary
#endif
int id; // the cpu id number (0 - nn) int id; // the cpu id number (0 - nn)
} CPU_t; } CPU_t;