1These are the Release Notes for Revision 2.7.0 of netperf: 2 3*) Add bits/s (-f b) and Bytes/s (-f B) as selectable throughput 4 units. This may make life easier for folks doing post-processing of 5 things like interim results. 6 7*) Miscelaneous fixes 8 9*) Much of the now-seeming kruft for things peripheral to netperf's 10 core mission - have been removed though the code itself remains in 11 the repository. So, things like looking-up egress interface, 12 driver/slot information etc have been disabled in a manner 13 requiring more than just a ./configure to bring-back. 14 15 It wasn't clear those features were being used. This is a test of 16 that hypothesis. 17 18These are the Release Notes for Revision 2.6.0 of netperf: 19 20*) Initial pass at support for --enable-intervals (WANT_INTERVALS) for 21 Windows, courtesy of Jonathan Cook. 22 23*) When in demo mode (./configure --enable-demo and a global -D 24 <interval> option netperf will make sure it emits "one last 25 interval result" when the test is terminated. This should assist 26 when post-processing results through the likes of rrdtool when 27 there is a slow-down in the performance just at the end that would 28 have stretched the interval to beyond the test termination. 29 30*) A fix to have the AF_UNIX tests realize that the value for "take 31 the system default" socket buffer size became -1 years ago. Bug 32 found by Eric Dumazet. 33 34*) Include a patch from Dave Taht to enable symbolic manipulation of 35 IP_TOS values. 36 37*) Include a patch from Sachar Raindel to enable the omni tests to get 38 ENOBUFS under Linux when the socket buffer is larger than the tx 39 queue of the egress interface. This will help preclude netperf's 40 reporting a larger than link-rate send-side figure. 41 42*) Fix a problem with late checking of the return from select() in 43 src/netserver.c. Reported by Waqar Sheikh. 44 45*) A new global -Z option has been added to netperf and netserver. 46 This takes as an argument a passphrase. In the case of netserver 47 it will expect a control message with the passphrase as the first 48 thing it receives on the control connection. If netserver does not 49 receive a control message with the passphrase it will close the 50 control connection and move-on. If the netserver receives a 51 control message with a passprhase when it is not lookign for one, 52 it will be ignored. There is at present a 20 second timeout on the 53 attempted receipt of the request message. In the case of netperf, 54 the passphrase will be the first thing sent on the control 55 connection. There is no response to a passphrase control message. 56 57*) Demo mode output format will now track the omni output format. So, 58 if the omni ouput format is CSV then the interim results will be 59 emitted in csv. Likewise for keyval. If the mode is human (default 60 and test-specific -O) then the output remains unchanged. Keyval 61 output includes the count of interval, with a mind towards being 62 able to source it in shells and whatnot. Subject to change without 63 notice. 64 65*) A patch to correctly handle IPv6 addresses in the control messages, 66 courtesy of Bjoern Zeeb. 67 68*) The global -F option can now be used specify a local and/or remote 69 fill file. 70 71*) It is now possible to set/get the TCP congestion control algorithm 72 being used by either end of the test connection when using the omni 73 code. The output selectors are LOCAL_CONG_CONTROL and 74 REMOTE_CONG_CONTROL and setting is via the test-specific -K option. 75 76*) Stop leaking file descriptors when looking-up probable egress 77 interface names and I/O slot numbers. 78 79*) The global -Y option can be used to set IP_TOS on those platforms 80 which support it. Since this is specific to IP (v4 or v6) it may 81 move to a test-specific otion in the future. It is presently 82 global for foolish consistency with the -y option to set 83 SO_PRIORITY. 84 85*) The global -y option can be used to set SO_PRIORITY on those 86 platforms which support it. Based on patches from Amir Vidai. 87 88*) The control message size has been increased from 256 bytes to 512 89 bytes. THIS WILL BREAK COMPATABILITY WITH PREVIOUS VERSIONS OF 90 NETPERF. However, we need more room on the pinhead on which the 91 angels dance. 92 93*) Make the "sum" field of the histogram structure a 64 bit int to 94 avoid having it wrap-around on tests where the sum of all the 95 measured latencies was larger than 31 bits. This was causing 96 statistics like stddev to go negative in some cases. 97 98*) If the time delta between two events is negative, do not bother 99 doing any math with it in the histogram/statistics code, just 100 increment the ridiculous count and move-on. 101 102*) Fixed a bug which caused local transport retransmissions to be 103 reported as -1 even though the getsockopt() call was 104 successful. (Linux). Later included remote transport 105 retransmissions. 106 107*) The src/nettest_omni.c and re-written src/netserver.c code are now 108 known to have compiled under Windows 7 x64 with the Microsoft 109 WDK. There remains a timing issue with confidence intervals which 110 is yet to be addressed, and may have been there for ages. Netserver 111 has been run as a non-spawning (-f) server, netperf has been run, 112 both have run "classic" and "omni" tests. 113 114These are the Release Notes for Revision 2.5.0 of netperf: 115 116*) Add a new -N option to netserver which will suppress all creation 117 of debug files and so debugging output. While this would put a 118 serious crimp in debugging a problem in netserver, it will enable 119 folks using small embedded systems to avoid soaking-up their /tmp 120 filesystem with clutter. 121 122*) A refactoring and partial re-write of the src/netserver.c code to 123 untangle years of accumulated spaghetti code. Included is the 124 ability to not daemonize netserver when launched from the 125 command-line (-D) and also to not fork/spawn child processes upon 126 the acceptance of a control connection (-f). Combined, the two 127 options will cause netserver to remain in the forground and not 128 spawn children - in effect netserver will handle only one test at a 129 time. 130 131*) As it has been two years since the defect in Solaris getaddrinfo() 132 was submitted, it should be the case that a fix is available, so it 133 should no longer be necessary to "hide" the "Hey your platform's 134 getaddrinfo() call is buggy" warning. Consequently, it is no 135 longer being suppressed. 136 137*) A new global command line option - -S - has been added to enable 138 setting of SO_KEEPALIVE on the data socket. This will affect the 139 netperf side of the "classic" netperf tests, and will also affect 140 the netserver side of an "omni" or migrated classic test as only 141 the control message for the omni tests has the requisite flags 142 field to communicate the desire to set SO_KEEPALIVE. 143 144 Ostensibly, this may help when netperf is (ab)used in functional 145 testing situations and netservers end-up orphaned and out in the 146 cold because their corresponding netperfs went away and the 147 notification was lost amid the roar of traffic over-saturating the 148 interconnect(s). 149 150 The default is to behave as before - SO_KEEPALIVE not set. 151 152*) Base on the frequency at which the author has used the 153 functionality, the default for --enable-burst is now "yes." To 154 disable support for burst mode one must now include a 155 --enable-burst=no when performing the ./configure prior to 156 compiling the bits. 157 158*) The output of the -D global command line option (./configure 159 --enable-demo) has been enhanced to include seconds and 160 milliseconds since the epoch as returned by a gettimeofday() call 161 with a null pointer for the timezone. This is in support of being 162 able to easily shove interim results into an rrdtool Round-Robin 163 Database (RRD). 164 165*) The "omni" tests will be compiled-in by default, and WANT_MIGRATION 166 is the default. One must ./configure with --enable-omni=no to 167 disable this. 168 169*) When ./configured with --enable-intervals and intervals are 170 actually used, the round-trip latency reported by an omni (or 171 migrated classic) request/response test should better reflect 172 reality rather than the length of the pacing interval. It and the 173 MEAN_LATENCY from the histogram and -j output will still differ 174 slightly and probably always will. 175 176*) The histogram code has been enhanced to track more than one latency 177 at a time and so --enable-histogram and --enable-burst are now 178 compatible - for the omni tests or migrated "classic" tests only 179 however. This change was inspired/instigated by Jim Gettys and his 180 work on overly-large queues of buffers 181 182*) WANT_MIGRATION is enabled when one specifies --enable-omni on the 183 configure command line. 184 185*) Massage and encorporate a patch from Google that enables 186 randomization of the IP addresses used in a test. An optional mask 187 length in the standard '/' notation can be added to the end of the 188 IP/name in the test-specific -H or -L options of an Omni test. 189 190*) Massage and include a DEBUG_LOG_FILE patch for Android from 191 Josselin Costanzi 192 193*) Add intial attempt to report Slot ID on HP-UX 11.31. 194 195*) Add global -s option to cause omni tests to pause between 196 setting-up the test and actually starting it. pause is in seconds. 197 Poor man's way to (attempt to) avoid issues when starting many, 198 Many, MANY concurrent netperf tests. Based on patches from Google. 199 200*) Additional timing statistics will be kept by the omni tests when 201 the global "-j" option is specified. The additional statistics are 202 min, max, mean, stddev and the 50th, 90th and 99th percentiles on 203 the timings measured by histograms. Based on patches from Google. 204 205*) Add a workaround to get Linux to report TX queue drops in a 206 UDP_STREAM test when the socket buffer size is larger than the 207 TX queue. Provided by Andrew Gallatin. 208 209*) Fix the configure script to know it does not have to look for an 210 SCTP library on FreeBSD 8.X 211 212*) The BSD and "omni" tests now have a test-specific -R option which 213 is a boolean controlling whether or not SO_DONTROUTE will be set on 214 the data socket. By default, any unidirectional UDP test will have 215 SO_DONTROUTE set unless a -R 1 option is given. All other tests 216 (including UDP request/response tests) will not have SO_DONTROUTE 217 set unless a -R 0 option is given. This is put into place to make 218 it take longer for blithering idiots to shoot themselves in the 219 foot by running tests on setups they shouldn't. 220 221*) At least the beginnings of support for RDS, based on a circa 2007 222 patch against 2.4.2 by Vladimir Sokolovsky. Rather than create the 223 "RDS_STREAM" test of his patch, the intention this time around is 224 to enable RDS for the "omni" tests by using an omni test-specific 225 -T rds specifyer for the "transport" to use. 226 227*) Missing fprintf format statements provided by Bruno Cornec 228 229*) Numerous cleanups from Jose Pedro Oliveira 230 231*) Fixes to allow netperf -H ::1 to work without having to add -6 or 232 an AF_INET6 -L option 233 234These are the Release Notes for Revision 2.4.5 of netperf: 235 236Things changed in this release: 237 238*) Fixes for Linux procstat-based CPU utilization on newer kernels 239 from Andrew Gallatin. 240 241*) Fix for a TCP_RR hang from Michael Shuldman 242 243*) Compilation cleanups for MingW cnd MSDOS (djgpp) ourtesy of Gisle 244 Vanem. 245 246*) Changes to enable compilation and building of netperf for 247 VMware. Kudos to the person who did the first port, I will be happy 248 to name that person when told it is OK :) 249 250*) Fixes from Adam Bidema for launching netserver children when the 251 path to netserver.exe is very long. 252 253*) For the first time, netperf2 has a dependency, albeit optional, on 254 another non-base-os bit of code - libsmbios under Linux. It will 255 attept to detect this at compile time and use it to report the 256 system model name in an omni test. If libsmbios is there we will 257 try to use it, otherwise we will not. If the associated include 258 file is also there (eg the -dev package in apt-get-speak), we will 259 use it to get the prototype for SMBIOSGetSystemName, otherwise we 260 make a guess as to the prototype for SMBIOSGetSystemName(), which 261 is the only call we make to libsmbios. 262 263*) Fixes for BSD CPU utilization to deal with different BSD variants 264 using different types. Courtesy of Simon Burge <simonb@NetBSD.org> 265 266*) The "omni" suite has been added on an experimental basis. If it 267 works-out then many of the tests in src/nettest_bsd.c, 268 src/nettest_sdp.c, and src/nettest_sctp.c will be "migrated" to use 269 the "omni infrastructure" (aka two routines to measure them 270 all...). Apart from reduced socket code, the omni suite has 271 user-configurable output in either "human readable," CSV or 272 keyword=value format. By default, a VERY large quantity of data is 273 output when asking for csv format (test-specific -o option) or 274 keyword format (test-specific -k option). The omni suite is not 275 yet documented (there are some as-yet undiagnosed problems with 276 doc/netperf.texi in emacs texinfo mode and updating nodes and links 277 and such - any help there would be appreciated) but there is a 278 small text file in doc/ describing the names (most) of the 279 available output's. For the most up-to-date list consult 280 src/nettest_omni.c and the enum netperf_output_name. Or, you can 281 pass-in a "filename" of '?' to either of the -O, -o or -k options 282 and netperf will emit a list of the known available outputs. 283 284*) Coming along for the ride are some new platform specific files to 285 determine the probable egress interface for each end of a test, as 286 well as driver information for that interface. There is also 287 reporting of "uname" like information for both local and remote 288 system, and eventually perhaps something about the vendor's model 289 name for the systems as well as the processor types. The end goal 290 is to make it easy to get most if not all what one would want in a 291 database of netperf results. 292 293*) The UDP_RR test now understands the global -f option to change 294 output units. It also understands the -B option to tag 295 results. Courtesy of Alexander Duyck. 296 297*) A fix has been added for hanging UDP_RR tests under 298 Windows. Courtesy of Alexander Duyck. 299 300*) Use vfork() on those platforms without fork(), courtesy of Matt 301 Waddel 302 303*) Track the bouncing interfaces that are linux processor affinity 304 305*) Fixes for Solaris sendfilev usage. 306 307*) A TCP_MSS test has been added which will report the MSS for a data 308 connection setup as if the test were a TCP_STREAM test. While the 309 remote (netserver) is tricked into thinking it is to accept a 310 TCP_STREAM test, no actual data will flow over the connection. 311 This means that if the MSS is one which might change over the life 312 of the connection, it will not be reflected in the test output. 313 Should this prove to be a problem a single send() can be arranged 314 along with the return of the shutdown();recv() handshake. 315 316 The idea is that this might be useful for netperf scripts wanting 317 to parameterize things based on the MSS - for example the 318 packet_byte_script. 319 320*) The width of the confidence interval can be specified in fractions 321 of a percent for the confidence of a clean, close, comfortable 322 calculation. :) 323 324*) Honor the global -B option in a TCP_SENDFILE test. 325 326*) Correct the sense of Send/Recv in the banner of a TCP_MAERTS test. 327 328These are the Release Notes for Revision 2.4.4 of netperf: 329 330Things changed in this release: 331 332*) The LOC_CPU and REM_CPU tests will report their respective beliefs 333 as to the number of CPUs present when the verbosity is set to more 334 than one. This can be used when trying to diagnose issues with CPU 335 utilization. 336 337*) A kind soul who wishes to remain anonymous provided a patch to 338 enable use of sendfile() on OSX. 339 340*) Fix a misplaced \n in a format string of send_tcp_maerts, courtesy 341 of Alexander Duyck. 342 343*) There is an experimental global -r option which will allow one to 344 include CPU utilization measurements, but make the decision about 345 hitting confidence based on the result only. The test banner will 346 reflects this when -r is used. 347 348*) It is no longer necessary to specify a file with the global -F 349 option when running a _SENDFILE test. Netperf will create a 350 temporary file and populate it with random data and use that. If 351 running aggregate tests it is strongly suggested one use a -F 352 option. Otherwise, the overhead spent creating and populating the 353 temporary file will be included in the CPU utilization calculation. 354 355*) The configure script recognizes Solaris 11 and selects the correct 356 CPU utilization mechanism - or rather it selects the same mechanism 357 as is used in Solaris 10. Fix courtesy of Andrew Gallatin. 358 359*) Convert a number of struct sockaddr_in's to struct 360 sockaddr_storage's and add requisite casts to deal with some abort 361 problems on Windows and perhaps other platforms as well. Kudos to 362 Alexander Duyck. 363 364*) One can now pass a value of 'x' to the global -f option to specify 365 the units as transactions per second. This is the default for any 366 request/response test, which is determined by there being a "double 367 `r'" in the name - eg "RR," "rr," "Rr," or "rR." At present only 368 the TCP_RR test actually looks for this to be set. 369 370*) One can request bits/bytes per second as the primary output of a 371 TCP_RR test by setting the global -f option to [kmgKMG] as with any 372 of the "STREAM" tests. This converts the primary throughput metric 373 to a bitrate (byterate) following the verbosity rules for a STREAM 374 test. Service demand remains usec/Transaction regardless of the 375 setting of the global -f option. 376 377 A verbosity level of 2 or more will cause the TCP_RR test to report 378 calculated average RTT latency, transaction rate, and inbound and 379 outbound transfer rates regardless of the primary units selected 380 with the global -f paramter. If the primary output is transactions 381 per second, the reported inbound and outbound transfer rates will 382 be 10^6 bits per second, otherwise, they honor the setting of the 383 global -f option. 384 385 All of this is EXPERIMENTAL and subject to change without prior 386 notice in future versions of netperf. 387 388*) Replace "break" with "break 2" in acinclude.m4 for a socklen macro 389 390*) The default for the requested socket buffer size is changed from 0 391 to -1 to enable passing a value of 0 under Windows, which tells that 392 stack one wishes to enable copy-avoidance. 393 394*) Call fflush() on each interim result displayed in demo mode to make 395 things happier for folks redirecting same to a file. From Dan 396 Yost. 397 398*) In theory each distinct netserver child will have a debug log with 399 its pid appended to the name, somewhat like what appears to happen 400 under Windows. 401 402*) A new global, command-line option to netperf and netserver has been 403 added. The -V option will cause netperf/netserver to display its 404 version and exit. 405 406*) Setting -I without setting -i will now implicitly set the iteration 407 minimum and maximums as if a -i 10,3 were set. Also, some further 408 sanity checking on the bounds for each is made. 409 410*) Fixed a typo in the manual (found by Emir Halepovic) so the 411 description for the -s and -S options properly specifies they 412 affect the data connection. 413 414These are the Release Notes for Revision 2.4.3 of netperf: 415 416Things changed in this release: 417 418*) The UDP_STREAM test includes --enable-demo support, courtesy of 419 patches from Scott Weitzenkamp. 420 421*) The nettest_dns.* files have been removed from the release and the 422 repository. Those wishing to perform DNS server tests should 423 migrate to netperf4 which has better support for DNS test. 424 425*) Fixes for compiling under Windows with Mingw/gcc courtesy of Gisle 426 Vanem. 427 428*) A new global option - -N - has been added. When specified, this 429 option will tell netperf to not bother to try to establish a 430 control connection with a remote netserver. Instead, netperf will 431 only attempt to make a data connection to the remote system. By 432 default, this will be to the "discard" service for a "STREAM" or 433 "SENDFILE" test, the "echo" service for a "RR" test and the 434 "chargen" service for a "MAERTS" test. Any "remote" settings are 435 changed to reflect their being unused in the test, and a "no 436 control" tag is added to the test banner when -N is specified. 437 438 This still needs to be propagated to other test files - at least 439 for those for which it may make sense. 440 441*) The tests in nettest_bsd.c have been altered to not actually take 442 timestamps and deltas in --enable-histogram unless the verbosity 443 level has been set to actually display a histogram. This reduces 444 the overhead measurably, even on systems with "fast" time calls, 445 which _may_ mean that a future release of netperf may have 446 histogram support enabled by default. 447 448 This still needs to be propagated to other test files. Patches 449 from the community would be most welcome :) 450 451*) Eliminate a bogus fprintf from the signal catching routine which 452 was being executed when both intervals and demo mode were active at 453 the same time. 454 455*) The nettest_ipv6.* files are no longer included in the source 456 tar/zip file. IPv6 functionality has been subsumed into the 457 nettest_bsd.* files for some time now. 458 459*) Use a higher resolution "time" source for HISTOGRAM support under 460 Windows, courtesy of Spencer Frink. Prior to this it had no better 461 than 10ms granularity which could lead to some rather strange 462 looking results :) 463 464*) A bug fix reporting recv_size rather than send_size in TCP_MAERTS 465 when CPU utilization was requested. 466 467*) A bug fix for buffer filling from a file to properly advance the 468 buffer pointer when the file is smaller than the send buffer. 469 470*) Enable certain UDP tests which previously used unconnected sockets 471 to use connected sockets. Courtesy of Shilpi Agarwal. 472 473*) The OSX CPU utilization code actually gets put into the tarball in 474 a make dist now :) 475 476*) The check to make sure that getaddrinfo returned ai_protocol and/or 477 ai_socktype's matching that which we requested is done for all socket 478 and/or protocol types and a warning is emitted if it returns any which 479 do not match. 480 481*) The linux CPU affinity code has been made capable of binding to 482 CPU's >=32 on a 32-bit compilation and >=64 on a 64-bit 483 compilation. 484 485*) More complete closing/redirecting of stdin/stdout/stderr/where in 486 netserver to make it easier to launch netserver at the far-end of a 487 remote shell. Courtesy of Hans Blom. 488 489*) Sendfile changes for Solaris courtesy of Andrew Gallatin. 490 491*) "spec" file support to generate RPMs courtesy of Martin Brown 492 493These are the Release Notes for Revision 2.4.2 of netperf: 494 495Things changed in this release: 496 497*) Fixes for floating point format differences, courtesy of George 498 Davis. 499 500*) Additions for CPU util support on MacOS X, courtesy of Anonymous. 501 502*) Processor affinity is now supported on AIX 5.3 (perhaps earlier) 503 via the bindprocessor system call. 504 505*) Fixes for test lockups with TCP_CRR and TCP_CC under Windows 506 courtesy of Dikon Reed. 507 508*) Fixes to netcpu_looper.c to get it to actually compile :) 509 510*) Have netcpu_looper use the bind_to_specific_processor() call 511 provided by netlib since that knows about more platforms than the 512 code in netcpu_looper did. The looper CPU binding will use a 513 mapping to handle cases where the CPU id's on the system may not be 514 a contiguous space starting from zero. At present, the code that 515 setups the mapping only knows about retrieving actual CPU ids under 516 HP-UX. 517 518*) The netcpu_sysctl method becomes calibration-free, courtesy of 519 Andrew Gallatin 520 521These are the Release Notes for Revision 2.4.1 of netperf: 522 523Things changed in this release: 524 525*) There is now a -B global command-line argument that will append its 526 parameter as a string to the end of result lines when test banners 527 have been suppressed. this is to make it easier to distinguish one 528 result from another when aggregate restults are being run in 529 parallel, without having to resort to having the individual results 530 shell redirected to a file. This has been done for some of the 531 tests in nettest_bsd.c, but not all of them, nor for the tests in 532 the other nettest_mumble.c files. 533 534*) There is now an --enable-spin configure option that will enable 535 intervals if not already enabled and will have the sender sit and 536 spin in a tight loop until time for the next interval rather than 537 wait for an interval timer to expire. This means it should be 538 possible to have a much finer granularity on the interval, at the 539 expense of an EXTREME increase in CPU utilization. (To the extent 540 I'm considering disabling measurement of local CPU utilization when 541 that mode is enabled, and bursts have been requested - your 542 feedback on that topic would be most appreciated) 543 544 If only --enable-intervals is used with configure, the old set the 545 interval timer and wait method is still used. 546 547 If --enable-spin is configured, the test banner will include "spin 548 intervals" rather than the "intervals" from a plain 549 --enable-intervals. The sit and spin will either use 550 gettimeofday(), or gethrtime() if gethrtime() is available. 551 552 This has been implemented in the tests of nettest_bsd.c but none of 553 the others. Volunteers would be most welcome. I would entertain 554 the notion of making the implementation a series of inline 555 functions in netlib. This holds true for the demo mode - why will 556 become clear when you look at nettest_bsd.c. While things are 557 considerably cleaner than they were before, with reuse within 558 nettest_bsd.c, there is no resuse with the rest of the 559 nettest_mumble.c files. 560 561*) the -w option for the interval time now takes three optional 562 suffixes. if the suffix is 'm' (eg 10m) it will assume the user has 563 specified time in units of milliseconds. if the suffix is 'u' it 564 will assume microseconds, and if 's' seconds. no suffix remains 565 milliseconds for backwards compatability with previous netperf 566 versions. 567 568*) It should be possible to successfully compile with 569 --enable-intervals. 570 571These are the Release Notes for Revision 2.4.1 of netperf: 572 573Things changed in this release: 574 575*) netcpu_pstatnew.c has been altered to workaround a bug in the 576 interrupt cycle accounting in HP-UX 11.23 that is not expected to 577 be resolved until a later release. basically, some interrupt time 578 is not counted, which means the sum of idle, user, kernel and 579 interrupt is less than the cycles per second multiplied by the 580 elapsed time. the workaround preserves the "no calibration 581 required" nature of the pstatnew CPU utilization mechanism. you 582 can see more in netcpu_pstatnew.c and/or in debug output. 583 584*) in netlib.c recv_response has been renamed 585 recv_response_timed(addl_time) which is now used in 586 calibrate_remote_cpu in place of the "sleep(40);recv_response()" 587 sequence. This then allows the REM_CPU test to complete in less 588 than 40 seconds when the remote's CPU utilization mechanism does 589 not require calibration. The value of "addl_time" is added to the 590 tc_sec field of the select() timeout. A "new" recv_response has 591 been added that simply calls recv_response_timed(0) - this is to 592 minimize the number of changes needed elsewhere in the code. 593 594*) hopefully, this release fixes problems people have been having with 595 the configure script failing when picking a type for socklen_t. 596 now, instead of generating an error, it emits a warning and simply 597 tries socklen_t 598 599*) the configure script no longer looks for the size of an in_port_t 600 601*) netlib.c now has code to perform processor binding for Tru64, but 602 the configure script may or may not detect it correctly. This means 603 that one may have to edit the config.h file by hand to get the 604 functionality. 605 606*) it is known that netperf will compile under Windows XP and 2003 607 using the DDK it is possible that netperf 2.4.1 will compile on a 608 Windows system under VC++/Visual Studio. It might even work!-) See 609 the README.window file for additional details. 610 611Things _NOT_ changed in this release: 612 613*) The automagic determination of the number and type of parameters to 614 sched_setaffinity under Linux remains brittle at best. 615 616These are the Release Notes for Revision 2.4.0 of netperf: 617 618Things changed in this release: 619 620*) Netperf has been converted to use a configure script. Yes boys and 621 girls, after 12 years of distributing netperf with just a makefile 622 I have finally bitten the bullet and cast my fate to autoconf, 623 automake, etc. To get the most basic netperf built all you should 624 need to do is: 625 626 cd to the netperf directory 627 ./configure 628 make 629 and perhaps 630 make install 631 632 (Note, I've not done much with make install - I'm hemming and 633 hawing over what the default installation location should be) 634 635 Please keep in mind that this is the first time I've tried to use 636 autoconf et al. I am sure there are things that should be done 637 differently and would welcome any and all constructive criticisms. 638 639 I suspect there are several places where I've not fully 640 demonstrated being of the autoconf body - particulary as pertains 641 to include files being in "#if mumble #endif" blocks. Fixes would 642 be most welcome. 643 644*) Speaking of becomming one with various GNU tools, work on a new 645 netperf manual has begun, with the source being a texinfo document 646 that is converted to "all" the other formats. This resides in doc/ 647 . 648 649*) The platform-specific parts of CPU utilization measurement have 650 been broken-out into separate .c files and selected at configure 651 time a la the pcap_mumble files of tcpdump. This makes 652 src/netlib.c _much_ easier to read and the addition of new CPU 653 utilization mechanisms much easier. 654 655*) New HP-UX 11.23 and Solaris 10 CPU utilization measurement 656 mechanisms (called pstatnew and kstat10 respectively) need no 657 calibration step. Both have variations on microstate accounting. 658 HP-UX 11.23 still identifies the method in the headers as 'P' for 659 pstat. The kstat10 method is identified as 'M' for Microstate. 660 661 Scripts which make calibration runs with LOC_CPU and REM_CPU may 662 continue to do so, they will just run forty to eighty seconds 663 faster on platforms with the calibration-free CPU util mechanisms. 664 665*) Automatic detection of CPU utilization mechanism for HP-UX, Linux, 666 AIX, *BSD and Solaris. If you do not like what the configure 667 script selects, you can use --enable-cpuutil=<foo> . 668 669*) The "times" (aka 'T') CPU utilization mechanism has been removed. 670 It was never very accurate at all, only showing CPU time charged to 671 the process, and with interrupts and other network processing it is 672 rarely chaged to a or the correct process. It and other methods 673 may remain in the format_cpu_method() routine of src/netlib.c for 674 historical purposes only. 675 676*) CAVEAT - the "kstat" mechanism is KNOWN TO BE BOGUS for Solaris. 677 It does not include time spent processing interrupts, and 678 networking benchmarks will generate at least a few of those... 679 This affects _ALL_ versions of Solaris with kstat. 680 681 So, do NOT trust any CPU util figures where netperf says the method 682 was 'K' for kstat - unless perhaps it reports 100% CPU util. 683 684 Solaris 10 takes a step in the right direction adding microstate 685 accounting similar to what netperf uses on HP-UX 11.23. HOWEVER, 686 Solaris 10's accounting for user/kernel/idle is done in _parallel_ 687 with interrupt, which means they overlap. Doubleplusungood. Netperf 688 attempts to compensate for that with some handwaving 689 (src/netcpu_kstat10.c) 690 691*) Initial support for SCTP has been added with the SCTP_STREAM and 692 SCTP_RR tests. These tests use the libsctp mechanisms for 693 increased portability. It has been explained that libsctp should 694 not impart all that much overhead and it does make things rather 695 simpler. 696 697*) Netperf now uses getaddrinfo() to resolve hostnames and IP 698 addresses. A replacement getaddrinfo() is provided for those 699 platforms where the configure script cannot tell that getaddrinfo 700 is present. 701 702 There are cases where a host's getaddrinfo call may return results 703 that ignore the hints for protocol. Netperf catches these and 704 reports a warning so you can pester your OS source for fixes. 705 706 Solaris getaddrinfo() seems to return results with SCTP procotol 707 cleared. 708 709 Mac OS X getaddrinfo botches when the service/port is specified as 710 "0" so one must specify a port number on the netperf command line. 711 712 AIX 5.something getaddrinfo has a different but similar problem 713 with "0" as a port/service name as well. 714 715 Linux 2.6 and HP-UX 11i getaddrinfo seem to be fine - at least as 716 far as netperf goes :) 717 718*) A "Demo Mode" has been added to the main BSD Sockets/TCP/UDP tests: 719 TCP_STREAM, TCP_MAERTS, TCP_SENDFILE, TCP_RR, TCP_CC, TCP_CRR and 720 UDP_RR. It has not been added to UDP_STREAM. This mode is enabled 721 with --enable-demo when configuring netperf, which activates a 722 global "-D" option. By default, -D will cause interim results 723 (throughput or transactions/s only, not CPU util) from the 724 netperf's perspective to be emitted no sooner than once per second. 725 An optional parameter can specify another interval in units 726 (floating point) of seconds: 727 728 -D 1.5 729 730 will make the reporting interval at least 1.5 seconds. 731 732 This mode makes no use of explicit interval timers since that can 733 be so, well fun on different platforms. Instead, an initial guess 734 of how many units of work must be done to consume the desired 735 reporting interval is made, and that guess is refined throughout 736 the entire test. If something happens to dramatically slow-down 737 the test, the reproting interval may become must larger for a few 738 intervals. When things speed-up it is detected very quickly. As 739 with the --enable-historgram support, if gethrtime() is available 740 on the platform, it will be used in lieu of gettimeofday(). In any 741 case, the number of calls to gettimeofday()/gethrtime() is much, 742 Much, MUCH smaller than for --enable-histogram so while there may 743 be a measurable effect on the results, it should be rather small. 744 745*) The global -H option has been enhanced to take an optional address 746 family specification for the control connection: 747 748 -H <remote>,<family> 749 750 Unlike other comma-separated options, where specifying only one 751 thing will set both, here specifying only one thing will be 752 ass-u-me-d to be the <remote> and will leave <family> defaulted 753 (AF_UNSPEC). Family can be specified as "4" or "inet" for 754 AF_INET, "6" or "inet6" for AF_INET6. 755 756*) A new global -L option has been added to specify the local name/IP 757 and/or address family for the control connection: 758 759 -L <local>,<family> 760 761 Unlike other comma-separated options, where specifying only one 762 thing will set both, here specifying only one thing will be 763 ass-u-me-d to be the <local> and will leave <family> defaulted 764 (AF_UNSPEC). Family can be specified as "4" or "inet" for 765 AF_INET, "6" or "inet6" for AF_INET6. 766 767*) Test-specific -H and -L options are present for the TCP, UDP and 768 SCTP tests, which are now (intended to be) IP protocol version 769 agnostic. 770 771*) Global -4 and -6 options will set the both the local and remote 772 address family to either AF_INET or AF_INET6 respectively. 773 774*) Test-specific -4 and -6 options have been added for TCP, UDP and 775 SCTP tests. 776 777*) Since the basic TCP UDP and SCTP tests are no longer IPv4-only, the 778 nettest_ipv6.[ch] files are only included in the source 779 distribution for historical interest. 780 781*) The main test banners for the TCP, UDP and SCTP tests have been 782 enhanced to give both local and remote addressing information for 783 the data connection. 784 785*) Compilation under Windows is likely FUBAR at this point. I _hope_ 786 to start trying to do builds under the DDK soon, but am not sure 787 when I'll be able to start. Any and all assistance you can give 788 there would be most welcome. 789 790*) Various and sundry fixes. TCP_RR should no longer go into an 791 infinite loop when you abort netperf. I'm sure there are others. 792 793*) Unix domain socket tests are compiled-in with --enable-unix=yes at 794 configure time. 795 796*) DLPI tests are compiled-in with --enable-dlpi=yes at configure 797 time. 798 799*) XTI tests are compiled-in with --enable-xti=yes at configure time. 800 801Things not changed in this release: 802 803*) Seems like everything has changed :) 804 805These are the Release Notes for Revision 2.3pl2 of netperf: 806 807Things changed in this release 808 809*) One can bind netperf or netserver to specific CPUs with the -T 810 option. This is a generalization of some HP-UX and netserver specific 811 work from 2.3pl1. 812 813*) Extend the kludge to workaround the Linux setsockopt/getsockopt 814 bizzarreness to the socket buffer sizes for the remote side in 815 addition to the local side. 816 817*) Fix the lack of initialization of times_up in recv_tcp_maerts() 818 that caused confidence intervals to fail miserably. 819 820*) Other misc fixes - than you to all of you who sent them. 821 822These are the Release Notes for revision 2.3pl1 of netperf: 823 824Things changed in this release 825 826*) The bind() call in create_data_socket() in the file nettest_bsd.c 827 is no longer conditional on the user's specifying an IP address or 828 port number to which the data socket should be bound. This fixes 829 the "connection refused" errors in the UDP tests. 830 831*) Some experimental code to allow one to specify a CPU to which the 832 remote netserver should be bound. This is intended to allow one to 833 get greater certainty (as in confidence intervals) on SMP 834 systems. At present the functionality is HP-UX specific. 835 Submittals of changes for a more general approach are welcomed. 836 837These are the Release Notes for revision 2.3 of netperf: 838 839Things changed in this release 840 841*) The user can now specify local and/or remote port numbers for the 842 data connection using the -P test-specific option. This is to 843 support those folks who want to run netperf through those evil, 844 end-to-end-breaking things known as firewalls... :) This changes 845 the format of some of the control messages, hence the bump in the 846 update number in the VUF. While it may be possible to mix 2.3 and 847 pre-2.3 netperf and netserver, it is not supported. 848 849*) The user can now specify local and/or remote IP addresses for the 850 data connection using the -I test-specific option. This is to 851 support those folks who want to run netperf through those evil, 852 end-to-end-breaking things known as firewalls... :) This changes 853 the format of some of the control messages, hence the bump in the 854 update number in the VUF. While it may be possible to mix 2.3 and 855 pre-2.3 netperf and netserver, it is not supported. 856 857*) Set DL_mumble message priorities in the DLPI tests 858 859*) Fix error return check for getaddrinfo() 860 861*) Those systems with gethrtime() can define -DHAVE_GETHRTIME to use 862 gethrtime() instead of gettimeofday() and reduce the measurement 863 overhead when enabling the -DHISTOGRAM functionality. 864 865*) The default for -DHISTOGRAM compilation now adds a UNIT_USEC and 866 TEN_USEC row and renames TENTH_MSEC to HUNDRED_USEC. If you want 867 the old behaviour add -DOLD_HISTOGRAM to CFLAGS. 868 869*) Add missing '!' in the recv_udp*_stream so we recognize the end of 870 a timed test correctly. 871 872*) Replace "||" with "&&" to fix an infinite loop in 873 recv_tcp_conn_rr() most likely introduced in 2.2pl5. 874 875*) Code has been added to kludge around the bug in Linux getsockopt() 876 where it almost always returns twice the value for which one 877 asks unlike virtually every other stack on the face of the 878 planet. This was doing some unpleasant things to tests in which 879 confidence intervals were requested. 880 881Things not changed in this release 882 883*) Lots :) 884 885These are the Release Notes for revision 2.2pl5 of netperf: 886 887Things changed in this release 888 889*) Improved (perhaps even usable :) support for Windows, including 890compilation and run on Win64. 891 892*) Fixes for MacOS X and FreeBSD 893 894Things not changed in this release 895 896*) Specifying the port number(s) for the data connection 897 898These are the Release Notes for Revision 2.2pl4 of netperf: 899 900Things changed in this release 901 902*) USE_SYSCTL available on suitable FreeBSD releases to measure CPU 903 utilization without having to resort to -DUSE_LOOPER. 904 905*) Include Solaris 9 with the Linux sendfile path under -DHAVE_SENDFILE 906 907This still outstanding in this release 908 909*) Knowing why signals are not interrupting socket calls under 910 OpenVMS. A quick try to use threads for timing a la Win32 worked, 911 but also cut performance in half. Any and all assistance in this 912 area would be most welcome. 913 914These are the Release Notes for revisoin 2.2pl3 of netperf: 915 916Things changed in this release 917 918*) I started practicing what I preach and will set SO_REUSEADDR before 919 netserver tries to bind to its well-known port. 920 921*) Initial port to OpenVMS. This includes support for the OVMS 922 Auxilliary server (inetd replacement). See README.ovms for more 923 details on what is involved in compiling and running netperf under 924 OpenVMS. 925 926*) Testname comparisons are now case insensitive. This is a side 927 effect of OpenVMS downshifting commandlines to lowercase. I made 928 the change and decided it was OK to keep it that way, even though 929 for OpenVMS one _has_ to set the right defines to disable that 930 downshifting or the command-line options will not work. For example 931 "-H" will become "-h" which isn't quite the same thing... 932 933*) Misc fixes for nettest_ipv6.c. 934 935*) Support for sendfile() under Linux 936 937Thins I would like to have changed but did not know how or didn't have 938time: 939 940*) Allow netserver to run as a standalone daemon under OpenVMS 941*) Allow netserver to run as a standalone daemon under Windows 942*) Rediscover an inetd-like facility for Windows 943*) Figure-out how to get low-overhead, accurate, per-CPU utilization 944 figures under OpenVMS 945*) Get the UDP_RR and UDP_STREAM tests to work under OpenVMS, and get 946 the TCP_RR test to work based on time rather than transaction 947 count. There is some bug (possibly in OpenVMS?) where the SIGALRM 948 fires, but a socket call will not return an EINTR. 949 950Things that changed prior to this release: 951 952*) Addition of the TCP_MAERTS test - this is a TCP_STREAM test where 953 the data flows from the netserver to the netperf rather than from 954 the netperf to the netserver. This can be useful in those 955 situations where netperf (netserver) is installed on a remote 956 system, but the tester has no shell access and wishes to get 957 performance data for the path from netserver to netperf. 958 959These are the Release Notes for the 2.2 revision of netperf: 960 961Things changed in this release 962 963*) Various and sundry bugs fixed (in theory) for platforms such as 964 FreeBSD and Linux. If I left-out your bug fix, it was purely 965 accidental - my mind has a very small cache, and sometimes I will 966 "lose" email in the shuffle. 967 968*) Initial support for sendfile() on HP-UX. This test will use the 969 sendfile() call instead of send() to send data to the 970 remote. Netperf "lies" to netserver and calls it a TCP_STREAM test 971 since what netserver needs to do is exactly the same. A future 972 patch may change that and simply have netserver call the same 973 routine for both test types. Kudos to Charles Harris for the 974 initial prototype. 975 976*) The Fore ATM API and HiPPI tests have been dropped from the 977 distribution. 978 979Things I would have liked to have changed, but did not have time for: 980 981*) Conversion of the source and makefile to use the GNU configure/autoconf 982 utility to make it easier for folks to build by not having to edit 983 makefiles... You will notice that I have started to switch from 984 "DO_MUMBLE" to "HAVE_MUMBLE" 985 986as always - happy benchmarking, 987 988rick jones <raj@cup.hp.com> 989 990--------------------------------------------------------------------- 991 992These are the Release Notes for the 2.1pl3 revision of netperf: 993 994*) An OBOB (Off By One Bug) in netlib.c that was causing a core dump 995 on Irix should be fixed. 996 997*) Irix systems should now be able to determine the number of CPU's 998 present automagically (code from outside, not tested yet because I 999 have no MP Irix systems at my disposal) 1000 1001*) An alpha version of a TCP_CC test has been added - this is a 1002 TCP_CRR test with out the "RR." 1003 1004*) The -Ae has been removed from the default makefile. If someone has 1005 a nice way to automagically generate the correct makefile for 1006 different platforms I would like to learn how. 1007 1008happy benchmarking, 1009 1010rick jones <raj@cup.hp.com> 1011 1012---------------------------------------------------------------------- 1013 1014These are the Release Notes for the 2.1 revision of netperf: 1015 1016Things Changed in this release: 1017 1018*) The XTI (Version 2 of the spec) tests are now documented in the 1019 manual. 1020 1021*) The TCP_CRR (Connect Request/Response) test is now documented in 1022 the manual, including a description of how it mimics the behaviour 1023 of http (the protocol underlying the WWW). 1024 1025*) Support for for Windows NT 3.51 OS in the BSD Sockets tests (ok, so 1026 they are really Winsock in that case :). Other test suites may be 1027 ported as required/desired/appropriate. 1028 1029*) Tests for TCP and UDP, using the IPv6 extensions to BSD sockets are 1030 included in this release. They are included by adding -DUSE_IPv6 to 1031 the makefile and recompiling. 1032 1033*) Support for a "long long" datatype should only be required for 1034 -DUSE_PSTAT compilation which is an HP-UX only thing. The 1035 *unbundled* HP compilers from at least "HP92453-01 A.09.61 HP C 1036 Compiler" and later should have the required support. The bundled 1037 compiler may not. GCC should work - check the archives listed in 1038 the comp.sys.hp.hpux FAQ for copies. The FAQ is archived on 1039 rtfm.mit.edu under the path pub/usenet/comp.sys.hp.hpux. 1040 1041*) A "proper" fix for double data type alignment has been included. 1042 1043*) A new script is included with this release which can be used to 1044 measure aggregate TCP_RR performance (multiple, concurrent 1045 instances of the TCP_RR test). A related use of this script would 1046 be measuring MP scaling. A single-byte TCP_RR test is good for this 1047 purpose for two reasons: 1048 1049 1) it excercises the control/protocol paths heavily without 1050 using much in the way of data copies which may be easier to 1051 scale. 1052 2) most systems can easily saturate cards with bandwidth, but 1053 not so easily with request/response 1054 1055 Of course, feedback on this is most welcome. 1056 1057*) When measuring CPU utilization, the units for service demand have 1058 been changed from milliseconds (designated ms) of CPU per unit (KB 1059 or Transaction) to microseconds (desginated us). 1060 1061*) For accurate reporting of service demand, netperf needs to know the 1062 number of CPU's present on a system. On some systems (HP-UX), this 1063 is automatic. For others (All), it is necessary to add a global "-n 1064 <numcpu>" option to both netperf and netserver. 1065 1066 !! IF THIS IS LEFT-OUT CPU UTILIZATION AND SERVICE DEMAND FOR !! 1067 !! MULTI-PROCESSOR SYSTEMS WILL BE WRONG. !! 1068 1069 If you know of ways to programatically determine the number of 1070 active CPUs on a system, please let the author Rick Jones 1071 <raj@cup.hp.com> know. 1072 1073*) other things I've probably forgotten :) 1074 1075Things Not Changed in this release: 1076 1077*) The ancillary test suites are essentially unchanged - DLPI, 1078 HiPPI/LLA, Unix Domain, and Fore ATM API. Unless there is much 1079 interest expressed in these tests, 2.1 may be the last release in 1080 which they are included. The order of retirement would likely be 1081 Unix Domain, HiPPI/LLA, Fore ATM API, and then DLPI. 1082 1083Miscelaneous Comments: 1084 1085*) The -DUSE_LOOPER CPU utilization _seems_ to be nice and low-impact 1086 on HP-UX, Digital Unix, and IRIX. It does not yet seem to be 1087 low-impact on Solaris (I need an example of priocntl usage), AIX 1088 (setpri only works if you are root), and NT (not sure of the 1089 reason). Help with those problems would be most appreciated. 1090