[netperf-dev] netperf2 commit notice r478 - in trunk: . doc/examples src
raj at netperf.org
raj at netperf.org
Fri Jul 29 15:20:25 PDT 2011
Author: raj
Date: 2011-07-29 15:20:25 -0700 (Fri, 29 Jul 2011)
New Revision: 478
Modified:
trunk/Release_Notes
trunk/doc/examples/runemomni.sh
trunk/doc/examples/runemomniagg2.sh
trunk/src/netcpu_procstat.c
trunk/src/netlib.c
Log:
make a warning about a probably sleeping processor a debug output comment some scripts etc
Modified: trunk/Release_Notes
===================================================================
--- trunk/Release_Notes 2011-07-29 00:33:59 UTC (rev 477)
+++ trunk/Release_Notes 2011-07-29 22:20:25 UTC (rev 478)
@@ -1,3 +1,20 @@
+These are the Release Notes for post Revision 2.5.0 top-of-trunk netperf:
+
+*) If the time delta between two events is negative, do not bother
+ doing any math with it in the histogram/statistics code, just
+ increment the ridiculous count and move-on.
+
+*) Fixed a bug which caused local transport retransmissions to be
+ reported as -1 even though the getsockopt() call was
+ successful. (Linux)
+
+*) The src/nettest_omni.c and re-written src/netserver.c code are now
+ known to have compiled under Windows 7 x64 with the Microsoft
+ WDK. There remains a timing issue with confidence intervals which
+ is yet to be addressed, and may have been there for ages. Netserver
+ has been run as a non-spawning (-f) server, netperf has been run,
+ both have run "classic" and "omni" tests.
+
These are the Release Notes for Revision 2.5.0 of netperf:
*) Add a new -N option to netserver which will suppress all creation
Modified: trunk/doc/examples/runemomni.sh
===================================================================
--- trunk/doc/examples/runemomni.sh 2011-07-29 00:33:59 UTC (rev 477)
+++ trunk/doc/examples/runemomni.sh 2011-07-29 22:20:25 UTC (rev 478)
@@ -1,17 +1,46 @@
+# a script to run a set of single-instance netperf tests
+# between two machines
+
+# the length in seconds of each test iteration. the actual
+# run time will then be somewhere between that times min
+# and max iteration for confidence intervals
length=30
+
+# unlike the aggregate script, we do not have to worry
+# about everyone all running at the same time, so we can
+# save some time with a lower minimum iteration count
confidence="-i 30,3"
+
+# the CPUs to which the netperf process will be bound
+# via the -T global option
netperf_CPUs="0 1 2"
+
+# the CPUs to which the netserver process will be bound
+# via the -T global option
netserver_CPUs="0 1 2"
+
+# the host/IP to use for the control connection
control_host=192.168.0.26
+
+# the list of host/IP addresses to actually measure over
remote_hosts="192.168.0.26 fe80::207:43ff:fe05:590a%eth0"
+
#reqs="128 256 512 1024"
reqs="64 128 256 512 1024 1460 2048 4096 8192"
+
+# the burst size for bursted RR tests
bursts="0 1 2 4 8 16 32 64 128 256"
+
HDR="-P 1"
-# -O means "human" -o means "csv"
-CSV="-o"
-#CSV="-O"
+# -O means "human" -o means "csv" -k means "keyval"
+# "all" means emit everything. otherwise, specify a
+# list of output selectors directly or a filename with
+# them therein. no parameter means a default set will
+# be emitted based on the test type
+CSV="-o all"
+#CSV="-O all"
+# which of the tests should we do?
DO_TCP_STREAM_AUTO=1
DO_TCP_STREAM_SOPT=1
DO_TCP_BIDIR=1
@@ -21,11 +50,21 @@
DO_UDP_BIDIR_REQ=0
DO_UDP_STREAM=1
-
+# when this is set to 0 then netperf and netserver are bound
+# to the same CPU number and we do not walk through all the
+# combinations. one can do this when the two systems are
+# otherwise identical. when they are not, then running
+# through the full matrix may be indicated
FULL_MATRIX=0
+# here you should echo some things about the test and its
+# environment and in particular those things not automagically
+# determined by netperf
+echo I NEED TO EDIT THE SCRIPT
echo interrupts CPU 0 with CPU 1 other socket CPU 2 same socket
echo ad386a in dl380 g5 2x 5160 at 3GHz to same
+
+# and away we go
for data in $remote_hosts
do
Modified: trunk/doc/examples/runemomniagg2.sh
===================================================================
--- trunk/doc/examples/runemomniagg2.sh 2011-07-29 00:33:59 UTC (rev 477)
+++ trunk/doc/examples/runemomniagg2.sh 2011-07-29 22:20:25 UTC (rev 478)
@@ -1,4 +1,7 @@
#set -x
+# edit and add to this array as necessary
+# the hosts you will use should be contiguous
+# starting at index zero
remote_hosts[0]=192.168.2.3
remote_hosts[1]=192.168.3.5
remote_hosts[2]=192.168.4.6
@@ -15,30 +18,68 @@
remote_hosts[13]=192.168.3.6
remote_hosts[14]=192.168.4.5
remote_hosts[15]=192.168.5.3
+
+# this should always be less than or equal to the
+# number of valid hosts in the array above
num_cli=16
+
+# this will be the length of each individual test
+# iteration
length=30
+
+# this will be the settings for confidence intervals
+# you can use a smaller number of iterations but
+# to ensure that everyone is running at the same time
+# the min and max iterations MUST be the same
confidence="-i 30,30"
+
+# the different number of concurrent sessions to be run
+# if you do not start with one concurrent session the
+# test headers may not be where one wants them and you
+# may need to edit the output to hoist the test header
+# up above the first result
concurrent_sessions="1 4 8 16 32 64"
+
+# the socket buffer sizes - you may need to tweak
+# some system settings to allow 1M socket buffers
socket_sizes=" -s 1M -S 1M"
+
+# the burst sizes in the aggregate request/response tests
#burst_sizes="0 1 4 16 64 256 1024"
burst_sizes="0 1 4 16"
+
+# this ensures the test header of at least one instance
+# is displayed
HDR="-P 1"
-# -O means "human" -o means "csv"
-CSV="-o"
-#CSV="-O"
-DO_STREAM=
-DO_MAERTS=
+# -O means "human" -o means "csv" and -k means "keyval"
+# "all" means emit everything it knows to emit. omit "all"
+# and what is emitted will depend on the test. can customize
+# with direct output selection or specifying a file with
+# output selectors in it
+CSV="-o all"
+
+# should tests outbound relative to this system be run?
+DO_STREAM=0
+
+# should tests inbound relative to this system be run?
+DO_MAERTS=0
+
+# should same connection bidirectional tests be run?
DO_BIDIR=1
+
+# should aggreagte single-byte request/response be run?
+# this can be used to try to get a maximum PPS figure
DO_RRAGG=1
-#echo "throughput, command_line" > tmpfoo
-#CSV="-o tmpfoo"
-
+# here you should echo-out some things about the test
+# particularly those things that will not be automagically
+# captured by netperf.
echo interrupts spread wherever irqbalanced put them
echo 4xAD386A in DL785 G5 SLES11B6, HP/vendor drivers
echo four dl585 G5 clients rh5.2, each with two AD386A
+# and here we go
if [ $DO_STREAM -eq 1 ]; then
echo TCP_STREAM
for i in $concurrent_sessions; do
Modified: trunk/src/netcpu_procstat.c
===================================================================
--- trunk/src/netcpu_procstat.c 2011-07-29 00:33:59 UTC (rev 477)
+++ trunk/src/netcpu_procstat.c 2011-07-29 22:20:25 UTC (rev 478)
@@ -271,13 +271,6 @@
}
for (i = 0; i < lib_num_loc_cpus; i++) {
- /* it would appear that on some systems, in loopback, nice is
- *very* effective, causing the looper process to stop dead in its
- tracks. if this happens, we need to ensure that the calculation
- does not go south. raj 6/95 and if we run completely out of idle,
- the same thing could in theory happen to the USE_KSTAT path. raj
- 8/2000 */
-
/* Find the difference in all CPU stat fields */
diff.user =
tick_subtract(lib_start_count[i].user, lib_end_count[i].user);
@@ -302,7 +295,9 @@
/* calculate idle time as a percentage of all CPU states */
if (total_ticks == 0) {
- fprintf(stderr, "Total ticks 0 on CPU %d, charging nothing!\n", i);
+ if (debug) {
+ fprintf(where, "Total ticks 0 on CPU %d, charging nothing!\n", i);
+ }
lib_local_per_cpu_util[i] = 100.0;
} else {
lib_local_per_cpu_util[i] = 100.0 *
Modified: trunk/src/netlib.c
===================================================================
--- trunk/src/netlib.c 2011-07-29 00:33:59 UTC (rev 477)
+++ trunk/src/netlib.c 2011-07-29 22:20:25 UTC (rev 478)
@@ -3866,6 +3866,17 @@
HIST_add(register HIST h, int time_delta){
register float val;
register int base = HIST_NUM_OF_BUCKET / 10;
+
+ /* check for < 0 added via VMware ESX patches. */
+
+ /* hoisted up to the top because we do not want to count any
+ ridiculous values in the actual statistics. right? raj
+ 2011-07-28 */
+ if (time_delta < 0) {
+ h->ridiculous++;
+ return;
+ }
+
if (!h->total)
h->hmin = h->hmax = time_delta;
h->total++;
@@ -3879,10 +3890,6 @@
h->hmin = ((h->hmin < time_delta) ? h->hmin : time_delta);
h->hmax = ((h->hmax > time_delta) ? h->hmax : time_delta);
val = (float) time_delta;
- /* check for < 0 added via VMware ESX patches */
- if (val < 0) {
- h->ridiculous++;
- }
if(val < 10) h->unit_usec[(int)(val * base)]++;
else {
val /= 10;
More information about the netperf-dev
mailing list