]> granicus.if.org Git - procps-ng/commitdiff
top: use CPU_ZEROTICS to embrace the Nehalem logic
authorJim Warner <james.warner@comcast.net>
Tue, 7 Feb 2012 05:59:59 +0000 (23:59 -0600)
committerCraig Small <csmall@enc.com.au>
Sun, 12 Feb 2012 10:52:23 +0000 (21:52 +1100)
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 ce1410a51a624a91816fcc8c232c8a4d60b09638
commit 9e7dd43ab7b2e68177cefd49b3c07311ea79bc1a
commit a9041a5526eddc631b94bac86c09a47e60a3b4e1

top/top.c
top/top.h

index 0baa0274c48761591d135ae051210395d2566fe0..7ae94dac35cb3b0ef280f4a191ec7764403ad9d1 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -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.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;
+#ifndef CPU_ZEROTICS
    /* 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
       falls below a % of those expected -- other cpus will register their full
       number of expected tics as 'idle' and thus won't be effected */
    cpus[Cpu_faux_tot].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
    for (i = 0; i < Cpu_faux_tot && i < Screen_rows; i++) {
 #ifdef PRETEND4CPUS
@@ -1850,7 +1851,9 @@ static CPU_t *cpus_refresh (CPU_t *cpus) {
             memmove(&cpus[i], &cpus[Cpu_faux_tot], sizeof(CPU_t));
             break;        // tolerate cpus taken offline
       }
+#ifndef CPU_ZEROTICS
       cpus[i].edge = cpus[Cpu_faux_tot].edge;
+#endif
       // this is for symmetry only, it's not currently required
       cpus[i].cur.tot = cpus[Cpu_faux_tot].cur.tot;
 #ifdef PRETEND4CPUS
index e860687854bccb4e6dfda2b6a883a9065722237c..22a7a0734004cd74b4fddc9947b9cf4c6b68e9ee 100644 (file)
--- a/top/top.h
+++ b/top/top.h
               Jan Gorig <jgorig@redhat.com> - April, 2011 */
 
         /* 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
            for nls support inclusion.  They're identified with:
               // 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
 #define linux_version_code LINUX_VERSION(2,5,43)
 #endif
@@ -225,7 +229,9 @@ typedef struct CT_t {
 typedef struct CPU_t {
    CT_t cur;                      // current frame's cpu tics
    CT_t sav;                      // prior frame's cpu tics
+#ifndef CPU_ZEROTICS
    SIC_t edge;                    // tics adjustment threshold boundary
+#endif
    int id;                        // the cpu id number (0 - nn)
 } CPU_t;