[netperf-dev] netperf2 commit notice r202 - trunk/src

raj at netperf.org raj at netperf.org
Fri Feb 1 11:36:19 PST 2008


Author: raj
Date: 2008-02-01 11:36:18 -0800 (Fri, 01 Feb 2008)
New Revision: 202

Modified:
   trunk/src/netcpu_kstat.c
   trunk/src/netcpu_kstat10.c
   trunk/src/netcpu_looper.c
   trunk/src/netcpu_procstat.c
   trunk/src/netcpu_pstat.c
   trunk/src/netcpu_pstatnew.c
   trunk/src/netlib.c
   trunk/src/netlib.h
   trunk/src/nettest_bsd.h
   trunk/src/nettest_omni.c
Log:
add id and util of peak CPU on each system

Modified: trunk/src/netcpu_kstat.c
===================================================================
--- trunk/src/netcpu_kstat.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_kstat.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -390,15 +390,13 @@
     }
     lib_local_per_cpu_util[i] = (lib_local_maxrate - actual_rate) /
       lib_local_maxrate * 100;
+    lib_local_per_cpu_util[i] *= correction_factor;
     lib_local_cpu_util += lib_local_per_cpu_util[i];
   }
   /* we want the average across all n processors */
   lib_local_cpu_util /= (float)lib_num_loc_cpus;
   
-  lib_local_cpu_util *= correction_factor;
   return lib_local_cpu_util;
-
-
 }
 
 void

Modified: trunk/src/netcpu_kstat10.c
===================================================================
--- trunk/src/netcpu_kstat10.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_kstat10.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -528,21 +528,20 @@
     /* and finally, what is our CPU utilization? */
     lib_local_per_cpu_util[i] = 100.0 - (((float)fraction_idle / 
 					  (float)CALC_ACCURACY) * 100.0);
+    lib_local_per_cpu_util[i] *= correction_factor;
     if (debug) {
       fprintf(where,
-	      "lib_local_per_cpu_util[%d] %g\n",
+	      "lib_local_per_cpu_util[%d] %g cf %f\n",
 	      i,
-	      lib_local_per_cpu_util[i]);
+	      lib_local_per_cpu_util[i],
+	      correction_factor);
     }
     lib_local_cpu_util += lib_local_per_cpu_util[i];
   }
   /* we want the average across all n processors */
   lib_local_cpu_util /= (float)lib_num_loc_cpus;
-  
-  lib_local_cpu_util *= correction_factor;
-  return lib_local_cpu_util;
 
-
+  return lib_local_cpu_util;
 }
 
 void

Modified: trunk/src/netcpu_looper.c
===================================================================
--- trunk/src/netcpu_looper.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_looper.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -632,16 +632,15 @@
     }
     lib_local_per_cpu_util[i] = (lib_local_maxrate - actual_rate) /
       lib_local_maxrate * 100;
+    lib_local_per_cpu_util[i] *= correction_factor;
     lib_local_cpu_util += lib_local_per_cpu_util[i];
   }
   /* we want the average across all n processors */
   lib_local_cpu_util /= (float)lib_num_loc_cpus;
   
-  lib_local_cpu_util *= correction_factor;
   return lib_local_cpu_util;
-
-
 }
+
 void
 cpu_start_internal(void)
 {

Modified: trunk/src/netcpu_procstat.c
===================================================================
--- trunk/src/netcpu_procstat.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_procstat.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -233,21 +233,22 @@
 	      MAXLONG)/ lib_elapsed;
     lib_local_per_cpu_util[i] = (lib_local_maxrate - actual_rate) /
       lib_local_maxrate * 100;
+    lib_local_per_cpu_util[i] *= correction_factor;
     if (debug) {
       fprintf(where,
-              "calc_cpu_util: actual_rate on processor %d is %f start %llx end %llx util %f\n",
+              "calc_cpu_util: actual_rate on processor %d is %f start %llx end %llx util %f cf %f\n",
               i,
               actual_rate,
               lib_start_count[i],
               lib_end_count[i],
-	      lib_local_per_cpu_util[i]);
+	      lib_local_per_cpu_util[i],
+	      correction_factor);
     }
     lib_local_cpu_util += lib_local_per_cpu_util[i];
   }
   /* we want the average across all n processors */
   lib_local_cpu_util /= (float)lib_num_loc_cpus;
   
-  lib_local_cpu_util *= correction_factor;
   return lib_local_cpu_util;
 }
 

Modified: trunk/src/netcpu_pstat.c
===================================================================
--- trunk/src/netcpu_pstat.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_pstat.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -264,14 +264,16 @@
     actual_rate = (float) diff / lib_elapsed;
     lib_local_per_cpu_util[i] = (lib_local_maxrate - actual_rate) /
       lib_local_maxrate * 100;
+    lib_local_per_cpu_util[i] *= correction_factor;
     lib_local_cpu_util += lib_local_per_cpu_util[i];
     if (debug) {
       fprintf(where,
-	      "calc_cpu_util: actual_rate on cpu %d is %g max_rate %g cpu %6.2f\n",
+	      "calc_cpu_util: actual_rate on cpu %d is %g max_rate %g cpu %6.2f cf %f\n",
 	      i,
 	      actual_rate,
 	      lib_local_maxrate,
-	      lib_local_per_cpu_util[i]);
+	      lib_local_per_cpu_util[i],
+	      correction_factor);
     }
   }
   
@@ -283,13 +285,6 @@
 	    "calc_cpu_util: average across CPUs is %g\n",lib_local_cpu_util);
   }
 
-  lib_local_cpu_util *= correction_factor;
-
-  if (debug) {
-    fprintf(where,
-	    "calc_cpu_util: returning %g\n",lib_local_cpu_util);
-  }
-
   return lib_local_cpu_util;
 
 }

Modified: trunk/src/netcpu_pstatnew.c
===================================================================
--- trunk/src/netcpu_pstatnew.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netcpu_pstatnew.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -364,19 +364,19 @@
     lib_local_per_cpu_util[i] = 100.0 - (((float)fraction_idle / 
 					  (float)CALC_ACCURACY) * 100.0);
 #endif
+    lib_local_per_cpu_util[i] *= correction_factor;
     if (debug) {
       fprintf(where,
-	      "lib_local_per_cpu_util[%d] %g\n",
+	      "lib_local_per_cpu_util[%d] %g  cf %f\n",
 	      i,
-	      lib_local_per_cpu_util[i]);
+	      lib_local_per_cpu_util[i],
+	      correction_factor);
     }
     lib_local_cpu_util += lib_local_per_cpu_util[i];
   }
   /* we want the average across all n processors */
   lib_local_cpu_util /= (float)lib_num_loc_cpus;
 
-  lib_local_cpu_util *= correction_factor;
-
   if (debug) {
     fprintf(where,
 	    "calc_cpu_util: returning %g\n",lib_local_cpu_util);

Modified: trunk/src/netlib.c
===================================================================
--- trunk/src/netlib.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netlib.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -197,6 +197,13 @@
   lib_num_loc_cpus,    /* the number of cpus in the system */
   lib_num_rem_cpus;    /* how many we think are in the remote */
 
+int
+  lib_local_peak_cpu_id, /* the CPU number of the most utilized CPU */
+  lib_remote_peak_cpu_id;
+double
+  lib_local_peak_cpu_util, /* its utilization */
+  lib_remote_peak_cpu_util;
+
 #define PAGES_PER_CHILD 2
 
 int     lib_use_idle;
@@ -1111,9 +1118,14 @@
   response_array = (int *)(&netperf_response);
 
   for (i = 0; i < MAXCPUS; i++) {
-    lib_local_per_cpu_util[i] = 0.0;
+    lib_local_per_cpu_util[i] = -1.0;
   }
 
+  lib_local_peak_cpu_id = -1;
+  lib_local_peak_cpu_util = -1.0;
+  lib_remote_peak_cpu_id = -1;
+  lib_remote_peak_cpu_util = -1.0;
+
   /* on those systems where we know that CPU numbers may not start at
      zero and be contiguous, we provide a way to map from a
      contiguous, starting from 0 CPU id space to the actual CPU ids.
@@ -3169,7 +3181,19 @@
 float 
 calc_cpu_util(float elapsed_time)
 {
-  return(calc_cpu_util_internal(elapsed_time));
+  float temp_util;
+  int i;
+  temp_util = calc_cpu_util_internal(elapsed_time);
+
+  /* now, what was the most utilized CPU and its util? */
+  for (i = 0; i < MAXCPUS; i++) {
+    if (lib_local_per_cpu_util[i] > lib_local_peak_cpu_util) {
+      lib_local_peak_cpu_util = lib_local_per_cpu_util[i];
+      lib_local_peak_cpu_id = i; /* probably need to check the map */
+    }
+  }
+
+  return temp_util;
 }
 
 float 

Modified: trunk/src/netlib.h
===================================================================
--- trunk/src/netlib.h	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/netlib.h	2008-02-01 19:36:18 UTC (rev 202)
@@ -441,6 +441,10 @@
 extern  float    lib_local_cpu_util;
 extern  float    lib_elapsed;
 extern  float    lib_local_maxrate;
+extern  double   lib_local_peak_cpu_util;
+extern  int      lib_local_peak_cpu_id;
+extern  double   lib_remote_peak_cpu_util;
+extern  int      lib_remote_peak_cpu_id;
 
 extern  char    libfmt;
 

Modified: trunk/src/nettest_bsd.h
===================================================================
--- trunk/src/nettest_bsd.h	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/nettest_bsd.h	2008-02-01 19:36:18 UTC (rev 202)
@@ -102,6 +102,9 @@
   float      serv_dem;
   uint32_t   cpu_method;    /* how was CPU util measured? */
   uint32_t   num_cpus;      /* number of CPUs in remote */
+
+  int32_t    peak_cpu_id;   /* ID of the most utilized CPU */
+  float      peak_cpu_util; /* its individual utilization */
 };
 
 #endif /* WANT_OMNI */

Modified: trunk/src/nettest_omni.c
===================================================================
--- trunk/src/nettest_omni.c	2008-02-01 15:51:45 UTC (rev 201)
+++ trunk/src/nettest_omni.c	2008-02-01 19:36:18 UTC (rev 202)
@@ -392,11 +392,15 @@
   LOCAL_SD,
   LOCAL_CPU_METHOD,
   LOCAL_CPU_COUNT,
+  LOCAL_CPU_PEAK_UTIL,
+  LOCAL_CPU_PEAK_ID,
   REMOTE_CPU_UTIL,
   REMOTE_CPU_BIND,
   REMOTE_SD,
   REMOTE_CPU_METHOD,
   REMOTE_CPU_COUNT,
+  REMOTE_CPU_PEAK_UTIL,
+  REMOTE_CPU_PEAK_ID,
   SD_UNITS,
   LOCAL_NODELAY,
   LOCAL_CORK,
@@ -671,6 +675,10 @@
     return "LOCAL_CPU_METHOD";
   case LOCAL_CPU_COUNT:
     return "LOCAL_CPU_COUNT";
+  case   LOCAL_CPU_PEAK_UTIL:
+    return "LOCAL_CPU_PEAK_UTIL";
+  case LOCAL_CPU_PEAK_ID:
+    return "LOCAL_CPU_PEAK_ID";
   case   LOCAL_NODELAY:
     return "LOCAL_NODELAY";
   case   LOCAL_CORK:
@@ -721,6 +729,10 @@
     return "REMOTE_CPU_METHOD";
   case REMOTE_CPU_COUNT:
     return "REMOTE_CPU_COUNT";
+  case REMOTE_CPU_PEAK_UTIL:
+    return "REMOTE_CPU_PEAK_UTIL";
+  case REMOTE_CPU_PEAK_ID:
+    return "REMOTE_CPU_PEAK_ID";
   case   REMOTE_NODELAY:
     return "REMOTE_NODELAY";
   case   REMOTE_CORK:
@@ -1011,6 +1023,10 @@
   output_csv_list[i++] = REMOTE_CPU_BIND;
   output_csv_list[i++] = LOCAL_CPU_COUNT;
   output_csv_list[i++] = REMOTE_CPU_COUNT;
+  output_csv_list[i++] = LOCAL_CPU_PEAK_UTIL;
+  output_csv_list[i++] = LOCAL_CPU_PEAK_ID;
+  output_csv_list[i++] = REMOTE_CPU_PEAK_UTIL;
+  output_csv_list[i++] = REMOTE_CPU_PEAK_ID;
   output_csv_list[i++] = CONFIDENCE_LEVEL;
   output_csv_list[i++] = CONFIDENCE_INTERVAL;
   output_csv_list[i++] = THROUGHPUT_CONFID;
@@ -1654,6 +1670,30 @@
   netperf_output_source[LOCAL_CPU_UTIL].tot_line_len = 
     NETPERF_LINE_TOT(LOCAL_CPU_UTIL);
 
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].output_name = LOCAL_CPU_PEAK_UTIL;
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].line[0] = "Local";
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].line[1] = "Peak";
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].line[2] = "Per CPU";
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].line[3] = "Util %";
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].format = "%.2f";
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].display_value = &lib_local_peak_cpu_util;
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].max_line_len = 
+    NETPERF_LINE_MAX(LOCAL_CPU_PEAK_UTIL);
+  netperf_output_source[LOCAL_CPU_PEAK_UTIL].tot_line_len = 
+    NETPERF_LINE_TOT(LOCAL_CPU_PEAK_UTIL);
+
+  netperf_output_source[LOCAL_CPU_PEAK_ID].output_name = LOCAL_CPU_PEAK_ID;
+  netperf_output_source[LOCAL_CPU_PEAK_ID].line[0] = "Local";
+  netperf_output_source[LOCAL_CPU_PEAK_ID].line[1] = "Peak";
+  netperf_output_source[LOCAL_CPU_PEAK_ID].line[2] = "Per CPU";
+  netperf_output_source[LOCAL_CPU_PEAK_ID].line[3] = "ID";
+  netperf_output_source[LOCAL_CPU_PEAK_ID].format = "%d";
+  netperf_output_source[LOCAL_CPU_PEAK_ID].display_value = &lib_local_peak_cpu_id;
+  netperf_output_source[LOCAL_CPU_PEAK_ID].max_line_len = 
+    NETPERF_LINE_MAX(LOCAL_CPU_PEAK_ID);
+  netperf_output_source[LOCAL_CPU_PEAK_ID].tot_line_len = 
+    NETPERF_LINE_TOT(LOCAL_CPU_PEAK_ID);
+
   netperf_output_source[LOCAL_CPU_BIND].output_name = LOCAL_CPU_BIND;
   netperf_output_source[LOCAL_CPU_BIND].line[0] = "Local";
   netperf_output_source[LOCAL_CPU_BIND].line[1] = "CPU";
@@ -1964,6 +2004,30 @@
   netperf_output_source[REMOTE_CPU_UTIL].tot_line_len = 
     NETPERF_LINE_TOT(REMOTE_CPU_UTIL);
 
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].output_name = REMOTE_CPU_PEAK_UTIL;
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].line[0] = "Remote";
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].line[1] = "Peak";
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].line[2] = "Per CPU";
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].line[3] = "Util %";
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].format = "%.2f";
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].display_value = &lib_remote_peak_cpu_util;
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].max_line_len = 
+    NETPERF_LINE_MAX(REMOTE_CPU_PEAK_UTIL);
+  netperf_output_source[REMOTE_CPU_PEAK_UTIL].tot_line_len = 
+    NETPERF_LINE_TOT(REMOTE_CPU_PEAK_UTIL);
+
+  netperf_output_source[REMOTE_CPU_PEAK_ID].output_name = REMOTE_CPU_PEAK_ID;
+  netperf_output_source[REMOTE_CPU_PEAK_ID].line[0] = "Remote";
+  netperf_output_source[REMOTE_CPU_PEAK_ID].line[1] = "Peak";
+  netperf_output_source[REMOTE_CPU_PEAK_ID].line[2] = "Per CPU";
+  netperf_output_source[REMOTE_CPU_PEAK_ID].line[3] = "ID";
+  netperf_output_source[REMOTE_CPU_PEAK_ID].format = "%d";
+  netperf_output_source[REMOTE_CPU_PEAK_ID].display_value = &lib_remote_peak_cpu_id;
+  netperf_output_source[REMOTE_CPU_PEAK_ID].max_line_len = 
+    NETPERF_LINE_MAX(REMOTE_CPU_PEAK_ID);
+  netperf_output_source[REMOTE_CPU_PEAK_ID].tot_line_len = 
+    NETPERF_LINE_TOT(REMOTE_CPU_PEAK_ID);
+
   netperf_output_source[REMOTE_CPU_BIND].output_name = REMOTE_CPU_BIND;
   netperf_output_source[REMOTE_CPU_BIND].line[0] = "Remote";
   netperf_output_source[REMOTE_CPU_BIND].line[1] = "CPU";
@@ -3502,6 +3566,8 @@
 	   connection may not be what we would get at the end of the
 	   connection... */
 	lib_num_rem_cpus = omni_result->num_cpus;
+	lib_remote_peak_cpu_util = (double)omni_result->peak_cpu_util;
+	lib_remote_peak_cpu_id = omni_result->peak_cpu_id;
 	rsr_size_end = omni_result->recv_buf_size;
 	rss_size_end = omni_result->send_buf_size;
 	remote_bytes_sent = omni_result->bytes_sent;
@@ -3586,7 +3652,7 @@
     if (local_cpu_usage) {
 
       local_cpu_utilization = calc_cpu_util(elapsed_time);
-      
+
       /* we need to decide what to feed the service demand beast,
 	 which will, ultimately, depend on what sort of test it is and
 	 whether or not the user asked for something specific - as in
@@ -4304,6 +4370,8 @@
   if (omni_request->measure_cpu) {
     omni_results->cpu_util = calc_cpu_util(elapsed_time);
   }
+  omni_results->peak_cpu_util   = (float)lib_local_peak_cpu_util;
+  omni_results->peak_cpu_id     = lib_local_peak_cpu_id;
   
   if (debug) {
     fprintf(where,



More information about the netperf-dev mailing list