diff options
Diffstat (limited to 'Release_Notes')
-rw-r--r-- | Release_Notes | 1089 |
1 files changed, 1089 insertions, 0 deletions
diff --git a/Release_Notes b/Release_Notes new file mode 100644 index 0000000..5e94aed --- /dev/null +++ b/Release_Notes @@ -0,0 +1,1089 @@ +These are the Release Notes for Revision 2.7.0 of netperf: + +*) Add bits/s (-f b) and Bytes/s (-f B) as selectable throughput + units. This may make life easier for folks doing post-processing of + things like interim results. + +*) Miscelaneous fixes + +*) Much of the now-seeming kruft for things peripheral to netperf's + core mission - have been removed though the code itself remains in + the repository. So, things like looking-up egress interface, + driver/slot information etc have been disabled in a manner + requiring more than just a ./configure to bring-back. + + It wasn't clear those features were being used. This is a test of + that hypothesis. + +These are the Release Notes for Revision 2.6.0 of netperf: + +*) Initial pass at support for --enable-intervals (WANT_INTERVALS) for + Windows, courtesy of Jonathan Cook. + +*) When in demo mode (./configure --enable-demo and a global -D + <interval> option netperf will make sure it emits "one last + interval result" when the test is terminated. This should assist + when post-processing results through the likes of rrdtool when + there is a slow-down in the performance just at the end that would + have stretched the interval to beyond the test termination. + +*) A fix to have the AF_UNIX tests realize that the value for "take + the system default" socket buffer size became -1 years ago. Bug + found by Eric Dumazet. + +*) Include a patch from Dave Taht to enable symbolic manipulation of + IP_TOS values. + +*) Include a patch from Sachar Raindel to enable the omni tests to get + ENOBUFS under Linux when the socket buffer is larger than the tx + queue of the egress interface. This will help preclude netperf's + reporting a larger than link-rate send-side figure. + +*) Fix a problem with late checking of the return from select() in + src/netserver.c. Reported by Waqar Sheikh. + +*) A new global -Z option has been added to netperf and netserver. + This takes as an argument a passphrase. In the case of netserver + it will expect a control message with the passphrase as the first + thing it receives on the control connection. If netserver does not + receive a control message with the passphrase it will close the + control connection and move-on. If the netserver receives a + control message with a passprhase when it is not lookign for one, + it will be ignored. There is at present a 20 second timeout on the + attempted receipt of the request message. In the case of netperf, + the passphrase will be the first thing sent on the control + connection. There is no response to a passphrase control message. + +*) Demo mode output format will now track the omni output format. So, + if the omni ouput format is CSV then the interim results will be + emitted in csv. Likewise for keyval. If the mode is human (default + and test-specific -O) then the output remains unchanged. Keyval + output includes the count of interval, with a mind towards being + able to source it in shells and whatnot. Subject to change without + notice. + +*) A patch to correctly handle IPv6 addresses in the control messages, + courtesy of Bjoern Zeeb. + +*) The global -F option can now be used specify a local and/or remote + fill file. + +*) It is now possible to set/get the TCP congestion control algorithm + being used by either end of the test connection when using the omni + code. The output selectors are LOCAL_CONG_CONTROL and + REMOTE_CONG_CONTROL and setting is via the test-specific -K option. + +*) Stop leaking file descriptors when looking-up probable egress + interface names and I/O slot numbers. + +*) The global -Y option can be used to set IP_TOS on those platforms + which support it. Since this is specific to IP (v4 or v6) it may + move to a test-specific otion in the future. It is presently + global for foolish consistency with the -y option to set + SO_PRIORITY. + +*) The global -y option can be used to set SO_PRIORITY on those + platforms which support it. Based on patches from Amir Vidai. + +*) The control message size has been increased from 256 bytes to 512 + bytes. THIS WILL BREAK COMPATABILITY WITH PREVIOUS VERSIONS OF + NETPERF. However, we need more room on the pinhead on which the + angels dance. + +*) Make the "sum" field of the histogram structure a 64 bit int to + avoid having it wrap-around on tests where the sum of all the + measured latencies was larger than 31 bits. This was causing + statistics like stddev to go negative in some cases. + +*) 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). Later included remote transport + retransmissions. + +*) 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 + of debug files and so debugging output. While this would put a + serious crimp in debugging a problem in netserver, it will enable + folks using small embedded systems to avoid soaking-up their /tmp + filesystem with clutter. + +*) A refactoring and partial re-write of the src/netserver.c code to + untangle years of accumulated spaghetti code. Included is the + ability to not daemonize netserver when launched from the + command-line (-D) and also to not fork/spawn child processes upon + the acceptance of a control connection (-f). Combined, the two + options will cause netserver to remain in the forground and not + spawn children - in effect netserver will handle only one test at a + time. + +*) As it has been two years since the defect in Solaris getaddrinfo() + was submitted, it should be the case that a fix is available, so it + should no longer be necessary to "hide" the "Hey your platform's + getaddrinfo() call is buggy" warning. Consequently, it is no + longer being suppressed. + +*) A new global command line option - -S - has been added to enable + setting of SO_KEEPALIVE on the data socket. This will affect the + netperf side of the "classic" netperf tests, and will also affect + the netserver side of an "omni" or migrated classic test as only + the control message for the omni tests has the requisite flags + field to communicate the desire to set SO_KEEPALIVE. + + Ostensibly, this may help when netperf is (ab)used in functional + testing situations and netservers end-up orphaned and out in the + cold because their corresponding netperfs went away and the + notification was lost amid the roar of traffic over-saturating the + interconnect(s). + + The default is to behave as before - SO_KEEPALIVE not set. + +*) Base on the frequency at which the author has used the + functionality, the default for --enable-burst is now "yes." To + disable support for burst mode one must now include a + --enable-burst=no when performing the ./configure prior to + compiling the bits. + +*) The output of the -D global command line option (./configure + --enable-demo) has been enhanced to include seconds and + milliseconds since the epoch as returned by a gettimeofday() call + with a null pointer for the timezone. This is in support of being + able to easily shove interim results into an rrdtool Round-Robin + Database (RRD). + +*) The "omni" tests will be compiled-in by default, and WANT_MIGRATION + is the default. One must ./configure with --enable-omni=no to + disable this. + +*) When ./configured with --enable-intervals and intervals are + actually used, the round-trip latency reported by an omni (or + migrated classic) request/response test should better reflect + reality rather than the length of the pacing interval. It and the + MEAN_LATENCY from the histogram and -j output will still differ + slightly and probably always will. + +*) The histogram code has been enhanced to track more than one latency + at a time and so --enable-histogram and --enable-burst are now + compatible - for the omni tests or migrated "classic" tests only + however. This change was inspired/instigated by Jim Gettys and his + work on overly-large queues of buffers + +*) WANT_MIGRATION is enabled when one specifies --enable-omni on the + configure command line. + +*) Massage and encorporate a patch from Google that enables + randomization of the IP addresses used in a test. An optional mask + length in the standard '/' notation can be added to the end of the + IP/name in the test-specific -H or -L options of an Omni test. + +*) Massage and include a DEBUG_LOG_FILE patch for Android from + Josselin Costanzi + +*) Add intial attempt to report Slot ID on HP-UX 11.31. + +*) Add global -s option to cause omni tests to pause between + setting-up the test and actually starting it. pause is in seconds. + Poor man's way to (attempt to) avoid issues when starting many, + Many, MANY concurrent netperf tests. Based on patches from Google. + +*) Additional timing statistics will be kept by the omni tests when + the global "-j" option is specified. The additional statistics are + min, max, mean, stddev and the 50th, 90th and 99th percentiles on + the timings measured by histograms. Based on patches from Google. + +*) Add a workaround to get Linux to report TX queue drops in a + UDP_STREAM test when the socket buffer size is larger than the + TX queue. Provided by Andrew Gallatin. + +*) Fix the configure script to know it does not have to look for an + SCTP library on FreeBSD 8.X + +*) The BSD and "omni" tests now have a test-specific -R option which + is a boolean controlling whether or not SO_DONTROUTE will be set on + the data socket. By default, any unidirectional UDP test will have + SO_DONTROUTE set unless a -R 1 option is given. All other tests + (including UDP request/response tests) will not have SO_DONTROUTE + set unless a -R 0 option is given. This is put into place to make + it take longer for blithering idiots to shoot themselves in the + foot by running tests on setups they shouldn't. + +*) At least the beginnings of support for RDS, based on a circa 2007 + patch against 2.4.2 by Vladimir Sokolovsky. Rather than create the + "RDS_STREAM" test of his patch, the intention this time around is + to enable RDS for the "omni" tests by using an omni test-specific + -T rds specifyer for the "transport" to use. + +*) Missing fprintf format statements provided by Bruno Cornec + +*) Numerous cleanups from Jose Pedro Oliveira + +*) Fixes to allow netperf -H ::1 to work without having to add -6 or + an AF_INET6 -L option + +These are the Release Notes for Revision 2.4.5 of netperf: + +Things changed in this release: + +*) Fixes for Linux procstat-based CPU utilization on newer kernels + from Andrew Gallatin. + +*) Fix for a TCP_RR hang from Michael Shuldman + +*) Compilation cleanups for MingW cnd MSDOS (djgpp) ourtesy of Gisle + Vanem. + +*) Changes to enable compilation and building of netperf for + VMware. Kudos to the person who did the first port, I will be happy + to name that person when told it is OK :) + +*) Fixes from Adam Bidema for launching netserver children when the + path to netserver.exe is very long. + +*) For the first time, netperf2 has a dependency, albeit optional, on + another non-base-os bit of code - libsmbios under Linux. It will + attept to detect this at compile time and use it to report the + system model name in an omni test. If libsmbios is there we will + try to use it, otherwise we will not. If the associated include + file is also there (eg the -dev package in apt-get-speak), we will + use it to get the prototype for SMBIOSGetSystemName, otherwise we + make a guess as to the prototype for SMBIOSGetSystemName(), which + is the only call we make to libsmbios. + +*) Fixes for BSD CPU utilization to deal with different BSD variants + using different types. Courtesy of Simon Burge <simonb@NetBSD.org> + +*) The "omni" suite has been added on an experimental basis. If it + works-out then many of the tests in src/nettest_bsd.c, + src/nettest_sdp.c, and src/nettest_sctp.c will be "migrated" to use + the "omni infrastructure" (aka two routines to measure them + all...). Apart from reduced socket code, the omni suite has + user-configurable output in either "human readable," CSV or + keyword=value format. By default, a VERY large quantity of data is + output when asking for csv format (test-specific -o option) or + keyword format (test-specific -k option). The omni suite is not + yet documented (there are some as-yet undiagnosed problems with + doc/netperf.texi in emacs texinfo mode and updating nodes and links + and such - any help there would be appreciated) but there is a + small text file in doc/ describing the names (most) of the + available output's. For the most up-to-date list consult + src/nettest_omni.c and the enum netperf_output_name. Or, you can + pass-in a "filename" of '?' to either of the -O, -o or -k options + and netperf will emit a list of the known available outputs. + +*) Coming along for the ride are some new platform specific files to + determine the probable egress interface for each end of a test, as + well as driver information for that interface. There is also + reporting of "uname" like information for both local and remote + system, and eventually perhaps something about the vendor's model + name for the systems as well as the processor types. The end goal + is to make it easy to get most if not all what one would want in a + database of netperf results. + +*) The UDP_RR test now understands the global -f option to change + output units. It also understands the -B option to tag + results. Courtesy of Alexander Duyck. + +*) A fix has been added for hanging UDP_RR tests under + Windows. Courtesy of Alexander Duyck. + +*) Use vfork() on those platforms without fork(), courtesy of Matt + Waddel + +*) Track the bouncing interfaces that are linux processor affinity + +*) Fixes for Solaris sendfilev usage. + +*) A TCP_MSS test has been added which will report the MSS for a data + connection setup as if the test were a TCP_STREAM test. While the + remote (netserver) is tricked into thinking it is to accept a + TCP_STREAM test, no actual data will flow over the connection. + This means that if the MSS is one which might change over the life + of the connection, it will not be reflected in the test output. + Should this prove to be a problem a single send() can be arranged + along with the return of the shutdown();recv() handshake. + + The idea is that this might be useful for netperf scripts wanting + to parameterize things based on the MSS - for example the + packet_byte_script. + +*) The width of the confidence interval can be specified in fractions + of a percent for the confidence of a clean, close, comfortable + calculation. :) + +*) Honor the global -B option in a TCP_SENDFILE test. + +*) Correct the sense of Send/Recv in the banner of a TCP_MAERTS test. + +These are the Release Notes for Revision 2.4.4 of netperf: + +Things changed in this release: + +*) The LOC_CPU and REM_CPU tests will report their respective beliefs + as to the number of CPUs present when the verbosity is set to more + than one. This can be used when trying to diagnose issues with CPU + utilization. + +*) A kind soul who wishes to remain anonymous provided a patch to + enable use of sendfile() on OSX. + +*) Fix a misplaced \n in a format string of send_tcp_maerts, courtesy + of Alexander Duyck. + +*) There is an experimental global -r option which will allow one to + include CPU utilization measurements, but make the decision about + hitting confidence based on the result only. The test banner will + reflects this when -r is used. + +*) It is no longer necessary to specify a file with the global -F + option when running a _SENDFILE test. Netperf will create a + temporary file and populate it with random data and use that. If + running aggregate tests it is strongly suggested one use a -F + option. Otherwise, the overhead spent creating and populating the + temporary file will be included in the CPU utilization calculation. + +*) The configure script recognizes Solaris 11 and selects the correct + CPU utilization mechanism - or rather it selects the same mechanism + as is used in Solaris 10. Fix courtesy of Andrew Gallatin. + +*) Convert a number of struct sockaddr_in's to struct + sockaddr_storage's and add requisite casts to deal with some abort + problems on Windows and perhaps other platforms as well. Kudos to + Alexander Duyck. + +*) One can now pass a value of 'x' to the global -f option to specify + the units as transactions per second. This is the default for any + request/response test, which is determined by there being a "double + `r'" in the name - eg "RR," "rr," "Rr," or "rR." At present only + the TCP_RR test actually looks for this to be set. + +*) One can request bits/bytes per second as the primary output of a + TCP_RR test by setting the global -f option to [kmgKMG] as with any + of the "STREAM" tests. This converts the primary throughput metric + to a bitrate (byterate) following the verbosity rules for a STREAM + test. Service demand remains usec/Transaction regardless of the + setting of the global -f option. + + A verbosity level of 2 or more will cause the TCP_RR test to report + calculated average RTT latency, transaction rate, and inbound and + outbound transfer rates regardless of the primary units selected + with the global -f paramter. If the primary output is transactions + per second, the reported inbound and outbound transfer rates will + be 10^6 bits per second, otherwise, they honor the setting of the + global -f option. + + All of this is EXPERIMENTAL and subject to change without prior + notice in future versions of netperf. + +*) Replace "break" with "break 2" in acinclude.m4 for a socklen macro + +*) The default for the requested socket buffer size is changed from 0 + to -1 to enable passing a value of 0 under Windows, which tells that + stack one wishes to enable copy-avoidance. + +*) Call fflush() on each interim result displayed in demo mode to make + things happier for folks redirecting same to a file. From Dan + Yost. + +*) In theory each distinct netserver child will have a debug log with + its pid appended to the name, somewhat like what appears to happen + under Windows. + +*) A new global, command-line option to netperf and netserver has been + added. The -V option will cause netperf/netserver to display its + version and exit. + +*) Setting -I without setting -i will now implicitly set the iteration + minimum and maximums as if a -i 10,3 were set. Also, some further + sanity checking on the bounds for each is made. + +*) Fixed a typo in the manual (found by Emir Halepovic) so the + description for the -s and -S options properly specifies they + affect the data connection. + +These are the Release Notes for Revision 2.4.3 of netperf: + +Things changed in this release: + +*) The UDP_STREAM test includes --enable-demo support, courtesy of + patches from Scott Weitzenkamp. + +*) The nettest_dns.* files have been removed from the release and the + repository. Those wishing to perform DNS server tests should + migrate to netperf4 which has better support for DNS test. + +*) Fixes for compiling under Windows with Mingw/gcc courtesy of Gisle + Vanem. + +*) A new global option - -N - has been added. When specified, this + option will tell netperf to not bother to try to establish a + control connection with a remote netserver. Instead, netperf will + only attempt to make a data connection to the remote system. By + default, this will be to the "discard" service for a "STREAM" or + "SENDFILE" test, the "echo" service for a "RR" test and the + "chargen" service for a "MAERTS" test. Any "remote" settings are + changed to reflect their being unused in the test, and a "no + control" tag is added to the test banner when -N is specified. + + This still needs to be propagated to other test files - at least + for those for which it may make sense. + +*) The tests in nettest_bsd.c have been altered to not actually take + timestamps and deltas in --enable-histogram unless the verbosity + level has been set to actually display a histogram. This reduces + the overhead measurably, even on systems with "fast" time calls, + which _may_ mean that a future release of netperf may have + histogram support enabled by default. + + This still needs to be propagated to other test files. Patches + from the community would be most welcome :) + +*) Eliminate a bogus fprintf from the signal catching routine which + was being executed when both intervals and demo mode were active at + the same time. + +*) The nettest_ipv6.* files are no longer included in the source + tar/zip file. IPv6 functionality has been subsumed into the + nettest_bsd.* files for some time now. + +*) Use a higher resolution "time" source for HISTOGRAM support under + Windows, courtesy of Spencer Frink. Prior to this it had no better + than 10ms granularity which could lead to some rather strange + looking results :) + +*) A bug fix reporting recv_size rather than send_size in TCP_MAERTS + when CPU utilization was requested. + +*) A bug fix for buffer filling from a file to properly advance the + buffer pointer when the file is smaller than the send buffer. + +*) Enable certain UDP tests which previously used unconnected sockets + to use connected sockets. Courtesy of Shilpi Agarwal. + +*) The OSX CPU utilization code actually gets put into the tarball in + a make dist now :) + +*) The check to make sure that getaddrinfo returned ai_protocol and/or + ai_socktype's matching that which we requested is done for all socket + and/or protocol types and a warning is emitted if it returns any which + do not match. + +*) The linux CPU affinity code has been made capable of binding to + CPU's >=32 on a 32-bit compilation and >=64 on a 64-bit + compilation. + +*) More complete closing/redirecting of stdin/stdout/stderr/where in + netserver to make it easier to launch netserver at the far-end of a + remote shell. Courtesy of Hans Blom. + +*) Sendfile changes for Solaris courtesy of Andrew Gallatin. + +*) "spec" file support to generate RPMs courtesy of Martin Brown + +These are the Release Notes for Revision 2.4.2 of netperf: + +Things changed in this release: + +*) Fixes for floating point format differences, courtesy of George + Davis. + +*) Additions for CPU util support on MacOS X, courtesy of Anonymous. + +*) Processor affinity is now supported on AIX 5.3 (perhaps earlier) + via the bindprocessor system call. + +*) Fixes for test lockups with TCP_CRR and TCP_CC under Windows + courtesy of Dikon Reed. + +*) Fixes to netcpu_looper.c to get it to actually compile :) + +*) Have netcpu_looper use the bind_to_specific_processor() call + provided by netlib since that knows about more platforms than the + code in netcpu_looper did. The looper CPU binding will use a + mapping to handle cases where the CPU id's on the system may not be + a contiguous space starting from zero. At present, the code that + setups the mapping only knows about retrieving actual CPU ids under + HP-UX. + +*) The netcpu_sysctl method becomes calibration-free, courtesy of + Andrew Gallatin + +These are the Release Notes for Revision 2.4.1 of netperf: + +Things changed in this release: + +*) There is now a -B global command-line argument that will append its + parameter as a string to the end of result lines when test banners + have been suppressed. this is to make it easier to distinguish one + result from another when aggregate restults are being run in + parallel, without having to resort to having the individual results + shell redirected to a file. This has been done for some of the + tests in nettest_bsd.c, but not all of them, nor for the tests in + the other nettest_mumble.c files. + +*) There is now an --enable-spin configure option that will enable + intervals if not already enabled and will have the sender sit and + spin in a tight loop until time for the next interval rather than + wait for an interval timer to expire. This means it should be + possible to have a much finer granularity on the interval, at the + expense of an EXTREME increase in CPU utilization. (To the extent + I'm considering disabling measurement of local CPU utilization when + that mode is enabled, and bursts have been requested - your + feedback on that topic would be most appreciated) + + If only --enable-intervals is used with configure, the old set the + interval timer and wait method is still used. + + If --enable-spin is configured, the test banner will include "spin + intervals" rather than the "intervals" from a plain + --enable-intervals. The sit and spin will either use + gettimeofday(), or gethrtime() if gethrtime() is available. + + This has been implemented in the tests of nettest_bsd.c but none of + the others. Volunteers would be most welcome. I would entertain + the notion of making the implementation a series of inline + functions in netlib. This holds true for the demo mode - why will + become clear when you look at nettest_bsd.c. While things are + considerably cleaner than they were before, with reuse within + nettest_bsd.c, there is no resuse with the rest of the + nettest_mumble.c files. + +*) the -w option for the interval time now takes three optional + suffixes. if the suffix is 'm' (eg 10m) it will assume the user has + specified time in units of milliseconds. if the suffix is 'u' it + will assume microseconds, and if 's' seconds. no suffix remains + milliseconds for backwards compatability with previous netperf + versions. + +*) It should be possible to successfully compile with + --enable-intervals. + +These are the Release Notes for Revision 2.4.1 of netperf: + +Things changed in this release: + +*) netcpu_pstatnew.c has been altered to workaround a bug in the + interrupt cycle accounting in HP-UX 11.23 that is not expected to + be resolved until a later release. basically, some interrupt time + is not counted, which means the sum of idle, user, kernel and + interrupt is less than the cycles per second multiplied by the + elapsed time. the workaround preserves the "no calibration + required" nature of the pstatnew CPU utilization mechanism. you + can see more in netcpu_pstatnew.c and/or in debug output. + +*) in netlib.c recv_response has been renamed + recv_response_timed(addl_time) which is now used in + calibrate_remote_cpu in place of the "sleep(40);recv_response()" + sequence. This then allows the REM_CPU test to complete in less + than 40 seconds when the remote's CPU utilization mechanism does + not require calibration. The value of "addl_time" is added to the + tc_sec field of the select() timeout. A "new" recv_response has + been added that simply calls recv_response_timed(0) - this is to + minimize the number of changes needed elsewhere in the code. + +*) hopefully, this release fixes problems people have been having with + the configure script failing when picking a type for socklen_t. + now, instead of generating an error, it emits a warning and simply + tries socklen_t + +*) the configure script no longer looks for the size of an in_port_t + +*) netlib.c now has code to perform processor binding for Tru64, but + the configure script may or may not detect it correctly. This means + that one may have to edit the config.h file by hand to get the + functionality. + +*) it is known that netperf will compile under Windows XP and 2003 + using the DDK it is possible that netperf 2.4.1 will compile on a + Windows system under VC++/Visual Studio. It might even work!-) See + the README.window file for additional details. + +Things _NOT_ changed in this release: + +*) The automagic determination of the number and type of parameters to + sched_setaffinity under Linux remains brittle at best. + +These are the Release Notes for Revision 2.4.0 of netperf: + +Things changed in this release: + +*) Netperf has been converted to use a configure script. Yes boys and + girls, after 12 years of distributing netperf with just a makefile + I have finally bitten the bullet and cast my fate to autoconf, + automake, etc. To get the most basic netperf built all you should + need to do is: + + cd to the netperf directory + ./configure + make + and perhaps + make install + + (Note, I've not done much with make install - I'm hemming and + hawing over what the default installation location should be) + + Please keep in mind that this is the first time I've tried to use + autoconf et al. I am sure there are things that should be done + differently and would welcome any and all constructive criticisms. + + I suspect there are several places where I've not fully + demonstrated being of the autoconf body - particulary as pertains + to include files being in "#if mumble #endif" blocks. Fixes would + be most welcome. + +*) Speaking of becomming one with various GNU tools, work on a new + netperf manual has begun, with the source being a texinfo document + that is converted to "all" the other formats. This resides in doc/ + . + +*) The platform-specific parts of CPU utilization measurement have + been broken-out into separate .c files and selected at configure + time a la the pcap_mumble files of tcpdump. This makes + src/netlib.c _much_ easier to read and the addition of new CPU + utilization mechanisms much easier. + +*) New HP-UX 11.23 and Solaris 10 CPU utilization measurement + mechanisms (called pstatnew and kstat10 respectively) need no + calibration step. Both have variations on microstate accounting. + HP-UX 11.23 still identifies the method in the headers as 'P' for + pstat. The kstat10 method is identified as 'M' for Microstate. + + Scripts which make calibration runs with LOC_CPU and REM_CPU may + continue to do so, they will just run forty to eighty seconds + faster on platforms with the calibration-free CPU util mechanisms. + +*) Automatic detection of CPU utilization mechanism for HP-UX, Linux, + AIX, *BSD and Solaris. If you do not like what the configure + script selects, you can use --enable-cpuutil=<foo> . + +*) The "times" (aka 'T') CPU utilization mechanism has been removed. + It was never very accurate at all, only showing CPU time charged to + the process, and with interrupts and other network processing it is + rarely chaged to a or the correct process. It and other methods + may remain in the format_cpu_method() routine of src/netlib.c for + historical purposes only. + +*) CAVEAT - the "kstat" mechanism is KNOWN TO BE BOGUS for Solaris. + It does not include time spent processing interrupts, and + networking benchmarks will generate at least a few of those... + This affects _ALL_ versions of Solaris with kstat. + + So, do NOT trust any CPU util figures where netperf says the method + was 'K' for kstat - unless perhaps it reports 100% CPU util. + + Solaris 10 takes a step in the right direction adding microstate + accounting similar to what netperf uses on HP-UX 11.23. HOWEVER, + Solaris 10's accounting for user/kernel/idle is done in _parallel_ + with interrupt, which means they overlap. Doubleplusungood. Netperf + attempts to compensate for that with some handwaving + (src/netcpu_kstat10.c) + +*) Initial support for SCTP has been added with the SCTP_STREAM and + SCTP_RR tests. These tests use the libsctp mechanisms for + increased portability. It has been explained that libsctp should + not impart all that much overhead and it does make things rather + simpler. + +*) Netperf now uses getaddrinfo() to resolve hostnames and IP + addresses. A replacement getaddrinfo() is provided for those + platforms where the configure script cannot tell that getaddrinfo + is present. + + There are cases where a host's getaddrinfo call may return results + that ignore the hints for protocol. Netperf catches these and + reports a warning so you can pester your OS source for fixes. + + Solaris getaddrinfo() seems to return results with SCTP procotol + cleared. + + Mac OS X getaddrinfo botches when the service/port is specified as + "0" so one must specify a port number on the netperf command line. + + AIX 5.something getaddrinfo has a different but similar problem + with "0" as a port/service name as well. + + Linux 2.6 and HP-UX 11i getaddrinfo seem to be fine - at least as + far as netperf goes :) + +*) A "Demo Mode" has been added to the main BSD Sockets/TCP/UDP tests: + TCP_STREAM, TCP_MAERTS, TCP_SENDFILE, TCP_RR, TCP_CC, TCP_CRR and + UDP_RR. It has not been added to UDP_STREAM. This mode is enabled + with --enable-demo when configuring netperf, which activates a + global "-D" option. By default, -D will cause interim results + (throughput or transactions/s only, not CPU util) from the + netperf's perspective to be emitted no sooner than once per second. + An optional parameter can specify another interval in units + (floating point) of seconds: + + -D 1.5 + + will make the reporting interval at least 1.5 seconds. + + This mode makes no use of explicit interval timers since that can + be so, well fun on different platforms. Instead, an initial guess + of how many units of work must be done to consume the desired + reporting interval is made, and that guess is refined throughout + the entire test. If something happens to dramatically slow-down + the test, the reproting interval may become must larger for a few + intervals. When things speed-up it is detected very quickly. As + with the --enable-historgram support, if gethrtime() is available + on the platform, it will be used in lieu of gettimeofday(). In any + case, the number of calls to gettimeofday()/gethrtime() is much, + Much, MUCH smaller than for --enable-histogram so while there may + be a measurable effect on the results, it should be rather small. + +*) The global -H option has been enhanced to take an optional address + family specification for the control connection: + + -H <remote>,<family> + + Unlike other comma-separated options, where specifying only one + thing will set both, here specifying only one thing will be + ass-u-me-d to be the <remote> and will leave <family> defaulted + (AF_UNSPEC). Family can be specified as "4" or "inet" for + AF_INET, "6" or "inet6" for AF_INET6. + +*) A new global -L option has been added to specify the local name/IP + and/or address family for the control connection: + + -L <local>,<family> + + Unlike other comma-separated options, where specifying only one + thing will set both, here specifying only one thing will be + ass-u-me-d to be the <local> and will leave <family> defaulted + (AF_UNSPEC). Family can be specified as "4" or "inet" for + AF_INET, "6" or "inet6" for AF_INET6. + +*) Test-specific -H and -L options are present for the TCP, UDP and + SCTP tests, which are now (intended to be) IP protocol version + agnostic. + +*) Global -4 and -6 options will set the both the local and remote + address family to either AF_INET or AF_INET6 respectively. + +*) Test-specific -4 and -6 options have been added for TCP, UDP and + SCTP tests. + +*) Since the basic TCP UDP and SCTP tests are no longer IPv4-only, the + nettest_ipv6.[ch] files are only included in the source + distribution for historical interest. + +*) The main test banners for the TCP, UDP and SCTP tests have been + enhanced to give both local and remote addressing information for + the data connection. + +*) Compilation under Windows is likely FUBAR at this point. I _hope_ + to start trying to do builds under the DDK soon, but am not sure + when I'll be able to start. Any and all assistance you can give + there would be most welcome. + +*) Various and sundry fixes. TCP_RR should no longer go into an + infinite loop when you abort netperf. I'm sure there are others. + +*) Unix domain socket tests are compiled-in with --enable-unix=yes at + configure time. + +*) DLPI tests are compiled-in with --enable-dlpi=yes at configure + time. + +*) XTI tests are compiled-in with --enable-xti=yes at configure time. + +Things not changed in this release: + +*) Seems like everything has changed :) + +These are the Release Notes for Revision 2.3pl2 of netperf: + +Things changed in this release + +*) One can bind netperf or netserver to specific CPUs with the -T + option. This is a generalization of some HP-UX and netserver specific + work from 2.3pl1. + +*) Extend the kludge to workaround the Linux setsockopt/getsockopt + bizzarreness to the socket buffer sizes for the remote side in + addition to the local side. + +*) Fix the lack of initialization of times_up in recv_tcp_maerts() + that caused confidence intervals to fail miserably. + +*) Other misc fixes - than you to all of you who sent them. + +These are the Release Notes for revision 2.3pl1 of netperf: + +Things changed in this release + +*) The bind() call in create_data_socket() in the file nettest_bsd.c + is no longer conditional on the user's specifying an IP address or + port number to which the data socket should be bound. This fixes + the "connection refused" errors in the UDP tests. + +*) Some experimental code to allow one to specify a CPU to which the + remote netserver should be bound. This is intended to allow one to + get greater certainty (as in confidence intervals) on SMP + systems. At present the functionality is HP-UX specific. + Submittals of changes for a more general approach are welcomed. + +These are the Release Notes for revision 2.3 of netperf: + +Things changed in this release + +*) The user can now specify local and/or remote port numbers for the + data connection using the -P test-specific option. This is to + support those folks who want to run netperf through those evil, + end-to-end-breaking things known as firewalls... :) This changes + the format of some of the control messages, hence the bump in the + update number in the VUF. While it may be possible to mix 2.3 and + pre-2.3 netperf and netserver, it is not supported. + +*) The user can now specify local and/or remote IP addresses for the + data connection using the -I test-specific option. This is to + support those folks who want to run netperf through those evil, + end-to-end-breaking things known as firewalls... :) This changes + the format of some of the control messages, hence the bump in the + update number in the VUF. While it may be possible to mix 2.3 and + pre-2.3 netperf and netserver, it is not supported. + +*) Set DL_mumble message priorities in the DLPI tests + +*) Fix error return check for getaddrinfo() + +*) Those systems with gethrtime() can define -DHAVE_GETHRTIME to use + gethrtime() instead of gettimeofday() and reduce the measurement + overhead when enabling the -DHISTOGRAM functionality. + +*) The default for -DHISTOGRAM compilation now adds a UNIT_USEC and + TEN_USEC row and renames TENTH_MSEC to HUNDRED_USEC. If you want + the old behaviour add -DOLD_HISTOGRAM to CFLAGS. + +*) Add missing '!' in the recv_udp*_stream so we recognize the end of + a timed test correctly. + +*) Replace "||" with "&&" to fix an infinite loop in + recv_tcp_conn_rr() most likely introduced in 2.2pl5. + +*) Code has been added to kludge around the bug in Linux getsockopt() + where it almost always returns twice the value for which one + asks unlike virtually every other stack on the face of the + planet. This was doing some unpleasant things to tests in which + confidence intervals were requested. + +Things not changed in this release + +*) Lots :) + +These are the Release Notes for revision 2.2pl5 of netperf: + +Things changed in this release + +*) Improved (perhaps even usable :) support for Windows, including +compilation and run on Win64. + +*) Fixes for MacOS X and FreeBSD + +Things not changed in this release + +*) Specifying the port number(s) for the data connection + +These are the Release Notes for Revision 2.2pl4 of netperf: + +Things changed in this release + +*) USE_SYSCTL available on suitable FreeBSD releases to measure CPU + utilization without having to resort to -DUSE_LOOPER. + +*) Include Solaris 9 with the Linux sendfile path under -DHAVE_SENDFILE + +This still outstanding in this release + +*) Knowing why signals are not interrupting socket calls under + OpenVMS. A quick try to use threads for timing a la Win32 worked, + but also cut performance in half. Any and all assistance in this + area would be most welcome. + +These are the Release Notes for revisoin 2.2pl3 of netperf: + +Things changed in this release + +*) I started practicing what I preach and will set SO_REUSEADDR before + netserver tries to bind to its well-known port. + +*) Initial port to OpenVMS. This includes support for the OVMS + Auxilliary server (inetd replacement). See README.ovms for more + details on what is involved in compiling and running netperf under + OpenVMS. + +*) Testname comparisons are now case insensitive. This is a side + effect of OpenVMS downshifting commandlines to lowercase. I made + the change and decided it was OK to keep it that way, even though + for OpenVMS one _has_ to set the right defines to disable that + downshifting or the command-line options will not work. For example + "-H" will become "-h" which isn't quite the same thing... + +*) Misc fixes for nettest_ipv6.c. + +*) Support for sendfile() under Linux + +Thins I would like to have changed but did not know how or didn't have +time: + +*) Allow netserver to run as a standalone daemon under OpenVMS +*) Allow netserver to run as a standalone daemon under Windows +*) Rediscover an inetd-like facility for Windows +*) Figure-out how to get low-overhead, accurate, per-CPU utilization + figures under OpenVMS +*) Get the UDP_RR and UDP_STREAM tests to work under OpenVMS, and get + the TCP_RR test to work based on time rather than transaction + count. There is some bug (possibly in OpenVMS?) where the SIGALRM + fires, but a socket call will not return an EINTR. + +Things that changed prior to this release: + +*) Addition of the TCP_MAERTS test - this is a TCP_STREAM test where + the data flows from the netserver to the netperf rather than from + the netperf to the netserver. This can be useful in those + situations where netperf (netserver) is installed on a remote + system, but the tester has no shell access and wishes to get + performance data for the path from netserver to netperf. + +These are the Release Notes for the 2.2 revision of netperf: + +Things changed in this release + +*) Various and sundry bugs fixed (in theory) for platforms such as + FreeBSD and Linux. If I left-out your bug fix, it was purely + accidental - my mind has a very small cache, and sometimes I will + "lose" email in the shuffle. + +*) Initial support for sendfile() on HP-UX. This test will use the + sendfile() call instead of send() to send data to the + remote. Netperf "lies" to netserver and calls it a TCP_STREAM test + since what netserver needs to do is exactly the same. A future + patch may change that and simply have netserver call the same + routine for both test types. Kudos to Charles Harris for the + initial prototype. + +*) The Fore ATM API and HiPPI tests have been dropped from the + distribution. + +Things I would have liked to have changed, but did not have time for: + +*) Conversion of the source and makefile to use the GNU configure/autoconf + utility to make it easier for folks to build by not having to edit + makefiles... You will notice that I have started to switch from + "DO_MUMBLE" to "HAVE_MUMBLE" + +as always - happy benchmarking, + +rick jones <raj@cup.hp.com> + +--------------------------------------------------------------------- + +These are the Release Notes for the 2.1pl3 revision of netperf: + +*) An OBOB (Off By One Bug) in netlib.c that was causing a core dump + on Irix should be fixed. + +*) Irix systems should now be able to determine the number of CPU's + present automagically (code from outside, not tested yet because I + have no MP Irix systems at my disposal) + +*) An alpha version of a TCP_CC test has been added - this is a + TCP_CRR test with out the "RR." + +*) The -Ae has been removed from the default makefile. If someone has + a nice way to automagically generate the correct makefile for + different platforms I would like to learn how. + +happy benchmarking, + +rick jones <raj@cup.hp.com> + +---------------------------------------------------------------------- + +These are the Release Notes for the 2.1 revision of netperf: + +Things Changed in this release: + +*) The XTI (Version 2 of the spec) tests are now documented in the + manual. + +*) The TCP_CRR (Connect Request/Response) test is now documented in + the manual, including a description of how it mimics the behaviour + of http (the protocol underlying the WWW). + +*) Support for for Windows NT 3.51 OS in the BSD Sockets tests (ok, so + they are really Winsock in that case :). Other test suites may be + ported as required/desired/appropriate. + +*) Tests for TCP and UDP, using the IPv6 extensions to BSD sockets are + included in this release. They are included by adding -DUSE_IPv6 to + the makefile and recompiling. + +*) Support for a "long long" datatype should only be required for + -DUSE_PSTAT compilation which is an HP-UX only thing. The + *unbundled* HP compilers from at least "HP92453-01 A.09.61 HP C + Compiler" and later should have the required support. The bundled + compiler may not. GCC should work - check the archives listed in + the comp.sys.hp.hpux FAQ for copies. The FAQ is archived on + rtfm.mit.edu under the path pub/usenet/comp.sys.hp.hpux. + +*) A "proper" fix for double data type alignment has been included. + +*) A new script is included with this release which can be used to + measure aggregate TCP_RR performance (multiple, concurrent + instances of the TCP_RR test). A related use of this script would + be measuring MP scaling. A single-byte TCP_RR test is good for this + purpose for two reasons: + + 1) it excercises the control/protocol paths heavily without + using much in the way of data copies which may be easier to + scale. + 2) most systems can easily saturate cards with bandwidth, but + not so easily with request/response + + Of course, feedback on this is most welcome. + +*) When measuring CPU utilization, the units for service demand have + been changed from milliseconds (designated ms) of CPU per unit (KB + or Transaction) to microseconds (desginated us). + +*) For accurate reporting of service demand, netperf needs to know the + number of CPU's present on a system. On some systems (HP-UX), this + is automatic. For others (All), it is necessary to add a global "-n + <numcpu>" option to both netperf and netserver. + + !! IF THIS IS LEFT-OUT CPU UTILIZATION AND SERVICE DEMAND FOR !! + !! MULTI-PROCESSOR SYSTEMS WILL BE WRONG. !! + + If you know of ways to programatically determine the number of + active CPUs on a system, please let the author Rick Jones + <raj@cup.hp.com> know. + +*) other things I've probably forgotten :) + +Things Not Changed in this release: + +*) The ancillary test suites are essentially unchanged - DLPI, + HiPPI/LLA, Unix Domain, and Fore ATM API. Unless there is much + interest expressed in these tests, 2.1 may be the last release in + which they are included. The order of retirement would likely be + Unix Domain, HiPPI/LLA, Fore ATM API, and then DLPI. + +Miscelaneous Comments: + +*) The -DUSE_LOOPER CPU utilization _seems_ to be nice and low-impact + on HP-UX, Digital Unix, and IRIX. It does not yet seem to be + low-impact on Solaris (I need an example of priocntl usage), AIX + (setpri only works if you are root), and NT (not sure of the + reason). Help with those problems would be most appreciated. |