From 95107d1e8de1a025bd51aebe49c13dd754187e91 Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 12:47:12 -0700 Subject: [PATCH 1/9] netserver: fix permissions change on /dev/null The netserver program, when run as root, will change the permissions on /dev/null unconditionally. This is undesireable at best, and horrible at worst because so much on a system depends on /dev/null to work correctly. The fix for /dev/null permissions looks like: sudo chmod a+w /dev/null Fix the netserver issue by checking to see if the file being used for debug is /dev/null or an actual file, and only change the permissions if the file is an actual file. Signed-off-by: Jesse Brandeburg --- src/netserver.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/netserver.c b/src/netserver.c index 2e6b567..e19b331 100644 --- a/src/netserver.c +++ b/src/netserver.c @@ -260,7 +260,9 @@ open_debug_file() #if !defined(WIN32) - chmod(FileName,0644); + if (strcmp(FileName, NETPERF_NULL) != 0) { + chmod(FileName,0644); + } /* redirect stdin to "/dev/null" */ rd_null_fp = fopen(NETPERF_NULL,"r"); From d2d5d14886844f57e5a1452f2b6ad29819cf06bc Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 13:48:54 -0700 Subject: [PATCH 2/9] Revert "netperf: delete generated files" This reverts commit 9ee181fb57108d7970c671e1a10f5285d0a290c8. --- .gitignore | 3 - doc/.gitignore | 7 - doc/netperf.html | 4359 +++++++++++++++++++++++++++++++++++++++++++ doc/netperf.info | 4386 ++++++++++++++++++++++++++++++++++++++++++++ doc/netperf.pdf | Bin 0 -> 453226 bytes doc/netperf.ps | Bin 0 -> 312807 bytes doc/netperf.txt | 3962 +++++++++++++++++++++++++++++++++++++++ doc/netperf.xml | 3196 ++++++++++++++++++++++++++++++++ doc/netperf_old.ps | Bin 0 -> 1229633 bytes 9 files changed, 15903 insertions(+), 10 deletions(-) delete mode 100644 doc/.gitignore create mode 100644 doc/netperf.html create mode 100644 doc/netperf.info create mode 100644 doc/netperf.pdf create mode 100644 doc/netperf.ps create mode 100644 doc/netperf.txt create mode 100644 doc/netperf.xml create mode 100644 doc/netperf_old.ps diff --git a/.gitignore b/.gitignore index 469460b..4ef1539 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,3 @@ Makefile /stamp-h1 /src/netperf /src/netserver -*~ -.*.swp -netperf-*.tar* diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index c41f219..0000000 --- a/doc/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# these files are all generated -netperf.html -netperf.info -netperf.pdf -netperf.ps -netperf.txt -netperf.xml diff --git a/doc/netperf.html b/doc/netperf.html new file mode 100644 index 0000000..a261f97 --- /dev/null +++ b/doc/netperf.html @@ -0,0 +1,4359 @@ + + +Care and Feeding of Netperf 2.7.X + + + + + + + + + + +

Care and Feeding of Netperf 2.7.X

+
+

Table of Contents

+ +
+ + + +
+ +


+Next: , +Previous: (dir), +Up: (dir) + +
+ +

Netperf Manual

+ +

This is Rick Jones' feeble attempt at a Texinfo-based manual for the +netperf benchmark. + +

Copyright © 2005-2015 Hewlett-Packard Company +

+Permission is granted to copy, distribute and/or modify this document +per the terms of the netperf source license, a copy of which can be +found in the file COPYING of the basic netperf distribution. +
+ + + +
+ +


+Next: , +Previous: Top, +Up: Top + +
+ +

1 Introduction

+ +

+Netperf is a benchmark that can be use to measure various aspect of +networking performance. The primary foci are bulk (aka +unidirectional) data transfer and request/response performance using +either TCP or UDP and the Berkeley Sockets interface. As of this +writing, the tests available either unconditionally or conditionally +include: + +

    +
  • TCP and UDP unidirectional transfer and request/response over IPv4 and +IPv6 using the Sockets interface. +
  • TCP and UDP unidirectional transfer and request/response over IPv4 +using the XTI interface. +
  • Link-level unidirectional transfer and request/response using the DLPI +interface. +
  • Unix domain sockets +
  • SCTP unidirectional transfer and request/response over IPv4 and IPv6 +using the sockets interface. +
+ +

While not every revision of netperf will work on every platform +listed, the intention is that at least some version of netperf will +work on the following platforms: + +

    +
  • Unix - at least all the major variants. +
  • Linux +
  • Windows +
  • Others +
+ +

Netperf is maintained and informally supported primarily by Rick +Jones, who can perhaps be best described as Netperf Contributing +Editor. Non-trivial and very appreciated assistance comes from others +in the network performance community, who are too numerous to mention +here. While it is often used by them, netperf is NOT supported via any +of the formal Hewlett-Packard support channels. You should feel free +to make enhancements and modifications to netperf to suit your +nefarious porpoises, so long as you stay within the guidelines of the +netperf copyright. If you feel so inclined, you can send your changes +to +netperf-feedback for possible +inclusion into subsequent versions of netperf. + +

It is the Contributing Editor's belief that the netperf license walks +like open source and talks like open source. However, the license was +never submitted for “certification” as an open source license. If +you would prefer to make contributions to a networking benchmark using +a certified open source license, please consider netperf4, which is +distributed under the terms of the GPLv2. + +

The netperf-talk mailing list is +available to discuss the care and feeding of netperf with others who +share your interest in network performance benchmarking. The +netperf-talk mailing list is a closed list (to deal with spam) and you +must first subscribe by sending email to +netperf-talk-request. + +

+ +
+ +


+Previous: Introduction, +Up: Introduction + +
+ +

1.1 Conventions

+ +

A sizespec is a one or two item, comma-separated list used as an +argument to a command-line option that can set one or two, related +netperf parameters. If you wish to set both parameters to separate +values, items should be separated by a comma: + +

     parameter1,parameter2
+
+

If you wish to set the first parameter without altering the value of +the second from its default, you should follow the first item with a +comma: + +

     parameter1,
+
+

Likewise, precede the item with a comma if you wish to set only the +second parameter: + +

     ,parameter2
+
+

An item with no commas: + +

     parameter1and2
+
+

will set both parameters to the same value. This last mode is one of +the most frequently used. + +

There is another variant of the comma-separated, two-item list called +a optionspec which is like a sizespec with the exception that a +single item with no comma: + +

     parameter1
+
+

will only set the value of the first parameter and will leave the +second parameter at its default value. + +

Netperf has two types of command-line options. The first are global +command line options. They are essentially any option not tied to a +particular test or group of tests. An example of a global +command-line option is the one which sets the test type - -t. + +

The second type of options are test-specific options. These are +options which are only applicable to a particular test or set of +tests. An example of a test-specific option would be the send socket +buffer size for a TCP_STREAM test. + +

Global command-line options are specified first with test-specific +options following after a -- as in: + +

     netperf <global> -- <test-specific>
+
+
+ +


+Next: , +Previous: Introduction, +Up: Top + +
+ +

2 Installing Netperf

+ +

+Netperf's primary form of distribution is source code. This allows +installation on systems other than those to which the authors have +ready access and thus the ability to create binaries. There are two +styles of netperf installation. The first runs the netperf server +program - netserver - as a child of inetd. This requires the +installer to have sufficient privileges to edit the files +/etc/services and /etc/inetd.conf or their +platform-specific equivalents. + +

The second style is to run netserver as a standalone daemon. This +second method does not require edit privileges on /etc/services +and /etc/inetd.conf but does mean you must remember to run the +netserver program explicitly after every system reboot. + +

This manual assumes that those wishing to measure networking +performance already know how to use anonymous FTP and/or a web +browser. It is also expected that you have at least a passing +familiarity with the networking protocols and interfaces involved. In +all honesty, if you do not have such familiarity, likely as not you +have some experience to gain before attempting network performance +measurements. The excellent texts by authors such as Stevens, Fenner +and Rudoff and/or Stallings would be good starting points. There are +likely other excellent sources out there as well. + +

+ + + +

2.1 Getting Netperf Bits

+ +

Gzipped tar files of netperf sources can be retrieved via +anonymous FTP +for “released” versions of the bits. Pre-release versions of the +bits can be retrieved via anonymous FTP from the +experimental subdirectory. + +

For convenience and ease of remembering, a link to the download site +is provided via the +NetperfPage + +

The bits corresponding to each discrete release of netperf are +tagged for retrieval +via subversion. For example, there is a tag for the first version +corresponding to this version of the manual - +netperf 2.7.0. Those wishing to be on the bleeding edge of netperf +development can use subversion to grab the +top of trunk. When +fixing bugs or making enhancements, patches against the top-of-trunk +are preferred. + +

There are likely other places around the Internet from which one can +download netperf bits. These may be simple mirrors of the main +netperf site, or they may be local variants on netperf. As with +anything one downloads from the Internet, take care to make sure it is +what you really wanted and isn't some malicious Trojan or whatnot. +Caveat downloader. + +

As a general rule, binaries of netperf and netserver are not +distributed from ftp.netperf.org. From time to time a kind soul or +souls has packaged netperf as a Debian package available via the +apt-get mechanism or as an RPM. I would be most interested in +learning how to enhance the makefiles to make that easier for people. + +

+ +

2.2 Installing Netperf

+ +

Once you have downloaded the tar file of netperf sources onto your +system(s), it is necessary to unpack the tar file, cd to the netperf +directory, run configure and then make. Most of the time it should be +sufficient to just: + +

     gzcat netperf-<version>.tar.gz | tar xf -
+     cd netperf-<version>
+     ./configure
+     make
+     make install
+
+

Most of the “usual” configure script options should be present +dealing with where to install binaries and whatnot. +

     ./configure --help
+
+

should list all of those and more. You may find the --prefix +option helpful in deciding where the binaries and such will be put +during the make install. + +

If the netperf configure script does not know how to automagically +detect which CPU utilization mechanism to use on your platform you may +want to add a --enable-cpuutil=mumble option to the configure +command. If you have knowledge and/or experience to contribute to +that area, feel free to contact netperf-feedback@netperf.org. + +

Similarly, if you want tests using the XTI interface, Unix Domain +Sockets, DLPI or SCTP it will be necessary to add one or more +--enable-[xti|unixdomain|dlpi|sctp]=yes options to the configure +command. As of this writing, the configure script will not include +those tests automagically. + +

Starting with version 2.5.0, netperf began migrating most of the +“classic” netperf tests found in src/nettest_bsd.c to the +so-called “omni” tests (aka “two routines to run them all”) found +in src/nettest_omni.c. This migration enables a number of new +features such as greater control over what output is included, and new +things to output. The “omni” test is enabled by default in 2.5.0 +and a number of the classic tests are migrated - you can tell if a +test has been migrated +from the presence of MIGRATED in the test banner. If you +encounter problems with either the omni or migrated tests, please +first attempt to obtain resolution via +netperf-talk@netperf.org or +netperf-feedback@netperf.org. If that is unsuccessful, you +can add a --enable-omni=no to the configure command and the +omni tests will not be compiled-in and the classic tests will not be +migrated. + +

Starting with version 2.5.0, netperf includes the “burst mode” +functionality in a default compilation of the bits. If you encounter +problems with this, please first attempt to obtain help via +netperf-talk@netperf.org or +netperf-feedback@netperf.org. If that is unsuccessful, you +can add a --enable-burst=no to the configure command and the +burst mode functionality will not be compiled-in. + +

On some platforms, it may be necessary to precede the configure +command with a CFLAGS and/or LIBS variable as the netperf configure +script is not yet smart enough to set them itself. Whenever possible, +these requirements will be found in README.platform files. +Expertise and assistance in making that more automagic in the +configure script would be most welcome. + +

Other optional configure-time settings include +--enable-intervals=yes to give netperf the ability to “pace” +its _STREAM tests and --enable-histogram=yes to have netperf +keep a histogram of interesting times. Each of these will have some +effect on the measured result. If your system supports +gethrtime() the effect of the histogram measurement should be +minimized but probably still measurable. For example, the histogram +of a netperf TCP_RR test will be of the individual transaction times: +

     netperf -t TCP_RR -H lag -v 2
+     TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET : histogram
+     Local /Remote
+     Socket Size   Request  Resp.   Elapsed  Trans.
+     Send   Recv   Size     Size    Time     Rate
+     bytes  Bytes  bytes    bytes   secs.    per sec
+
+     16384  87380  1        1       10.00    3538.82
+     32768  32768
+     Alignment      Offset
+     Local  Remote  Local  Remote
+     Send   Recv    Send   Recv
+         8      0       0      0
+     Histogram of request/response times
+     UNIT_USEC     :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
+     TEN_USEC      :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
+     HUNDRED_USEC  :    0: 34480:  111:   13:   12:    6:    9:    3:    4:    7
+     UNIT_MSEC     :    0:   60:   50:   51:   44:   44:   72:  119:  100:  101
+     TEN_MSEC      :    0:  105:    0:    0:    0:    0:    0:    0:    0:    0
+     HUNDRED_MSEC  :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
+     UNIT_SEC      :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
+     TEN_SEC       :    0:    0:    0:    0:    0:    0:    0:    0:    0:    0
+     >100_SECS: 0
+     HIST_TOTAL:      35391
+
+

The histogram you see above is basically a base-10 log histogram where +we can see that most of the transaction times were on the order of one +hundred to one-hundred, ninety-nine microseconds, but they were +occasionally as long as ten to nineteen milliseconds + +

The --enable-demo=yes configure option will cause code to be +included to report interim results during a test run. The rate at +which interim results are reported can then be controlled via the +global -D option. Here is an example of -D output: + +

     $ src/netperf -D 1.35 -H tardy.hpl.hp.com -f M
+     MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com (15.9.116.144) port 0 AF_INET : demo
+     Interim result:    5.41 MBytes/s over 1.35 seconds ending at 1308789765.848
+     Interim result:   11.07 MBytes/s over 1.36 seconds ending at 1308789767.206
+     Interim result:   16.00 MBytes/s over 1.36 seconds ending at 1308789768.566
+     Interim result:   20.66 MBytes/s over 1.36 seconds ending at 1308789769.922
+     Interim result:   22.74 MBytes/s over 1.36 seconds ending at 1308789771.285
+     Interim result:   23.07 MBytes/s over 1.36 seconds ending at 1308789772.647
+     Interim result:   23.77 MBytes/s over 1.37 seconds ending at 1308789774.016
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    MBytes/sec
+
+      87380  16384  16384    10.06      17.81
+
+

Notice how the units of the interim result track that requested by the +-f option. Also notice that sometimes the interval will be +longer than the value specified in the -D option. This is +normal and stems from how demo mode is implemented not by relying on +interval timers or frequent calls to get the current time, but by +calculating how many units of work must be performed to take at least +the desired interval. + +

Those familiar with this option in earlier versions of netperf will +note the addition of the “ending at” text. This is the time as +reported by a gettimeofday() call (or its emulation) with a +NULL timezone pointer. This addition is intended to make it +easier to insert interim results into an +rrdtool +Round-Robin Database (RRD). A likely bug-riddled example of doing so +can be found in doc/examples/netperf_interim_to_rrd.sh. The +time is reported out to milliseconds rather than microseconds because +that is the most rrdtool understands as of the time of this writing. + +

As of this writing, a make install will not actually update the +files /etc/services and/or /etc/inetd.conf or their +platform-specific equivalents. It remains necessary to perform that +bit of installation magic by hand. Patches to the makefile sources to +effect an automagic editing of the necessary files to have netperf +installed as a child of inetd would be most welcome. + +

Starting the netserver as a standalone daemon should be as easy as: +

     $ netserver
+     Starting netserver at port 12865
+     Starting netserver at hostname 0.0.0.0 port 12865 and family 0
+
+

Over time the specifics of the messages netserver prints to the screen +may change but the gist will remain the same. + +

If the compilation of netperf or netserver happens to fail, feel free +to contact netperf-feedback@netperf.org or join and ask in +netperf-talk@netperf.org. However, it is quite important +that you include the actual compilation errors and perhaps even the +configure log in your email. Otherwise, it will be that much more +difficult for someone to assist you. + +

+ +


+Previous: Installing Netperf Bits, +Up: Installing Netperf + +
+ +

2.3 Verifying Installation

+ +

Basically, once netperf is installed and netserver is configured as a +child of inetd, or launched as a standalone daemon, simply typing: +

     netperf
+
+

should result in output similar to the following: +

     $ netperf
+     TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+      87380  16384  16384    10.00    2997.84
+
+
+ +


+Next: , +Previous: Installing Netperf, +Up: Top + +
+ +

3 The Design of Netperf

+ +

+Netperf is designed around a basic client-server model. There are +two executables - netperf and netserver. Generally you will only +execute the netperf program, with the netserver program being invoked +by the remote system's inetd or having been previously started as its +own standalone daemon. + +

When you execute netperf it will establish a “control connection” to +the remote system. This connection will be used to pass test +configuration information and results to and from the remote system. +Regardless of the type of test to be run, the control connection will +be a TCP connection using BSD sockets. The control connection can use +either IPv4 or IPv6. + +

Once the control connection is up and the configuration information +has been passed, a separate “data” connection will be opened for the +measurement itself using the API's and protocols appropriate for the +specified test. When the test is completed, the data connection will +be torn-down and results from the netserver will be passed-back via the +control connection and combined with netperf's result for display to +the user. + +

Netperf places no traffic on the control connection while a test is in +progress. Certain TCP options, such as SO_KEEPALIVE, if set as your +systems' default, may put packets out on the control connection while +a test is in progress. Generally speaking this will have no effect on +the results. + +

+ +
+ +


+Previous: The Design of Netperf, +Up: The Design of Netperf + +
+ +

3.1 CPU Utilization

+ +

+CPU utilization is an important, and alas all-too infrequently +reported component of networking performance. Unfortunately, it can +be one of the most difficult metrics to measure accurately and +portably. Netperf will do its level best to report accurate +CPU utilization figures, but some combinations of processor, OS and +configuration may make that difficult. + +

CPU utilization in netperf is reported as a value between 0 and 100% +regardless of the number of CPUs involved. In addition to CPU +utilization, netperf will report a metric called a service +demand. The service demand is the normalization of CPU utilization +and work performed. For a _STREAM test it is the microseconds of CPU +time consumed to transfer on KB (K == 1024) of data. For a _RR test +it is the microseconds of CPU time consumed processing a single +transaction. For both CPU utilization and service demand, lower is +better. + +

Service demand can be particularly useful when trying to gauge the +effect of a performance change. It is essentially a measure of +efficiency, with smaller values being more efficient and thus +“better.” + +

Netperf is coded to be able to use one of several, generally +platform-specific CPU utilization measurement mechanisms. Single +letter codes will be included in the CPU portion of the test banner to +indicate which mechanism was used on each of the local (netperf) and +remote (netserver) system. + +

As of this writing those codes are: + +

+
U
The CPU utilization measurement mechanism was unknown to netperf or +netperf/netserver was not compiled to include CPU utilization +measurements. The code for the null CPU utilization mechanism can be +found in src/netcpu_none.c. +
I
An HP-UX-specific CPU utilization mechanism whereby the kernel +incremented a per-CPU counter by one for each trip through the idle +loop. This mechanism was only available on specially-compiled HP-UX +kernels prior to HP-UX 10 and is mentioned here only for the sake of +historical completeness and perhaps as a suggestion to those who might +be altering other operating systems. While rather simple, perhaps even +simplistic, this mechanism was quite robust and was not affected by +the concerns of statistical methods, or methods attempting to track +time in each of user, kernel, interrupt and idle modes which require +quite careful accounting. It can be thought-of as the in-kernel +version of the looper L mechanism without the context switch +overhead. This mechanism required calibration. +
P
An HP-UX-specific CPU utilization mechanism whereby the kernel +keeps-track of time (in the form of CPU cycles) spent in the kernel +idle loop (HP-UX 10.0 to 11.31 inclusive), or where the kernel keeps +track of time spent in idle, user, kernel and interrupt processing +(HP-UX 11.23 and later). The former requires calibration, the latter +does not. Values in either case are retrieved via one of the pstat(2) +family of calls, hence the use of the letter P. The code for +these mechanisms is found in src/netcpu_pstat.c and +src/netcpu_pstatnew.c respectively. +
K
A Solaris-specific CPU utilization mechanism whereby the kernel keeps +track of ticks (eg HZ) spent in the idle loop. This method is +statistical and is known to be inaccurate when the interrupt rate is +above epsilon as time spent processing interrupts is not subtracted +from idle. The value is retrieved via a kstat() call - hence the use +of the letter K. Since this mechanism uses units of ticks (HZ) +the calibration value should invariably match HZ. (Eg 100) The code +for this mechanism is implemented in src/netcpu_kstat.c. +
M
A Solaris-specific mechanism available on Solaris 10 and latter which +uses the new microstate accounting mechanisms. There are two, alas, +overlapping, mechanisms. The first tracks nanoseconds spent in user, +kernel, and idle modes. The second mechanism tracks nanoseconds spent +in interrupt. Since the mechanisms overlap, netperf goes through some +hand-waving to try to “fix” the problem. Since the accuracy of the +handwaving cannot be completely determined, one must presume that +while better than the K mechanism, this mechanism too is not +without issues. The values are retrieved via kstat() calls, but the +letter code is set to M to distinguish this mechanism from the +even less accurate K mechanism. The code for this mechanism is +implemented in src/netcpu_kstat10.c. +
L
A mechanism based on “looper”or “soaker” processes which sit in +tight loops counting as fast as they possibly can. This mechanism +starts a looper process for each known CPU on the system. The effect +of processor hyperthreading on the mechanism is not yet known. This +mechanism definitely requires calibration. The code for the +“looper”mechanism can be found in src/netcpu_looper.c +
N
A Microsoft Windows-specific mechanism, the code for which can be +found in src/netcpu_ntperf.c. This mechanism too is based on +what appears to be a form of micro-state accounting and requires no +calibration. On laptops, or other systems which may dynamically alter +the CPU frequency to minimize power consumption, it has been suggested +that this mechanism may become slightly confused, in which case using +BIOS/uEFI settings to disable the power saving would be indicated. + +
S
This mechanism uses /proc/stat on Linux to retrieve time +(ticks) spent in idle mode. It is thought but not known to be +reasonably accurate. The code for this mechanism can be found in +src/netcpu_procstat.c. +
C
A mechanism somewhat similar to S but using the sysctl() call +on BSD-like Operating systems (*BSD and MacOS X). The code for this +mechanism can be found in src/netcpu_sysctl.c. +
Others
Other mechanisms included in netperf in the past have included using +the times() and getrusage() calls. These calls are actually rather +poorly suited to the task of measuring CPU overhead for networking as +they tend to be process-specific and much network-related processing +can happen outside the context of a process, in places where it is not +a given it will be charged to the correct, or even a process. They +are mentioned here as a warning to anyone seeing those mechanisms used +in other networking benchmarks. These mechanisms are not available in +netperf 2.4.0 and later. +
+ +

For many platforms, the configure script will chose the best available +CPU utilization mechanism. However, some platforms have no +particularly good mechanisms. On those platforms, it is probably best +to use the “LOOPER” mechanism which is basically some number of +processes (as many as there are processors) sitting in tight little +loops counting as fast as they can. The rate at which the loopers +count when the system is believed to be idle is compared with the rate +when the system is running netperf and the ratio is used to compute +CPU utilization. + +

In the past, netperf included some mechanisms that only reported CPU +time charged to the calling process. Those mechanisms have been +removed from netperf versions 2.4.0 and later because they are +hopelessly inaccurate. Networking can and often results in CPU time +being spent in places - such as interrupt contexts - that do not get +charged to a or the correct process. + +

In fact, time spent in the processing of interrupts is a common issue +for many CPU utilization mechanisms. In particular, the “PSTAT” +mechanism was eventually known to have problems accounting for certain +interrupt time prior to HP-UX 11.11 (11iv1). HP-UX 11iv2 and later +are known/presumed to be good. The “KSTAT” mechanism is known to +have problems on all versions of Solaris up to and including Solaris +10. Even the microstate accounting available via kstat in Solaris 10 +has issues, though perhaps not as bad as those of prior versions. + +

The /proc/stat mechanism under Linux is in what the author would +consider an “uncertain” category as it appears to be statistical, +which may also have issues with time spent processing interrupts. + +

In summary, be sure to “sanity-check” the CPU utilization figures +with other mechanisms. However, platform tools such as top, vmstat or +mpstat are often based on the same mechanisms used by netperf. + +

+ +
+ +


+Previous: CPU Utilization, +Up: CPU Utilization + +
+ +

3.1.1 CPU Utilization in a Virtual Guest

+ +

The CPU utilization mechanisms used by netperf are “inline” in that +they are run by the same netperf or netserver process as is running +the test itself. This works just fine for “bare iron” tests but +runs into a problem when using virtual machines. + +

The relationship between virtual guest and hypervisor can be thought +of as being similar to that between a process and kernel in a bare +iron system. As such, (m)any CPU utilization mechanisms used in the +virtual guest are similar to “process-local” mechanisms in a bare +iron situation. However, just as with bare iron and process-local +mechanisms, much networking processing happens outside the context of +the virtual guest. It takes place in the hypervisor, and is not +visible to mechanisms running in the guest(s). For this reason, one +should not really trust CPU utilization figures reported by netperf or +netserver when running in a virtual guest. + +

If one is looking to measure the added overhead of a virtualization +mechanism, rather than rely on CPU utilization, one can rely instead +on netperf _RR tests - path-lengths and overheads can be a significant +fraction of the latency, so increases in overhead should appear as +decreases in transaction rate. Whatever you do, DO NOT rely on +the throughput of a _STREAM test. Achieving link-rate can be done via +a multitude of options that mask overhead rather than eliminate it. + +

+ +

4 Global Command-line Options

+ +

This section describes each of the global command-line options +available in the netperf and netserver binaries. Essentially, it is +an expanded version of the usage information displayed by netperf or +netserver when invoked with the -h global command-line +option. + +

+ + + + +

4.1 Command-line Options Syntax

+ +

Revision 1.8 of netperf introduced enough new functionality to overrun +the English alphabet for mnemonic command-line option names, and the +author was not and is not quite ready to switch to the contemporary +--mumble style of command-line options. (Call him a Luddite +if you wish :). + +

For this reason, the command-line options were split into two parts - +the first are the global command-line options. They are options that +affect nearly any and every test type of netperf. The second type are +the test-specific command-line options. Both are entered on the same +command line, but they must be separated from one another by a -- +for correct parsing. Global command-line options come first, followed +by the -- and then test-specific command-line options. If there +are no test-specific options to be set, the -- may be omitted. If +there are no global command-line options to be set, test-specific +options must still be preceded by a --. For example: +

     netperf <global> -- <test-specific>
+
+

sets both global and test-specific options: +

     netperf <global>
+
+

sets just global options and: +

     netperf -- <test-specific>
+
+

sets just test-specific options. + +

+ + +

4.2 Global Options

+ + + +
-a <sizespec>
This option allows you to alter the alignment of the buffers used in +the sending and receiving calls on the local system.. Changing the +alignment of the buffers can force the system to use different copy +schemes, which can have a measurable effect on performance. If the +page size for the system were 4096 bytes, and you want to pass +page-aligned buffers beginning on page boundaries, you could use +‘-a 4096’. By default the units are bytes, but suffix of “G,” +“M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or +2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify +units of 10^9, 10^6 or 10^3 bytes respectively. [Default: 8 bytes] + +


-A <sizespec>
This option is identical to the -a option with the difference +being it affects alignments for the remote system. + +


-b <size>
This option is only present when netperf has been configure with +–enable-intervals=yes prior to compilation. It sets the size of the +burst of send calls in a _STREAM test. When used in conjunction with +the -w option it can cause the rate at which data is sent to +be “paced.” + +


-B <string>
This option will cause <string> to be appended to the brief +(see -P) output of netperf. + +


-c [rate]
This option will ask that CPU utilization and service demand be +calculated for the local system. For those CPU utilization mechanisms +requiring calibration, the options rate parameter may be specified to +preclude running another calibration step, saving 40 seconds of time. +For those CPU utilization mechanisms requiring no calibration, the +optional rate parameter will be utterly and completely ignored. +[Default: no CPU measurements] + +


-C [rate]
This option requests CPU utilization and service demand calculations +for the remote system. It is otherwise identical to the -c +option. + +


-d
Each instance of this option will increase the quantity of debugging +output displayed during a test. If the debugging output level is set +high enough, it may have a measurable effect on performance. +Debugging information for the local system is printed to stdout. +Debugging information for the remote system is sent by default to the +file /tmp/netperf.debug. [Default: no debugging output] + +


-D [interval,units]
This option is only available when netperf is configured with +–enable-demo=yes. When set, it will cause netperf to emit periodic +reports of performance during the run. [interval,units] +follow the semantics of an optionspec. If specified, +interval gives the minimum interval in real seconds, it does not +have to be whole seconds. The units value can be used for the +first guess as to how many units of work (bytes or transactions) must +be done to take at least interval seconds. If omitted, +interval defaults to one second and units to values +specific to each test type. + +


-f G|M|K|g|m|k|x
This option can be used to change the reporting units for _STREAM +tests. Arguments of “G,” “M,” or “K” will set the units to +2^30, 2^20 or 2^10 bytes/s respectively (EG power of two GB, MB or +KB). Arguments of “g,” “,m” or “k” will set the units to 10^9, +10^6 or 10^3 bits/s respectively. An argument of “x” requests the +units be transactions per second and is only meaningful for a +request-response test. [Default: “m” or 10^6 bits/s] + +


-F <fillfile>
This option specified the file from which send which buffers will be +pre-filled . While the buffers will contain data from the specified +file, the file is not fully transferred to the remote system as the +receiving end of the test will not write the contents of what it +receives to a file. This can be used to pre-fill the send buffers +with data having different compressibility and so is useful when +measuring performance over mechanisms which perform compression. + +

While previously required for a TCP_SENDFILE test, later versions of +netperf removed that restriction, creating a temporary file as +needed. While the author cannot recall exactly when that took place, +it is known to be unnecessary in version 2.5.0 and later. + +


-h
This option causes netperf to display its “global” usage string and +exit to the exclusion of all else. + +


-H <optionspec>
This option will set the name of the remote system and or the address +family used for the control connection. For example: +
          -H linger,4
+
+

will set the name of the remote system to “linger” and tells netperf to +use IPv4 addressing only. +

          -H ,6
+
+

will leave the name of the remote system at its default, and request +that only IPv6 addresses be used for the control connection. +

          -H lag
+
+

will set the name of the remote system to “lag” and leave the +address family to AF_UNSPEC which means selection of IPv4 vs IPv6 is +left to the system's address resolution. + +

A value of “inet” can be used in place of “4” to request IPv4 only +addressing. Similarly, a value of “inet6” can be used in place of +“6” to request IPv6 only addressing. A value of “0” can be used +to request either IPv4 or IPv6 addressing as name resolution dictates. + +

By default, the options set with the global -H option are +inherited by the test for its data connection, unless a test-specific +-H option is specified. + +

If a -H option follows either the -4 or -6 +options, the family setting specified with the -H option will override +the -4 or -6 options for the remote address +family. If no address family is specified, settings from a previous +-4 or -6 option will remain. In a nutshell, the +last explicit global command-line option wins. + +

[Default: “localhost” for the remote name/IP address and “0” (eg +AF_UNSPEC) for the remote address family.] + +


-I <optionspec>
This option enables the calculation of confidence intervals and sets +the confidence and width parameters with the first half of the +optionspec being either 99 or 95 for 99% or 95% confidence +respectively. The second value of the optionspec specifies the width +of the desired confidence interval. For example +
          -I 99,5
+
+

asks netperf to be 99% confident that the measured mean values for +throughput and CPU utilization are within +/- 2.5% of the “real” +mean values. If the -i option is specified and the +-I option is omitted, the confidence defaults to 99% and the +width to 5% (giving +/- 2.5%) + +

If classic netperf test calculates that the desired confidence +intervals have not been met, it emits a noticeable warning that cannot +be suppressed with the -P or -v options: + +

          netperf -H tardy.cup -i 3 -I 99,5
+          TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.cup.hp.com (15.244.44.58) port 0 AF_INET : +/-2.5%  99% conf.
+          !!! WARNING
+          !!! Desired confidence was not achieved within the specified iterations.
+          !!! This implies that there was variability in the test environment that
+          !!! must be investigated before going further.
+          !!! Confidence intervals: Throughput      :  6.8%
+          !!!                       Local CPU util  :  0.0%
+          !!!                       Remote CPU util :  0.0%
+
+          Recv   Send    Send
+          Socket Socket  Message  Elapsed
+          Size   Size    Size     Time     Throughput
+          bytes  bytes   bytes    secs.    10^6bits/sec
+
+           32768  16384  16384    10.01      40.23
+
+

In the example above we see that netperf did not meet the desired +confidence intervals. Instead of being 99% confident it was within ++/- 2.5% of the real mean value of throughput it is only confident it +was within +/-3.4%. In this example, increasing the -i +option (described below) and/or increasing the iteration length with +the -l option might resolve the situation. + +

In an explicit “omni” test, failure to meet the confidence intervals +will not result in netperf emitting a warning. To verify the hitting, +or not, of the confidence intervals one will need to include them as +part of an output selection in the +test-specific -o, -O or k output selection +options. The warning about not hitting the confidence intervals will +remain in a “migrated” classic netperf test. + +


-i <sizespec>
This option enables the calculation of confidence intervals and sets +the minimum and maximum number of iterations to run in attempting to +achieve the desired confidence interval. The first value sets the +maximum number of iterations to run, the second, the minimum. The +maximum number of iterations is silently capped at 30 and the minimum +is silently floored at 3. Netperf repeats the measurement the minimum +number of iterations and continues until it reaches either the +desired confidence interval, or the maximum number of iterations, +whichever comes first. A classic or migrated netperf test will not +display the actual number of iterations run. An omni test will emit the number of iterations run if the +CONFIDENCE_ITERATION output selector is included in the +output selection. + +

If the -I option is specified and the -i option +omitted the maximum number of iterations is set to 10 and the minimum +to three. + +

Output of a warning upon not hitting the desired confidence intervals +follows the description provided for the -I option. + +

The total test time will be somewhere between the minimum and maximum +number of iterations multiplied by the test length supplied by the +-l option. + +


-j
This option instructs netperf to keep additional timing statistics +when explicitly running an omni test. These can +be output when the test-specific -o, -O or +-k output selectors include one +or more of: + +
    +
  • MIN_LATENCY +
  • MAX_LATENCY +
  • P50_LATENCY +
  • P90_LATENCY +
  • P99_LATENCY +
  • MEAN_LATENCY +
  • STDDEV_LATENCY +
+ +

These statistics will be based on an expanded (100 buckets per row +rather than 10) histogram of times rather than a terribly long list of +individual times. As such, there will be some slight error thanks to +the bucketing. However, the reduction in storage and processing +overheads is well worth it. When running a request/response test, one +might get some idea of the error by comparing the MEAN_LATENCY calculated from the histogram with the +RT_LATENCY calculated from the number of request/response +transactions and the test run time. + +

In the case of a request/response test the latencies will be +transaction latencies. In the case of a receive-only test they will +be time spent in the receive call. In the case of a send-only test +they will be time spent in the send call. The units will be +microseconds. Added in netperf 2.5.0. + +


-l testlen
This option controls the length of any one iteration of the requested +test. A positive value for testlen will run each iteration of +the test for at least testlen seconds. A negative value for +testlen will run each iteration for the absolute value of +testlen transactions for a _RR test or bytes for a _STREAM test. +Certain tests, notably those using UDP can only be timed, they cannot +be limited by transaction or byte count. This limitation may be +relaxed in an omni test. + +

In some situations, individual iterations of a test may run for longer +for the number of seconds specified by the -l option. In +particular, this may occur for those tests where the socket buffer +size(s) are significantly longer than the bandwidthXdelay product of +the link(s) over which the data connection passes, or those tests +where there may be non-trivial numbers of retransmissions. + +

If confidence intervals are enabled via either -I or +-i the total length of the netperf test will be somewhere +between the minimum and maximum iteration count multiplied by +testlen. + +


-L <optionspec>
This option is identical to the -H option with the difference +being it sets the _local_ hostname/IP and/or address family +information. This option is generally unnecessary, but can be useful +when you wish to make sure that the netperf control and data +connections go via different paths. It can also come-in handy if one +is trying to run netperf through those evil, end-to-end breaking +things known as firewalls. + +

[Default: 0.0.0.0 (eg INADDR_ANY) for IPv4 and ::0 for IPv6 for the +local name. AF_UNSPEC for the local address family.] + +


-n numcpus
This option tells netperf how many CPUs it should ass-u-me are active +on the system running netperf. In particular, this is used for the +CPU utilization and service demand calculations. +On certain systems, netperf is able to determine the number of CPU's +automagically. This option will override any number netperf might be +able to determine on its own. + +

Note that this option does _not_ set the number of CPUs on the system +running netserver. When netperf/netserver cannot automagically +determine the number of CPUs that can only be set for netserver via a +netserver -n command-line option. + +

As it is almost universally possible for netperf/netserver to +determine the number of CPUs on the system automagically, 99 times out +of 10 this option should not be necessary and may be removed in a +future release of netperf. + +


-N
This option tells netperf to forgo establishing a control +connection. This makes it is possible to run some limited netperf +tests without a corresponding netserver on the remote system. + +

With this option set, the test to be run is to get all the addressing +information it needs to establish its data connection from the command +line or internal defaults. If not otherwise specified by +test-specific command line options, the data connection for a +“STREAM” or “SENDFILE” test will be to the “discard” port, an +“RR” test will be to the “echo” port, and a “MEARTS” test will +be to the chargen port. + +

The response size of an “RR” test will be silently set to be the +same as the request size. Otherwise the test would hang if the +response size was larger than the request size, or would report an +incorrect, inflated transaction rate if the response size was less +than the request size. + +

Since there is no control connection when this option is specified, it +is not possible to set “remote” properties such as socket buffer +size and the like via the netperf command line. Nor is it possible to +retrieve such interesting remote information as CPU utilization. +These items will be displayed as values which should make it +immediately obvious that was the case. + +

The only way to change remote characteristics such as socket buffer +size or to obtain information such as CPU utilization is to employ +platform-specific methods on the remote system. Frankly, if one has +access to the remote system to employ those methods one aught to be +able to run a netserver there. However, that ability may not be +present in certain “support” situations, hence the addition of this +option. + +

Added in netperf 2.4.3. + +


-o <sizespec>
The value(s) passed-in with this option will be used as an offset +added to the alignment specified with the -a option. For +example: +
          -o 3 -a 4096
+
+

will cause the buffers passed to the local (netperf) send and receive +calls to begin three bytes past an address aligned to 4096 +bytes. [Default: 0 bytes] + +


-O <sizespec>
This option behaves just as the -o option but on the remote +(netserver) system and in conjunction with the -A +option. [Default: 0 bytes] + +


-p <optionspec>
The first value of the optionspec passed-in with this option tells +netperf the port number at which it should expect the remote netserver +to be listening for control connections. The second value of the +optionspec will request netperf to bind to that local port number +before establishing the control connection. For example +
          -p 12345
+
+

tells netperf that the remote netserver is listening on port 12345 and +leaves selection of the local port number for the control connection +up to the local TCP/IP stack whereas +

          -p ,32109
+
+

leaves the remote netserver port at the default value of 12865 and +causes netperf to bind to the local port number 32109 before +connecting to the remote netserver. + +

In general, setting the local port number is only necessary when one +is looking to run netperf through those evil, end-to-end breaking +things known as firewalls. + +


-P 0|1
A value of “1” for the -P option will enable display of +the test banner. A value of “0” will disable display of the test +banner. One might want to disable display of the test banner when +running the same basic test type (eg TCP_STREAM) multiple times in +succession where the test banners would then simply be redundant and +unnecessarily clutter the output. [Default: 1 - display test banners] + +


-s <seconds>
This option will cause netperf to sleep ‘<seconds>’ before +actually transferring data over the data connection. This may be +useful in situations where one wishes to start a great many netperf +instances and do not want the earlier ones affecting the ability of +the later ones to get established. + +

Added somewhere between versions 2.4.3 and 2.5.0. + +


-S
This option will cause an attempt to be made to set SO_KEEPALIVE on +the data socket of a test using the BSD sockets interface. The +attempt will be made on the netperf side of all tests, and will be +made on the netserver side of an omni or +migrated test. No indication of failure is given +unless debug output is enabled with the global -d option. + +

Added in version 2.5.0. + +


-t testname
This option is used to tell netperf which test you wish to run. As of +this writing, valid values for testname include: + + Not all tests are always compiled into netperf. In particular, the +“XTI,” “SCTP,” “UNIXDOMAIN,” and “DL*” tests are only included in +netperf when configured with +--enable-[xti|sctp|unixdomain|dlpi]=yes. + +

Netperf only runs one type of test no matter how many -t +options may be present on the command-line. The last -t +global command-line option will determine the test to be +run. [Default: TCP_STREAM] + +


-T <optionspec>
This option controls the CPU, and probably by extension memory, +affinity of netperf and/or netserver. +
          netperf -T 1
+
+

will bind both netperf and netserver to “CPU 1” on their respective +systems. +

          netperf -T 1,
+
+

will bind just netperf to “CPU 1” and will leave netserver unbound. +

          netperf -T ,2
+
+

will leave netperf unbound and will bind netserver to “CPU 2.” +

          netperf -T 1,2
+
+

will bind netperf to “CPU 1” and netserver to “CPU 2.” + +

This can be particularly useful when investigating performance issues +involving where processes run relative to where NIC interrupts are +processed or where NICs allocate their DMA buffers. + +


-v verbosity
This option controls how verbose netperf will be in its output, and is +often used in conjunction with the -P option. If the +verbosity is set to a value of “0” then only the test's SFM (Single +Figure of Merit) is displayed. If local CPU utilization is requested via the -c option then the SFM is +the local service demand. Othersise, if remote CPU utilization is +requested via the -C option then the SFM is the remote +service demand. If neither local nor remote CPU utilization are +requested the SFM will be the measured throughput or transaction rate +as implied by the test specified with the -t option. + +

If the verbosity level is set to “1” then the “normal” netperf +result output for each test is displayed. + +

If the verbosity level is set to “2” then “extra” information will +be displayed. This may include, but is not limited to the number of +send or recv calls made and the average number of bytes per send or +recv call, or a histogram of the time spent in each send() call or for +each transaction if netperf was configured with +--enable-histogram=yes. [Default: 1 - normal verbosity] + +

In an omni test the verbosity setting is largely +ignored, save for when asking for the time histogram to be displayed. +In version 2.5.0 and later there is no output selector for the histogram and so it remains displayed only when the +verbosity level is set to 2. + +


-V
This option displays the netperf version and then exits. + +

Added in netperf 2.4.4. + +


-w time
If netperf was configured with --enable-intervals=yes then +this value will set the inter-burst time to time milliseconds, and the +-b option will set the number of sends per burst. The actual +inter-burst time may vary depending on the system's timer resolution. + +


-W <sizespec>
This option controls the number of buffers in the send (first or only +value) and or receive (second or only value) buffer rings. Unlike +some benchmarks, netperf does not continuously send or receive from a +single buffer. Instead it rotates through a ring of +buffers. [Default: One more than the size of the send or receive +socket buffer sizes (-s and/or -S options) divided +by the send -m or receive -M buffer size +respectively] + +


-4
Specifying this option will set both the local and remote address +families to AF_INET - that is use only IPv4 addresses on the control +connection. This can be overridden by a subsequent -6, +-H or -L option. Basically, the last option +explicitly specifying an address family wins. Unless overridden by a +test-specific option, this will be inherited for the data connection +as well. + +


-6
Specifying this option will set both local and and remote address +families to AF_INET6 - that is use only IPv6 addresses on the control +connection. This can be overridden by a subsequent -4, +-H or -L option. Basically, the last address family +explicitly specified wins. Unless overridden by a test-specific +option, this will be inherited for the data connection as well. + +
+ + + +

5 Using Netperf to Measure Bulk Data Transfer

+ +

The most commonly measured aspect of networked system performance is +that of bulk or unidirectional transfer performance. Everyone wants +to know how many bits or bytes per second they can push across the +network. The classic netperf convention for a bulk data transfer test +name is to tack a “_STREAM” suffix to a test name. + +

+ + + + +

5.1 Issues in Bulk Transfer

+ +

There are any number of things which can affect the performance of a +bulk transfer test. + +

Certainly, absent compression, bulk-transfer tests can be limited by +the speed of the slowest link in the path from the source to the +destination. If testing over a gigabit link, you will not see more +than a gigabit :) Such situations can be described as being +network-limited or NIC-limited. + +

CPU utilization can also affect the results of a bulk-transfer test. +If the networking stack requires a certain number of instructions or +CPU cycles per KB of data transferred, and the CPU is limited in the +number of instructions or cycles it can provide, then the transfer can +be described as being CPU-bound. + +

A bulk-transfer test can be CPU bound even when netperf reports less +than 100% CPU utilization. This can happen on an MP system where one +or more of the CPUs saturate at 100% but other CPU's remain idle. +Typically, a single flow of data, such as that from a single instance +of a netperf _STREAM test cannot make use of much more than the power +of one CPU. Exceptions to this generally occur when netperf and/or +netserver run on CPU(s) other than the CPU(s) taking interrupts from +the NIC(s). In that case, one might see as much as two CPUs' worth of +processing being used to service the flow of data. + +

Distance and the speed-of-light can affect performance for a +bulk-transfer; often this can be mitigated by using larger windows. +One common limit to the performance of a transport using window-based +flow-control is: +

     Throughput <= WindowSize/RoundTripTime
+
+

As the sender can only have a window's-worth of data outstanding on +the network at any one time, and the soonest the sender can receive a +window update from the receiver is one RoundTripTime (RTT). TCP and +SCTP are examples of such protocols. + +

Packet losses and their effects can be particularly bad for +performance. This is especially true if the packet losses result in +retransmission timeouts for the protocol(s) involved. By the time a +retransmission timeout has happened, the flow or connection has sat +idle for a considerable length of time. + +

On many platforms, some variant on the netstat command can +be used to retrieve statistics about packet loss and +retransmission. For example: +

     netstat -p tcp
+
+

will retrieve TCP statistics on the HP-UX Operating System. On other +platforms, it may not be possible to retrieve statistics for a +specific protocol and something like: +

     netstat -s
+
+

would be used instead. + +

Many times, such network statistics are keep since the time the stack +started, and we are only really interested in statistics from when +netperf was running. In such situations something along the lines of: +

     netstat -p tcp > before
+     netperf -t TCP_mumble...
+     netstat -p tcp > after
+
+

is indicated. The +beforeafter utility +can be used to subtract the statistics in before from the +statistics in after: +

     beforeafter before after > delta
+
+

and then one can look at the statistics in delta. Beforeafter +is distributed in source form so one can compile it on the platform(s) +of interest. + +

If running a version 2.5.0 or later “omni” test under Linux one can +include either or both of: +

    +
  • LOCAL_TRANSPORT_RETRANS +
  • REMOTE_TRANSPORT_RETRANS +
+ +

in the values provided via a test-specific -o, -O, +or -k output selction option and netperf will report the +retransmissions experienced on the data connection, as reported via a +getsockopt(TCP_INFO) call. If confidence intervals have been +requested via the global -I or -i options, the +reported value(s) will be for the last iteration. If the test is over +a protocol other than TCP, or on a platform other than Linux, the +results are undefined. + +

While it was written with HP-UX's netstat in mind, the +annotated netstat writeup may be helpful with other platforms as well. + +

+ + +

5.2 Options common to TCP UDP and SCTP tests

+ +

Many “test-specific” options are actually common across the +different tests. For those tests involving TCP, UDP and SCTP, whether +using the BSD Sockets or the XTI interface those common options +include: + + + +

-h
Display the test-suite-specific usage string and exit. For a TCP_ or +UDP_ test this will be the usage string from the source file +nettest_bsd.c. For an XTI_ test, this will be the usage string from +the source file nettest_xti.c. For an SCTP test, this will be the +usage string from the source file nettest_sctp.c. + +
-H <optionspec>
Normally, the remote hostname|IP and address family information is +inherited from the settings for the control connection (eg global +command-line -H, -4 and/or -6 options). +The test-specific -H will override those settings for the +data (aka test) connection only. Settings for the control connection +are left unchanged. + +


-L <optionspec>
The test-specific -L option is identical to the test-specific +-H option except it affects the local hostname|IP and address +family information. As with its global command-line counterpart, this +is generally only useful when measuring though those evil, end-to-end +breaking things called firewalls. + +


-m bytes
Set the size of the buffer passed-in to the “send” calls of a +_STREAM test. Note that this may have only an indirect effect on the +size of the packets sent over the network, and certain Layer 4 +protocols do _not_ preserve or enforce message boundaries, so setting +-m for the send size does not necessarily mean the receiver +will receive that many bytes at any one time. By default the units are +bytes, but suffix of “G,” “M,” or “K” will specify the units to +be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” +“m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -m 32K
+
+

will set the size to 32KB or 32768 bytes. [Default: the local send +socket buffer size for the connection - either the system's default or +the value set via the -s option.] + +


-M bytes
Set the size of the buffer passed-in to the “recv” calls of a +_STREAM test. This will be an upper bound on the number of bytes +received per receive call. By default the units are bytes, but suffix +of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 +(MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” +will specify units of 10^9, 10^6 or 10^3 bytes respectively. For +example: +
          -M 32K
+
+

will set the size to 32KB or 32768 bytes. [Default: the remote receive +socket buffer size for the data connection - either the system's +default or the value set via the -S option.] + +


-P <optionspec>
Set the local and/or remote port numbers for the data connection. + +


-s <sizespec>
This option sets the local (netperf) send and receive socket buffer +sizes for the data connection to the value(s) specified. Often, this +will affect the advertised and/or effective TCP or other window, but +on some platforms it may not. By default the units are bytes, but +suffix of “G,” “M,” or “K” will specify the units to be 2^30 +(GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” +or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -s 128K
+
+

Will request the local send and receive socket buffer sizes to be +128KB or 131072 bytes. + +

While the historic expectation is that setting the socket buffer size +has a direct effect on say the TCP window, today that may not hold +true for all stacks. Further, while the historic expectation is that +the value specified in a setsockopt() call will be the value returned +via a getsockopt() call, at least one stack is known to deliberately +ignore history. When running under Windows a value of 0 may be used +which will be an indication to the stack the user wants to enable a +form of copy avoidance. [Default: -1 - use the system's default socket +buffer sizes] + +


-S <sizespec>
This option sets the remote (netserver) send and/or receive socket +buffer sizes for the data connection to the value(s) specified. +Often, this will affect the advertised and/or effective TCP or other +window, but on some platforms it may not. By default the units are +bytes, but suffix of “G,” “M,” or “K” will specify the units to +be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” +“m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -S 128K
+
+

Will request the remote send and receive socket buffer sizes to be +128KB or 131072 bytes. + +

While the historic expectation is that setting the socket buffer size +has a direct effect on say the TCP window, today that may not hold +true for all stacks. Further, while the historic expectation is that +the value specified in a setsockopt() call will be the value returned +via a getsockopt() call, at least one stack is known to deliberately +ignore history. When running under Windows a value of 0 may be used +which will be an indication to the stack the user wants to enable a +form of copy avoidance. [Default: -1 - use the system's default socket +buffer sizes] + +


-4
Set the local and remote address family for the data connection to +AF_INET - ie use IPv4 addressing only. Just as with their global +command-line counterparts the last of the -4, -6, +-H or -L option wins for their respective address +families. + +


-6
This option is identical to its -4 cousin, but requests IPv6 +addresses for the local and remote ends of the data connection. + +
+ + + + + +

5.2.1 TCP_STREAM

+ +

The TCP_STREAM test is the default test in netperf. It is quite +simple, transferring some quantity of data from the system running +netperf to the system running netserver. While time spent +establishing the connection is not included in the throughput +calculation, time spent flushing the last of the data to the remote at +the end of the test is. This is how netperf knows that all the data +it sent was received by the remote. In addition to the options common to STREAM tests, the +following test-specific options can be included to possibly alter the +behavior of the test: + +

+
-C
This option will set TCP_CORK mode on the data connection on those +systems where TCP_CORK is defined (typically Linux). A full +description of TCP_CORK is beyond the scope of this manual, but in a +nutshell it forces sub-MSS sends to be buffered so every segment sent +is Maximum Segment Size (MSS) unless the application performs an +explicit flush operation or the connection is closed. At present +netperf does not perform any explicit flush operations. Setting +TCP_CORK may improve the bitrate of tests where the “send size” +(-m option) is smaller than the MSS. It should also improve +(make smaller) the service demand. + +

The Linux tcp(7) manpage states that TCP_CORK cannot be used in +conjunction with TCP_NODELAY (set via the -d option), however +netperf does not validate command-line options to enforce that. + +

-D
This option will set TCP_NODELAY on the data connection on those +systems where TCP_NODELAY is defined. This disables something known +as the Nagle Algorithm, which is intended to make the segments TCP +sends as large as reasonably possible. Setting TCP_NODELAY for a +TCP_STREAM test should either have no effect when the send size +(-m option) is larger than the MSS or will decrease reported +bitrate and increase service demand when the send size is smaller than +the MSS. This stems from TCP_NODELAY causing each sub-MSS send to be +its own TCP segment rather than being aggregated with other small +sends. This means more trips up and down the protocol stack per KB of +data transferred, which means greater CPU utilization. + +

If setting TCP_NODELAY with -D affects throughput and/or +service demand for tests where the send size (-m) is larger +than the MSS it suggests the TCP/IP stack's implementation of the +Nagle Algorithm _may_ be broken, perhaps interpreting the Nagle +Algorithm on a segment by segment basis rather than the proper user +send by user send basis. However, a better test of this can be +achieved with the TCP_RR test. + +

+ +

Here is an example of a basic TCP_STREAM test, in this case from a +Debian Linux (2.6 kernel) system to an HP-UX 11iv2 (HP-UX 11.23) +system: + +

     $ netperf -H lag
+     TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+      32768  16384  16384    10.00      80.42
+
+

We see that the default receive socket buffer size for the receiver +(lag - HP-UX 11.23) is 32768 bytes, and the default socket send buffer +size for the sender (Debian 2.6 kernel) is 16384 bytes, however Linux +does “auto tuning” of socket buffer and TCP window sizes, which +means the send socket buffer size may be different at the end of the +test than it was at the beginning. This is addressed in the omni tests added in version 2.5.0 and output selection. Throughput is expressed as 10^6 (aka +Mega) bits per second, and the test ran for 10 seconds. IPv4 +addresses (AF_INET) were used. + +

+ + +

5.2.2 TCP_MAERTS

+ +

A TCP_MAERTS (MAERTS is STREAM backwards) test is “just like” a +TCP_STREAM test except the data flows from the netserver to the +netperf. The global command-line -F option is ignored for +this test type. The test-specific command-line -C option is +ignored for this test type. + +

Here is an example of a TCP_MAERTS test between the same two systems +as in the example for the TCP_STREAM test. This time we request +larger socket buffers with -s and -S options: + +

     $ netperf -H lag -t TCP_MAERTS -- -s 128K -S 128K
+     TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+     221184 131072 131072    10.03      81.14
+
+

Where we see that Linux, unlike HP-UX, may not return the same value +in a getsockopt() as was requested in the prior setsockopt(). + +

This test is included more for benchmarking convenience than anything +else. + +

+ + +


+Next: , +Previous: TCP_MAERTS, +Up: Options common to TCP UDP and SCTP tests + +
+ + +

5.2.3 TCP_SENDFILE

+ +

The TCP_SENDFILE test is “just like” a TCP_STREAM test except +netperf the platform's sendfile() call instead of calling +send(). Often this results in a zero-copy operation +where data is sent directly from the filesystem buffer cache. This +_should_ result in lower CPU utilization and possibly higher +throughput. If it does not, then you may want to contact your +vendor(s) because they have a problem on their hands. + +

Zero-copy mechanisms may also alter the characteristics (size and +number of buffers per) of packets passed to the NIC. In many stacks, +when a copy is performed, the stack can “reserve” space at the +beginning of the destination buffer for things like TCP, IP and Link +headers. This then has the packet contained in a single buffer which +can be easier to DMA to the NIC. When no copy is performed, there is +no opportunity to reserve space for headers and so a packet will be +contained in two or more buffers. + +

As of some time before version 2.5.0, the global -F option is no longer required for this test. If it is not +specified, netperf will create a temporary file, which it will delete +at the end of the test. If the -F option is specified it +must reference a file of at least the size of the send ring +(See the global -W option.) multiplied by +the send size (See the test-specific -m option.). All other TCP-specific options +remain available and optional. + +

In this first example: +

     $ netperf -H lag -F ../src/netperf -t TCP_SENDFILE -- -s 128K -S 128K
+     TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET
+     alloc_sendfile_buf_ring: specified file too small.
+     file must be larger than send_width * send_size
+
+

we see what happens when the file is too small. Here: + +

     $ netperf -H lag -F /boot/vmlinuz-2.6.8-1-686 -t TCP_SENDFILE -- -s 128K -S 128K
+     TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+     131072 221184 221184    10.02      81.83
+
+

we resolve that issue by selecting a larger file. + +

+ +

5.2.4 UDP_STREAM

+ +

A UDP_STREAM test is similar to a TCP_STREAM test except UDP is +used as the transport rather than TCP. + +

A UDP_STREAM test has no end-to-end flow control - UDP provides none +and neither does netperf. However, if you wish, you can configure +netperf with --enable-intervals=yes to enable the global +command-line -b and -w options to pace bursts of +traffic onto the network. + +

This has a number of implications. + +

The biggest of these implications is the data which is sent might not +be received by the remote. For this reason, the output of a +UDP_STREAM test shows both the sending and receiving throughput. On +some platforms, it may be possible for the sending throughput to be +reported as a value greater than the maximum rate of the link. This +is common when the CPU(s) are faster than the network and there is no +intra-stack flow-control. + +

Here is an example of a UDP_STREAM test between two systems connected +by a 10 Gigabit Ethernet link: +

     $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 32768
+     UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET
+     Socket  Message  Elapsed      Messages
+     Size    Size     Time         Okay Errors   Throughput
+     bytes   bytes    secs            #      #   10^6bits/sec
+
+     124928   32768   10.00      105672      0    2770.20
+     135168           10.00      104844           2748.50
+
+
+

The first line of numbers are statistics from the sending (netperf) +side. The second line of numbers are from the receiving (netserver) +side. In this case, 105672 - 104844 or 828 messages did not make it +all the way to the remote netserver process. + +

If the value of the -m option is larger than the local send +socket buffer size (-s option) netperf will likely abort with +an error message about how the send call failed: + +

     netperf -t UDP_STREAM -H 192.168.2.125
+     UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET
+     udp_send: data send error: Message too long
+
+

If the value of the -m option is larger than the remote +socket receive buffer, the reported receive throughput will likely be +zero as the remote UDP will discard the messages as being too large to +fit into the socket buffer. + +

     $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 65000 -S 32768
+     UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET
+     Socket  Message  Elapsed      Messages
+     Size    Size     Time         Okay Errors   Throughput
+     bytes   bytes    secs            #      #   10^6bits/sec
+
+     124928   65000   10.00       53595      0    2786.99
+      65536           10.00           0              0.00
+
+

The example above was between a pair of systems running a “Linux” +kernel. Notice that the remote Linux system returned a value larger +than that passed-in to the -S option. In fact, this value +was larger than the message size set with the -m option. +That the remote socket buffer size is reported as 65536 bytes would +suggest to any sane person that a message of 65000 bytes would fit, +but the socket isn't _really_ 65536 bytes, even though Linux is +telling us so. Go figure. + +

+ +

5.2.5 XTI_TCP_STREAM

+ +

An XTI_TCP_STREAM test is simply a TCP_STREAM test using the XTI +rather than BSD Sockets interface. The test-specific -X +<devspec> option can be used to specify the name of the local and/or +remote XTI device files, which is required by the t_open() call +made by netperf XTI tests. + +

The XTI_TCP_STREAM test is only present if netperf was configured with +--enable-xti=yes. The remote netserver must have also been +configured with --enable-xti=yes. + +

+ +

5.2.6 XTI_UDP_STREAM

+ +

An XTI_UDP_STREAM test is simply a UDP_STREAM test using the XTI +rather than BSD Sockets Interface. The test-specific -X +<devspec> option can be used to specify the name of the local and/or +remote XTI device files, which is required by the t_open() call +made by netperf XTI tests. + +

The XTI_UDP_STREAM test is only present if netperf was configured with +--enable-xti=yes. The remote netserver must have also been +configured with --enable-xti=yes. + +

+ +

5.2.7 SCTP_STREAM

+ +

An SCTP_STREAM test is essentially a TCP_STREAM test using the SCTP +rather than TCP. The -D option will set SCTP_NODELAY, which +is much like the TCP_NODELAY option for TCP. The -C option +is not applicable to an SCTP test as there is no corresponding +SCTP_CORK option. The author is still figuring-out what the +test-specific -N option does :) + +

The SCTP_STREAM test is only present if netperf was configured with +--enable-sctp=yes. The remote netserver must have also been +configured with --enable-sctp=yes. + +

+ +

5.2.8 DLCO_STREAM

+ +

A DLPI Connection Oriented Stream (DLCO_STREAM) test is very similar +in concept to a TCP_STREAM test. Both use reliable, +connection-oriented protocols. The DLPI test differs from the TCP +test in that its protocol operates only at the link-level and does not +include TCP-style segmentation and reassembly. This last difference +means that the value passed-in with the -m option must be +less than the interface MTU. Otherwise, the -m and +-M options are just like their TCP/UDP/SCTP counterparts. + +

Other DLPI-specific options include: + +

+
-D <devspec>
This option is used to provide the fully-qualified names for the local +and/or remote DLPI device files. The syntax is otherwise identical to +that of a sizespec. +
-p <ppaspec>
This option is used to specify the local and/or remote DLPI PPA(s). +The PPA is used to identify the interface over which traffic is to be +sent/received. The syntax of a ppaspec is otherwise the same as +a sizespec. +
-s sap
This option specifies the 802.2 SAP for the test. A SAP is somewhat +like either the port field of a TCP or UDP header or the protocol +field of an IP header. The specified SAP should not conflict with any +other active SAPs on the specified PPA's (-p option). +
-w <sizespec>
This option specifies the local send and receive window sizes in units +of frames on those platforms which support setting such things. +
-W <sizespec>
This option specifies the remote send and receive window sizes in +units of frames on those platforms which support setting such things. +
+ +

The DLCO_STREAM test is only present if netperf was configured with +--enable-dlpi=yes. The remote netserver must have also been +configured with --enable-dlpi=yes. + +

+ +

5.2.9 DLCL_STREAM

+ +

A DLPI ConnectionLess Stream (DLCL_STREAM) test is analogous to a +UDP_STREAM test in that both make use of unreliable/best-effort, +connection-less transports. The DLCL_STREAM test differs from the +UDP_STREAM test in that the message size (-m option) must +always be less than the link MTU as there is no IP-like fragmentation +and reassembly available and netperf does not presume to provide one. + +

The test-specific command-line options for a DLCL_STREAM test are the +same as those for a DLCO_STREAM test. + +

The DLCL_STREAM test is only present if netperf was configured with +--enable-dlpi=yes. The remote netserver must have also been +configured with --enable-dlpi=yes. + +

+ + +


+Next: , +Previous: DLCL_STREAM, +Up: Options common to TCP UDP and SCTP tests + +
+ + +

5.2.10 STREAM_STREAM

+ +

A Unix Domain Stream Socket Stream test (STREAM_STREAM) is similar in +concept to a TCP_STREAM test, but using Unix Domain sockets. It is, +naturally, limited to intra-machine traffic. A STREAM_STREAM test +shares the -m, -M, -s and -S +options of the other _STREAM tests. In a STREAM_STREAM test the +-p option sets the directory in which the pipes will be +created rather than setting a port number. The default is to create +the pipes in the system default for the tempnam() call. + +

The STREAM_STREAM test is only present if netperf was configured with +--enable-unixdomain=yes. The remote netserver must have also been +configured with --enable-unixdomain=yes. + +

+ + +

5.2.11 DG_STREAM

+ +

A Unix Domain Datagram Socket Stream test (SG_STREAM) is very much +like a TCP_STREAM test except that message boundaries are preserved. +In this way, it may also be considered similar to certain flavors of +SCTP test which can also preserve message boundaries. + +

All the options of a STREAM_STREAM test are applicable to a DG_STREAM +test. + +

The DG_STREAM test is only present if netperf was configured with +--enable-unixdomain=yes. The remote netserver must have also been +configured with --enable-unixdomain=yes. + +

+ +

6 Using Netperf to Measure Request/Response

+ +

Request/response performance is often overlooked, yet it is just as +important as bulk-transfer performance. While things like larger +socket buffers and TCP windows, and stateless offloads like TSO and +LRO can cover a multitude of latency and even path-length sins, those +sins cannot easily hide from a request/response test. The convention +for a request/response test is to have a _RR suffix. There are +however a few “request/response” tests that have other suffixes. + +

A request/response test, particularly synchronous, one transaction at +a time test such as those found by default in netperf, is particularly +sensitive to the path-length of the networking stack. An _RR test can +also uncover those platforms where the NICs are strapped by default +with overbearing interrupt avoidance settings in an attempt to +increase the bulk-transfer performance (or rather, decrease the CPU +utilization of a bulk-transfer test). This sensitivity is most acute +for small request and response sizes, such as the single-byte default +for a netperf _RR test. + +

While a bulk-transfer test reports its results in units of bits or +bytes transferred per second, by default a mumble_RR test reports +transactions per second where a transaction is defined as the +completed exchange of a request and a response. One can invert the +transaction rate to arrive at the average round-trip latency. If one +is confident about the symmetry of the connection, the average one-way +latency can be taken as one-half the average round-trip latency. As of +version 2.5.0 (actually slightly before) netperf still does not do the +latter, but will do the former if one sets the verbosity to 2 for a +classic netperf test, or includes the appropriate output selector in an omni test. It +will also allow the user to switch the throughput units from +transactions per second to bits or bytes per second with the global +-f option. + +

+ + + + +

6.1 Issues in Request/Response

+ +

Most if not all the Issues in Bulk Transfer apply to +request/response. The issue of round-trip latency is even more +important as netperf generally only has one transaction outstanding at +a time. + +

A single instance of a one transaction outstanding _RR test should +_never_ completely saturate the CPU of a system. If testing between +otherwise evenly matched systems, the symmetric nature of a _RR test +with equal request and response sizes should result in equal CPU +loading on both systems. However, this may not hold true on MP +systems, particularly if one CPU binds the netperf and netserver +differently via the global -T option. + +

For smaller request and response sizes packet loss is a bigger issue +as there is no opportunity for a fast retransmit or +retransmission prior to a retransmission timer expiring. + +

Virtualization may considerably increase the effective path length of +a networking stack. While this may not preclude achieving link-rate +on a comparatively slow link (eg 1 Gigabit Ethernet) on a _STREAM +test, it can show-up as measurably fewer transactions per second on an +_RR test. However, this may still be masked by interrupt coalescing +in the NIC/driver. + +

Certain NICs have ways to minimize the number of interrupts sent to +the host. If these are strapped badly they can significantly reduce +the performance of something like a single-byte request/response test. +Such setups are distinguished by seriously low reported CPU utilization +and what seems like a low (even if in the thousands) transaction per +second rate. Also, if you run such an OS/driver combination on faster +or slower hardware and do not see a corresponding change in the +transaction rate, chances are good that the driver is strapping the +NIC with aggressive interrupt avoidance settings. Good for bulk +throughput, but bad for latency. + +

Some drivers may try to automagically adjust the interrupt avoidance +settings. If they are not terribly good at it, you will see +considerable run-to-run variation in reported transaction rates. +Particularly if you “mix-up” _STREAM and _RR tests. + +

+ + +

6.2 Options Common to TCP UDP and SCTP _RR tests

+ +

Many “test-specific” options are actually common across the +different tests. For those tests involving TCP, UDP and SCTP, whether +using the BSD Sockets or the XTI interface those common options +include: + + + +

-h
Display the test-suite-specific usage string and exit. For a TCP_ or +UDP_ test this will be the usage string from the source file +nettest_bsd.c. For an XTI_ test, this will be the usage string +from the source file src/nettest_xti.c. For an SCTP test, this +will be the usage string from the source file +src/nettest_sctp.c. + +


-H <optionspec>
Normally, the remote hostname|IP and address family information is +inherited from the settings for the control connection (eg global +command-line -H, -4 and/or -6 options. +The test-specific -H will override those settings for the +data (aka test) connection only. Settings for the control connection +are left unchanged. This might be used to cause the control and data +connections to take different paths through the network. + +


-L <optionspec>
The test-specific -L option is identical to the test-specific +-H option except it affects the local hostname|IP and address +family information. As with its global command-line counterpart, this +is generally only useful when measuring though those evil, end-to-end +breaking things called firewalls. + +


-P <optionspec>
Set the local and/or remote port numbers for the data connection. + +


-r <sizespec>
This option sets the request (first value) and/or response (second +value) sizes for an _RR test. By default the units are bytes, but a +suffix of “G,” “M,” or “K” will specify the units to be 2^30 +(GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” +or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -r 128,16K
+
+

Will set the request size to 128 bytes and the response size to 16 KB +or 16384 bytes. [Default: 1 - a single-byte request and response ] + +


-s <sizespec>
This option sets the local (netperf) send and receive socket buffer +sizes for the data connection to the value(s) specified. Often, this +will affect the advertised and/or effective TCP or other window, but +on some platforms it may not. By default the units are bytes, but a +suffix of “G,” “M,” or “K” will specify the units to be 2^30 +(GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” +or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -s 128K
+
+

Will request the local send (netperf) and receive socket buffer sizes +to be 128KB or 131072 bytes. + +

While the historic expectation is that setting the socket buffer size +has a direct effect on say the TCP window, today that may not hold +true for all stacks. When running under Windows a value of 0 may be +used which will be an indication to the stack the user wants to enable +a form of copy avoidance. [Default: -1 - use the system's default +socket buffer sizes] + +


-S <sizespec>
This option sets the remote (netserver) send and/or receive socket +buffer sizes for the data connection to the value(s) specified. +Often, this will affect the advertised and/or effective TCP or other +window, but on some platforms it may not. By default the units are +bytes, but a suffix of “G,” “M,” or “K” will specify the units +to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of +“g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes +respectively. For example: +
          -S 128K
+
+

Will request the remote (netserver) send and receive socket buffer +sizes to be 128KB or 131072 bytes. + +

While the historic expectation is that setting the socket buffer size +has a direct effect on say the TCP window, today that may not hold +true for all stacks. When running under Windows a value of 0 may be +used which will be an indication to the stack the user wants to enable +a form of copy avoidance. [Default: -1 - use the system's default +socket buffer sizes] + +


-4
Set the local and remote address family for the data connection to +AF_INET - ie use IPv4 addressing only. Just as with their global +command-line counterparts the last of the -4, -6, +-H or -L option wins for their respective address +families. + +


-6
This option is identical to its -4 cousin, but requests IPv6 +addresses for the local and remote ends of the data connection. + +
+ + + + + +

6.2.1 TCP_RR

+ +

+A TCP_RR (TCP Request/Response) test is requested by passing a value +of “TCP_RR” to the global -t command-line option. A TCP_RR +test can be thought-of as a user-space to user-space ping with +no think time - it is by default a synchronous, one transaction at a +time, request/response test. + +

The transaction rate is the number of complete transactions exchanged +divided by the length of time it took to perform those transactions. + +

If the two Systems Under Test are otherwise identical, a TCP_RR test +with the same request and response size should be symmetric - it +should not matter which way the test is run, and the CPU utilization +measured should be virtually the same on each system. If not, it +suggests that the CPU utilization mechanism being used may have some, +well, issues measuring CPU utilization completely and accurately. + +

Time to establish the TCP connection is not counted in the result. If +you want connection setup overheads included, you should consider the +TPC_CC or TCP_CRR tests. + +

If specifying the -D option to set TCP_NODELAY and disable +the Nagle Algorithm increases the transaction rate reported by a +TCP_RR test, it implies the stack(s) over which the TCP_RR test is +running have a broken implementation of the Nagle Algorithm. Likely +as not they are interpreting Nagle on a segment by segment basis +rather than a user send by user send basis. You should contact your +stack vendor(s) to report the problem to them. + +

Here is an example of two systems running a basic TCP_RR test over a +10 Gigabit Ethernet link: + +

     netperf -t TCP_RR -H 192.168.2.125
+     TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET
+     Local /Remote
+     Socket Size   Request  Resp.   Elapsed  Trans.
+     Send   Recv   Size     Size    Time     Rate
+     bytes  Bytes  bytes    bytes   secs.    per sec
+
+     16384  87380  1        1       10.00    29150.15
+     16384  87380
+
+

In this example the request and response sizes were one byte, the +socket buffers were left at their defaults, and the test ran for all +of 10 seconds. The transaction per second rate was rather good for +the time :) + +

+ + +


+Next: , +Previous: TCP_RR, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ +

6.2.2 TCP_CC

+ +

+A TCP_CC (TCP Connect/Close) test is requested by passing a value of +“TCP_CC” to the global -t option. A TCP_CC test simply +measures how fast the pair of systems can open and close connections +between one another in a synchronous (one at a time) manner. While +this is considered an _RR test, no request or response is exchanged +over the connection. + +

The issue of TIME_WAIT reuse is an important one for a TCP_CC test. +Basically, TIME_WAIT reuse is when a pair of systems churn through +connections fast enough that they wrap the 16-bit port number space in +less time than the length of the TIME_WAIT state. While it is indeed +theoretically possible to “reuse” a connection in TIME_WAIT, the +conditions under which such reuse is possible are rather rare. An +attempt to reuse a connection in TIME_WAIT can result in a non-trivial +delay in connection establishment. + +

Basically, any time the connection churn rate approaches: + +

Sizeof(clientportspace) / Lengthof(TIME_WAIT) + +

there is the risk of TIME_WAIT reuse. To minimize the chances of this +happening, netperf will by default select its own client port numbers +from the range of 5000 to 65535. On systems with a 60 second +TIME_WAIT state, this should allow roughly 1000 transactions per +second. The size of the client port space used by netperf can be +controlled via the test-specific -p option, which takes a +sizespec as a value setting the minimum (first value) and +maximum (second value) port numbers used by netperf at the client end. + +

Since no requests or responses are exchanged during a TCP_CC test, +only the -H, -L, -4 and -6 of the +“common” test-specific options are likely to have an effect, if any, +on the results. The -s and -S options _may_ have +some effect if they alter the number and/or type of options carried in +the TCP SYNchronize segments, such as Window Scaling or Timestamps. +The -P and -r options are utterly ignored. + +

Since connection establishment and tear-down for TCP is not symmetric, +a TCP_CC test is not symmetric in its loading of the two systems under +test. + +

+ + +


+Next: , +Previous: TCP_CC, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ +

6.2.3 TCP_CRR

+ +

+The TCP Connect/Request/Response (TCP_CRR) test is requested by +passing a value of “TCP_CRR” to the global -t command-line +option. A TCP_CRR test is like a merger of a TCP_RR and +TCP_CC test which measures the performance of establishing a +connection, exchanging a single request/response transaction, and +tearing-down that connection. This is very much like what happens in +an HTTP 1.0 or HTTP 1.1 connection when HTTP Keepalives are not used. +In fact, the TCP_CRR test was added to netperf to simulate just that. + +

Since a request and response are exchanged the -r, +-s and -S options can have an effect on the +performance. + +

The issue of TIME_WAIT reuse exists for the TCP_CRR test just as it +does for the TCP_CC test. Similarly, since connection establishment +and tear-down is not symmetric, a TCP_CRR test is not symmetric even +when the request and response sizes are the same. + +

+ + +


+Next: , +Previous: TCP_CRR, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ +

6.2.4 UDP_RR

+ +

+A UDP Request/Response (UDP_RR) test is requested by passing a value +of “UDP_RR” to a global -t option. It is very much the +same as a TCP_RR test except UDP is used rather than TCP. + +

UDP does not provide for retransmission of lost UDP datagrams, and +netperf does not add anything for that either. This means that if +_any_ request or response is lost, the exchange of requests and +responses will stop from that point until the test timer expires. +Netperf will not really “know” this has happened - the only symptom +will be a low transaction per second rate. If --enable-burst +was included in the configure command and a test-specific +-b option used, the UDP_RR test will “survive” the loss of +requests and responses until the sum is one more than the value passed +via the -b option. It will though almost certainly run more +slowly. + +

The netperf side of a UDP_RR test will call connect() on its +data socket and thenceforth use the send() and recv() +socket calls. The netserver side of a UDP_RR test will not call +connect() and will use recvfrom() and sendto() +calls. This means that even if the request and response sizes are the +same, a UDP_RR test is _not_ symmetric in its loading of the two +systems under test. + +

Here is an example of a UDP_RR test between two otherwise +identical two-CPU systems joined via a 1 Gigabit Ethernet network: + +

     $ netperf -T 1 -H 192.168.1.213 -t UDP_RR -c -C
+     UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.213 (192.168.1.213) port 0 AF_INET
+     Local /Remote
+     Socket Size   Request Resp.  Elapsed Trans.   CPU    CPU    S.dem   S.dem
+     Send   Recv   Size    Size   Time    Rate     local  remote local   remote
+     bytes  bytes  bytes   bytes  secs.   per sec  % I    % I    us/Tr   us/Tr
+
+     65535  65535  1       1      10.01   15262.48   13.90  16.11  18.221  21.116
+     65535  65535
+
+

This example includes the -c and -C options to +enable CPU utilization reporting and shows the asymmetry in CPU +loading. The -T option was used to make sure netperf and +netserver ran on a given CPU and did not move around during the test. + +

+ + +


+Next: , +Previous: UDP_RR, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ +

6.2.5 XTI_TCP_RR

+ +

+An XTI_TCP_RR test is essentially the same as a TCP_RR test only +using the XTI rather than BSD Sockets interface. It is requested by +passing a value of “XTI_TCP_RR” to the -t global +command-line option. + +

The test-specific options for an XTI_TCP_RR test are the same as those +for a TCP_RR test with the addition of the -X <devspec> option to +specify the names of the local and/or remote XTI device file(s). + +

+ + +

6.2.6 XTI_TCP_CC

+ +

+An XTI_TCP_CC test is essentially the same as a TCP_CC +test, only using the XTI rather than BSD Sockets interface. + +

The test-specific options for an XTI_TCP_CC test are the same as those +for a TCP_CC test with the addition of the -X <devspec> option to +specify the names of the local and/or remote XTI device file(s). + +

+ + +

6.2.7 XTI_TCP_CRR

+ +

+The XTI_TCP_CRR test is essentially the same as a +TCP_CRR test, only using the XTI rather than BSD Sockets +interface. + +

The test-specific options for an XTI_TCP_CRR test are the same as those +for a TCP_RR test with the addition of the -X <devspec> option to +specify the names of the local and/or remote XTI device file(s). + +

+ +

6.2.8 XTI_UDP_RR

+ +

+An XTI_UDP_RR test is essentially the same as a UDP_RR test only using +the XTI rather than BSD Sockets interface. It is requested by passing +a value of “XTI_UDP_RR” to the -t global command-line +option. + +

The test-specific options for an XTI_UDP_RR test are the same as those +for a UDP_RR test with the addition of the -X <devspec> +option to specify the name of the local and/or remote XTI device +file(s). + +

+ + +


+Next: , +Previous: XTI_UDP_RR, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ + +

6.2.9 DLCL_RR

+ +

+

+ + +


+Next: , +Previous: DLCL_RR, +Up: Options Common to TCP UDP and SCTP _RR tests + +
+ + +

6.2.10 DLCO_RR

+ +

+

+ + +

6.2.11 SCTP_RR

+ +

+

+ + +

7 Using Netperf to Measure Aggregate Performance

+ +

+Ultimately, Netperf4 will be the preferred benchmark to +use when one wants to measure aggregate performance because netperf +has no support for explicit synchronization of concurrent tests. Until +netperf4 is ready for prime time, one can make use of the heuristics +and procedures mentioned here for the 85% solution. + +

There are a few ways to measure aggregate performance with netperf. +The first is to run multiple, concurrent netperf tests and can be +applied to any of the netperf tests. The second is to configure +netperf with --enable-burst and is applicable to the TCP_RR +test. The third is a variation on the first. + +

+ + + + +

7.1 Running Concurrent Netperf Tests

+ +

Netperf4 is the preferred benchmark to use when one +wants to measure aggregate performance because netperf has no support +for explicit synchronization of concurrent tests. This leaves +netperf2 results vulnerable to skew errors. + +

However, since there are times when netperf4 is unavailable it may be +necessary to run netperf. The skew error can be minimized by making +use of the confidence interval functionality. Then one simply +launches multiple tests from the shell using a for loop or the +like: + +

     for i in 1 2 3 4
+     do
+     netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 &
+     done
+
+

which will run four, concurrent TCP_STREAM tests from +the system on which it is executed to tardy.cup.hp.com. Each +concurrent netperf will iterate 10 times thanks to the -i +option and will omit the test banners (option -P) for +brevity. The output looks something like this: + +

      87380  16384  16384    10.03     235.15
+      87380  16384  16384    10.03     235.09
+      87380  16384  16384    10.03     235.38
+      87380  16384  16384    10.03     233.96
+
+

We can take the sum of the results and be reasonably confident that +the aggregate performance was 940 Mbits/s. This method does not need +to be limited to one system speaking to one other system. It can be +extended to one system talking to N other systems. It could be as simple as: +

     for host in 'foo bar baz bing'
+     do
+     netperf -t TCP_STREAM -H $hosts -i 10 -P 0 &
+     done
+
+

A more complicated/sophisticated example can be found in +doc/examples/runemomniagg2.sh where. + +

If you see warnings about netperf not achieving the confidence +intervals, the best thing to do is to increase the number of +iterations with -i and/or increase the run length of each +iteration with -l. + +

You can also enable local (-c) and/or remote (-C) +CPU utilization: + +

     for i in 1 2 3 4
+     do
+     netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 -c -C &
+     done
+
+     87380  16384  16384    10.03       235.47   3.67     5.09     10.226  14.180
+     87380  16384  16384    10.03       234.73   3.67     5.09     10.260  14.225
+     87380  16384  16384    10.03       234.64   3.67     5.10     10.263  14.231
+     87380  16384  16384    10.03       234.87   3.67     5.09     10.253  14.215
+
+

If the CPU utilizations reported for the same system are the same or +very very close you can be reasonably confident that skew error is +minimized. Presumably one could then omit -i but that is +not advised, particularly when/if the CPU utilization approaches 100 +percent. In the example above we see that the CPU utilization on the +local system remains the same for all four tests, and is only off by +0.01 out of 5.09 on the remote system. As the number of CPUs in the +system increases, and so too the odds of saturating a single CPU, the +accuracy of similar CPU utilization implying little skew error is +diminished. This is also the case for those increasingly rare single +CPU systems if the utilization is reported as 100% or very close to +it. + +

+NOTE: It is very important to remember that netperf is calculating +system-wide CPU utilization. When calculating the service demand +(those last two columns in the output above) each netperf assumes it +is the only thing running on the system. This means that for +concurrent tests the service demands reported by netperf will be +wrong. One has to compute service demands for concurrent tests by +hand. +
+ +

If you wish you can add a unique, global -B option to each +command line to append the given string to the output: + +

     for i in 1 2 3 4
+     do
+     netperf -t TCP_STREAM -H tardy.cup.hp.com -B "this is test $i" -i 10 -P 0 &
+     done
+
+     87380  16384  16384    10.03     234.90   this is test 4
+     87380  16384  16384    10.03     234.41   this is test 2
+     87380  16384  16384    10.03     235.26   this is test 1
+     87380  16384  16384    10.03     235.09   this is test 3
+
+

You will notice that the tests completed in an order other than they +were started from the shell. This underscores why there is a threat +of skew error and why netperf4 will eventually be the preferred tool +for aggregate tests. Even if you see the Netperf Contributing Editor +acting to the contrary!-) + +

+ + + +

7.1.1 Issues in Running Concurrent Tests

+ +

In addition to the aforementioned issue of skew error, there can be +other issues to consider when running concurrent netperf tests. + +

For example, when running concurrent tests over multiple interfaces, +one is not always assured that the traffic one thinks went over a +given interface actually did so. In particular, the Linux networking +stack takes a particularly strong stance on its following the so +called ‘weak end system model’. As such, it is willing to answer +ARP requests for any of its local IP addresses on any of its +interfaces. If multiple interfaces are connected to the same +broadcast domain, then even if they are configured into separate IP +subnets there is no a priori way of knowing which interface was +actually used for which connection(s). This can be addressed by +setting the ‘arp_ignore’ sysctl before configuring interfaces. + +

As it is quite important, we will repeat that it is very important to +remember that each concurrent netperf instance is calculating +system-wide CPU utilization. When calculating the service demand each +netperf assumes it is the only thing running on the system. This +means that for concurrent tests the service demands reported by +netperf will be wrong. One has to compute service demands for +concurrent tests by hand + +

Running concurrent tests can also become difficult when there is no +one “central” node. Running tests between pairs of systems may be +more difficult, calling for remote shell commands in the for loop +rather than netperf commands. This introduces more skew error, which +the confidence intervals may not be able to sufficiently mitigate. +One possibility is to actually run three consecutive netperf tests on +each node - the first being a warm-up, the last being a cool-down. +The idea then is to ensure that the time it takes to get all the +netperfs started is less than the length of the first netperf command +in the sequence of three. Similarly, it assumes that all “middle” +netperfs will complete before the first of the “last” netperfs +complete. + +

+ + +

7.2 Using - -enable-burst

+ +

Starting in version 2.5.0 --enable-burst=yes is the default, +which means one no longer must: + +

     configure --enable-burst
+
+

To have burst-mode functionality present in netperf. This enables a +test-specific -b num option in TCP_RR, +UDP_RR and omni tests. + +

Normally, netperf will attempt to ramp-up the number of outstanding +requests to num plus one transactions in flight at one time. +The ramp-up is to avoid transactions being smashed together into a +smaller number of segments when the transport's congestion window (if +any) is smaller at the time than what netperf wants to have +outstanding at one time. If, however, the user specifies a negative +value for num this ramp-up is bypassed and the burst of sends +is made without consideration of transport congestion window. + +

This burst-mode is used as an alternative to or even in conjunction +with multiple-concurrent _RR tests and as a way to implement a +single-connection, bidirectional bulk-transfer test. When run with +just a single instance of netperf, increasing the burst size can +determine the maximum number of transactions per second which can be +serviced by a single process: + +

     for b in 0 1 2 4 8 16 32
+     do
+      netperf -v 0 -t TCP_RR -B "-b $b" -H hpcpc108 -P 0 -- -b $b
+     done
+
+     9457.59 -b 0
+     9975.37 -b 1
+     10000.61 -b 2
+     20084.47 -b 4
+     29965.31 -b 8
+     71929.27 -b 16
+     109718.17 -b 32
+
+

The global -v and -P options were used to minimize +the output to the single figure of merit which in this case the +transaction rate. The global -B option was used to more +clearly label the output, and the test-specific -b option +enabled by --enable-burst increase the number of transactions +in flight at one time. + +

Now, since the test-specific -D option was not specified to +set TCP_NODELAY, the stack was free to “bundle” requests and/or +responses into TCP segments as it saw fit, and since the default +request and response size is one byte, there could have been some +considerable bundling even in the absence of transport congestion +window issues. If one wants to try to achieve a closer to +one-to-one correspondence between a request and response and a TCP +segment, add the test-specific -D option: + +

     for b in 0 1 2 4 8 16 32
+     do
+      netperf -v 0 -t TCP_RR -B "-b $b -D" -H hpcpc108 -P 0 -- -b $b -D
+     done
+
+      8695.12 -b 0 -D
+      19966.48 -b 1 -D
+      20691.07 -b 2 -D
+      49893.58 -b 4 -D
+      62057.31 -b 8 -D
+      108416.88 -b 16 -D
+      114411.66 -b 32 -D
+
+

You can see that this has a rather large effect on the reported +transaction rate. In this particular instance, the author believes it +relates to interactions between the test and interrupt coalescing +settings in the driver for the NICs used. + +

+NOTE: Even if you set the -D option that is still not a +guarantee that each transaction is in its own TCP segments. You +should get into the habit of verifying the relationship between the +transaction rate and the packet rate via other means. +
+ +

You can also combine --enable-burst functionality with +concurrent netperf tests. This would then be an “aggregate of +aggregates” if you like: + +

+     for i in 1 2 3 4
+     do
+      netperf -H hpcpc108 -v 0 -P 0 -i 10 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D &
+     done
+
+      46668.38 aggregate 4 -b 8 -D
+      44890.64 aggregate 2 -b 8 -D
+      45702.04 aggregate 1 -b 8 -D
+      46352.48 aggregate 3 -b 8 -D
+
+
+

Since each netperf did hit the confidence intervals, we can be +reasonably certain that the aggregate transaction per second rate was +the sum of all four concurrent tests, or something just shy of 184,000 +transactions per second. To get some idea if that was also the packet +per second rate, we could bracket that for loop with something +to gather statistics and run the results through +beforeafter: + +

     /usr/sbin/ethtool -S eth2 > before
+     for i in 1 2 3 4
+     do
+      netperf -H 192.168.2.108 -l 60 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D &
+     done
+     wait
+     /usr/sbin/ethtool -S eth2 > after
+
+      52312.62 aggregate 2 -b 8 -D
+      50105.65 aggregate 4 -b 8 -D
+      50890.82 aggregate 1 -b 8 -D
+      50869.20 aggregate 3 -b 8 -D
+
+     beforeafter before after > delta
+
+     grep packets delta
+          rx_packets: 12251544
+          tx_packets: 12251550
+
+
+

This example uses ethtool because the system being used is +running Linux. Other platforms have other tools - for example HP-UX +has lanadmin: + +

     lanadmin -g mibstats <ppa>
+
+

and of course one could instead use netstat. + +

The wait is important because we are launching concurrent +netperfs in the background. Without it, the second ethtool command +would be run before the tests finished and perhaps even before the +last of them got started! + +

The sum of the reported transaction rates is 204178 over 60 seconds, +which is a total of 12250680 transactions. Each transaction is the +exchange of a request and a response, so we multiply that by 2 to +arrive at 24501360. + +

The sum of the ethtool stats is 24503094 packets which matches what +netperf was reporting very well. + +

Had the request or response size differed, we would need to know how +it compared with the MSS for the connection. + +

Just for grins, here is the exercise repeated, using netstat +instead of ethtool + +

     netstat -s -t > before
+     for i in 1 2 3 4
+     do
+      netperf -l 60 -H 192.168.2.108 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & done
+     wait
+     netstat -s -t > after
+
+      51305.88 aggregate 4 -b 8 -D
+      51847.73 aggregate 2 -b 8 -D
+      50648.19 aggregate 3 -b 8 -D
+      53605.86 aggregate 1 -b 8 -D
+
+     beforeafter before after > delta
+
+     grep segments delta
+         12445708 segments received
+         12445730 segments send out
+         1 segments retransmited
+         0 bad segments received.
+
+

The sums are left as an exercise to the reader :) + +

Things become considerably more complicated if there are non-trvial +packet losses and/or retransmissions. + +

Of course all this checking is unnecessary if the test is a UDP_RR +test because UDP “never” aggregates multiple sends into the same UDP +datagram, and there are no ACKnowledgements in UDP. The loss of a +single request or response will not bring a “burst” UDP_RR test to a +screeching halt, but it will reduce the number of transactions +outstanding at any one time. A “burst” UDP_RR test will come to a +halt if the sum of the lost requests and responses reaches the value +specified in the test-specific -b option. + +

+ +

7.3 Using - -enable-demo

+ +

One can +

     configure --enable-demo
+
+

and compile netperf to enable netperf to emit “interim results” at +semi-regular intervals. This enables a global -D option which +takes a reporting interval as an argument. With that specified, the +output of netperf will then look something like + +

     $ src/netperf -D 1.25
+     MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain () port 0 AF_INET : demo
+     Interim result: 25425.52 10^6bits/s over 1.25 seconds ending at 1327962078.405
+     Interim result: 25486.82 10^6bits/s over 1.25 seconds ending at 1327962079.655
+     Interim result: 25474.96 10^6bits/s over 1.25 seconds ending at 1327962080.905
+     Interim result: 25523.49 10^6bits/s over 1.25 seconds ending at 1327962082.155
+     Interim result: 25053.57 10^6bits/s over 1.27 seconds ending at 1327962083.429
+     Interim result: 25349.64 10^6bits/s over 1.25 seconds ending at 1327962084.679
+     Interim result: 25292.84 10^6bits/s over 1.25 seconds ending at 1327962085.932
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+      87380  16384  16384    10.00    25375.66
+
+

The units of the “Interim result” lines will follow the units +selected via the global -f option. If the test-specific +-o option is specified on the command line, the format will be +CSV: +

     ...
+     2978.81,MBytes/s,1.25,1327962298.035
+     ...
+
+

If the test-specific -k option is used the format will be +keyval with each keyval being given an index: +

     ...
+     NETPERF_INTERIM_RESULT[2]=25.00
+     NETPERF_UNITS[2]=10^9bits/s
+     NETPERF_INTERVAL[2]=1.25
+     NETPERF_ENDING[2]=1327962357.249
+     ...
+
+

The expectation is it may be easier to utilize the keyvals if they +have indices. + +

But how does this help with aggregate tests? Well, what one can do is +start the netperfs via a script, giving each a Very Long (tm) run +time. Direct the output to a file per instance. Then, once all the +netperfs have been started, take a timestamp and wait for some desired +test interval. Once that interval expires take another timestamp and +then start terminating the netperfs by sending them a SIGALRM signal +via the likes of the kill or pkill command. The +netperfs will terminate and emit the rest of the “usual” output, and +you can then bring the files to a central location for post +processing to find the aggregate performance over the “test interval.” + +

This method has the advantage that it does not require advance +knowledge of how long it takes to get netperf tests started and/or +stopped. It does though require sufficiently synchronized clocks on +all the test systems. + +

While calls to get the current time can be inexpensive, that neither +has been nor is universally true. For that reason netperf tries to +minimize the number of such “timestamping” calls (eg +gettimeofday) calls it makes when in demo mode. Rather than +take a timestamp after each send or recv call completes +netperf tries to guess how many units of work will be performed over +the desired interval. Only once that many units of work have been +completed will netperf check the time. If the reporting interval has +passed, netperf will emit an “interim result.” If the interval has +not passed, netperf will update its estimate for units and continue. + +

After a bit of thought one can see that if things “speed-up” netperf +will still honor the interval. However, if things “slow-down” +netperf may be late with an “interim result.” Here is an example of +both of those happening during a test - with the interval being +honored while throughput increases, and then about half-way through +when another netperf (not shown) is started we see things slowing down +and netperf not hitting the interval as desired. +

     $ src/netperf -D 2 -H tardy.hpl.hp.com -l 20
+     MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com () port 0 AF_INET : demo
+     Interim result:   36.46 10^6bits/s over 2.01 seconds ending at 1327963880.565
+     Interim result:   59.19 10^6bits/s over 2.00 seconds ending at 1327963882.569
+     Interim result:   73.39 10^6bits/s over 2.01 seconds ending at 1327963884.576
+     Interim result:   84.01 10^6bits/s over 2.03 seconds ending at 1327963886.603
+     Interim result:   75.63 10^6bits/s over 2.21 seconds ending at 1327963888.814
+     Interim result:   55.52 10^6bits/s over 2.72 seconds ending at 1327963891.538
+     Interim result:   70.94 10^6bits/s over 2.11 seconds ending at 1327963893.650
+     Interim result:   80.66 10^6bits/s over 2.13 seconds ending at 1327963895.777
+     Interim result:   86.42 10^6bits/s over 2.12 seconds ending at 1327963897.901
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+      87380  16384  16384    20.34      68.87
+
+

So long as your post-processing mechanism can account for that, there +should be no problem. As time passes there may be changes to try to +improve the netperf's honoring the interval but one should not +ass-u-me it will always do so. One should not assume the precision +will remain fixed - future versions may change it - perhaps going +beyond tenths of seconds in reporting the interval length etc. + +

+ + +

8 Using Netperf to Measure Bidirectional Transfer

+ +

There are two ways to use netperf to measure the performance of +bidirectional transfer. The first is to run concurrent netperf tests +from the command line. The second is to configure netperf with +--enable-burst and use a single instance of the +TCP_RR test. + +

While neither method is more “correct” than the other, each is doing +so in different ways, and that has possible implications. For +instance, using the concurrent netperf test mechanism means that +multiple TCP connections and multiple processes are involved, whereas +using the single instance of TCP_RR there is only one TCP connection +and one process on each end. They may behave differently, especially +on an MP system. + +

+ + + + +

8.1 Bidirectional Transfer with Concurrent Tests

+ +

If we had two hosts Fred and Ethel, we could simply run a netperf +TCP_STREAM test on Fred pointing at Ethel, and a +concurrent netperf TCP_STREAM test on Ethel pointing at Fred, but +since there are no mechanisms to synchronize netperf tests and we +would be starting tests from two different systems, there is a +considerable risk of skew error. + +

Far better would be to run simultaneous TCP_STREAM and +TCP_MAERTS tests from just one system, using the +concepts and procedures outlined in Running Concurrent Netperf Tests. Here then is an example: + +

     for i in 1
+     do
+      netperf -H 192.168.2.108 -t TCP_STREAM -B "outbound" -i 10 -P 0 -v 0 \
+        -- -s 256K -S 256K &
+      netperf -H 192.168.2.108 -t TCP_MAERTS -B "inbound"  -i 10 -P 0 -v 0 \
+        -- -s 256K -S 256K &
+     done
+
+      892.66 outbound
+      891.34 inbound
+
+

We have used a for loop in the shell with just one iteration +because that will be much easier to get both tests started at more or +less the same time than doing it by hand. The global -P and +-v options are used because we aren't interested in anything +other than the throughput, and the global -B option is used +to tag each output so we know which was inbound and which outbound +relative to the system on which we were running netperf. Of course +that sense is switched on the system running netserver :) The use of +the global -i option is explained in Running Concurrent Netperf Tests. + +

Beginning with version 2.5.0 we can accomplish a similar result with +the the omni tests and output selectors: + +

     for i in 1
+     do
+       netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \
+         -d stream -s 256K -S 256K -o throughput,direction &
+       netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \
+         -d maerts -s 256K -S 256K -o throughput,direction &
+     done
+
+     805.26,Receive
+     828.54,Send
+
+ + + +

8.2 Bidirectional Transfer with TCP_RR

+ +

Starting with version 2.5.0 the --enable-burst configure option +defaults to yes, and starting some time before version 2.5.0 +but after 2.4.0 the global -f option would affect the +“throughput” reported by request/response tests. If one uses the +test-specific -b option to have several “transactions” in +flight at one time and the test-specific -r option to +increase their size, the test looks more and more like a +single-connection bidirectional transfer than a simple +request/response test. + +

So, putting it all together one can do something like: + +

     netperf -f m -t TCP_RR -H 192.168.1.3 -v 2 -- -b 6 -r 32K -S 256K -S 256K
+     MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.3 (192.168.1.3) port 0 AF_INET : interval : first burst 6
+     Local /Remote
+     Socket Size   Request  Resp.   Elapsed
+     Send   Recv   Size     Size    Time     Throughput
+     bytes  Bytes  bytes    bytes   secs.    10^6bits/sec
+
+     16384  87380  32768    32768   10.00    1821.30
+     524288 524288
+     Alignment      Offset         RoundTrip  Trans    Throughput
+     Local  Remote  Local  Remote  Latency    Rate     10^6bits/s
+     Send   Recv    Send   Recv    usec/Tran  per sec  Outbound   Inbound
+         8      0       0      0   2015.402   3473.252 910.492    910.492
+
+

to get a bidirectional bulk-throughput result. As one can see, the -v +2 output will include a number of interesting, related values. + +

+NOTE: The logic behind --enable-burst is very simple, and there +are no calls to poll() or select() which means we want +to make sure that the send() calls will never block, or we run +the risk of deadlock with each side stuck trying to call send() +and neither calling recv(). +
+ +

Fortunately, this is easily accomplished by setting a “large enough” +socket buffer size with the test-specific -s and -S +options. Presently this must be performed by the user. Future +versions of netperf might attempt to do this automagically, but there +are some issues to be worked-out. + +

+ +

8.3 Implications of Concurrent Tests vs Burst Request/Response

+ +

There are perhaps subtle but important differences between using +concurrent unidirectional tests vs a burst-mode request to measure +bidirectional performance. + +

Broadly speaking, a single “connection” or “flow” of traffic +cannot make use of the services of more than one or two CPUs at either +end. Whether one or two CPUs will be used processing a flow will +depend on the specifics of the stack(s) involved and whether or not +the global -T option has been used to bind netperf/netserver +to specific CPUs. + +

When using concurrent tests there will be two concurrent connections +or flows, which means that upwards of four CPUs will be employed +processing the packets (global -T used, no more than two if +not), however, with just a single, bidirectional request/response test +no more than two CPUs will be employed (only one if the global +-T is not used). + +

If there is a CPU bottleneck on either system this may result in +rather different results between the two methods. + +

Also, with a bidirectional request/response test there is something of +a natural balance or synchronization between inbound and outbound - a +response will not be sent until a request is received, and (once the +burst level is reached) a subsequent request will not be sent until a +response is received. This may mask favoritism in the NIC between +inbound and outbound processing. + +

With two concurrent unidirectional tests there is no such +synchronization or balance and any favoritism in the NIC may be exposed. + +

+ +

9 The Omni Tests

+ +

Beginning with version 2.5.0, netperf begins a migration to the +‘omni’ tests or “Two routines to measure them all.” The code for +the omni tests can be found in src/nettest_omni.c and the goal +is to make it easier for netperf to support multiple protocols and +report a great many additional things about the systems under test. +Additionally, a flexible output selection mechanism is present which +allows the user to chose specifically what values she wishes to have +reported and in what format. + +

The omni tests are included by default in version 2.5.0. To disable +them, one must: +

     ./configure --enable-omni=no ...
+
+

and remake netperf. Remaking netserver is optional because even in +2.5.0 it has “unmigrated” netserver side routines for the classic +(eg src/nettest_bsd.c) tests. + +

+ +
+ +


+Next: , +Previous: The Omni Tests, +Up: The Omni Tests + +
+ +

9.1 Native Omni Tests

+ +

One access the omni tests “natively” by using a value of “OMNI” +with the global -t test-selection option. This will then +cause netperf to use the code in src/nettest_omni.c and in +particular the test-specific options parser for the omni tests. The +test-specific options for the omni tests are a superset of those for +“classic” tests. The options added by the omni tests are: + + + +

-c
This explicitly declares that the test is to include connection +establishment and tear-down as in either a TCP_CRR or TCP_CC test. + +


-d <direction>
This option sets the direction of the test relative to the netperf +process. As of version 2.5.0 one can use the following in a +case-insensitive manner: + +
+
send, stream, transmit, xmit or 2
Any of which will cause netperf to send to the netserver. +
recv, receive, maerts or 4
Any of which will cause netserver to send to netperf. +
rr or 6
Either of which will cause a request/response test. +
+ +

Additionally, one can specify two directions separated by a '|' +character and they will be OR'ed together. In this way one can use +the ”Send|Recv” that will be emitted by the DIRECTION output selector when +used with a request/response test. + +


-k [output selector]
This option sets the style of output to “keyval” where each line of +output has the form: +
          key=value
+
+

For example: +

          $ netperf -t omni -- -d rr -k "THROUGHPUT,THROUGHPUT_UNITS"
+          OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+          THROUGHPUT=59092.65
+          THROUGHPUT_UNITS=Trans/s
+
+

Using the -k option will override any previous, test-specific +-o or -O option. + +


-o [output selector]
This option sets the style of output to “CSV” where there will be +one line of comma-separated values, preceded by one line of column +names unless the global -P option is used with a value of 0: +
          $ netperf -t omni -- -d rr -o "THROUGHPUT,THROUGHPUT_UNITS"
+          OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+          Throughput,Throughput Units
+          60999.07,Trans/s
+
+

Using the -o option will override any previous, test-specific +-k or -O option. + +


-O [output selector]
This option sets the style of output to “human readable” which will +look quite similar to classic netperf output: +
          $ netperf -t omni -- -d rr -O "THROUGHPUT,THROUGHPUT_UNITS"
+          OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+          Throughput Throughput
+                     Units
+
+
+          60492.57   Trans/s
+
+

Using the -O option will override any previous, test-specific +-k or -o option. + +


-t
This option explicitly sets the socket type for the test's data +connection. As of version 2.5.0 the known socket types include +“stream” and “dgram” for SOCK_STREAM and SOCK_DGRAM respectively. + +


-T <protocol>
This option is used to explicitly set the protocol used for the +test. It is case-insensitive. As of version 2.5.0 the protocols known +to netperf include: +
+
TCP
Select the Transmission Control Protocol +
UDP
Select the User Datagram Protocol +
SDP
Select the Sockets Direct Protocol +
DCCP
Select the Datagram Congestion Control Protocol +
SCTP
Select the Stream Control Transport Protocol +
udplite
Select UDP Lite +
+ +

The default is implicit based on other settings. +

+ +

The omni tests also extend the interpretation of some of the classic, +test-specific options for the BSD Sockets tests: + +

+
-m <optionspec>
This can set the send size for either or both of the netperf and +netserver sides of the test: +
          -m 32K
+
+

sets only the netperf-side send size to 32768 bytes, and or's-in +transmit for the direction. This is effectively the same behaviour as +for the classic tests. +

          -m ,32K
+
+

sets only the netserver side send size to 32768 bytes and or's-in +receive for the direction. +

          -m 16K,32K
+          sets the netperf side send size to 16284 bytes, the netserver side
+          send size to 32768 bytes and the direction will be "Send|Recv."
+
+
-M <optionspec>
This can set the receive size for either or both of the netperf and +netserver sides of the test: +
          -M 32K
+
+

sets only the netserver side receive size to 32768 bytes and or's-in +send for the test direction. +

          -M ,32K
+
+

sets only the netperf side receive size to 32768 bytes and or's-in +receive for the test direction. +

          -M 16K,32K
+
+

sets the netserver side receive size to 16384 bytes and the netperf +side receive size to 32768 bytes and the direction will be "Send|Recv." +

+ +
+ +


+Next: , +Previous: Native Omni Tests, +Up: The Omni Tests + +
+ +

9.2 Migrated Tests

+ +

As of version 2.5.0 several tests have been migrated to use the omni +code in src/nettest_omni.c for the core of their testing. A +migrated test retains all its previous output code and so should still +“look and feel” just like a pre-2.5.0 test with one exception - the +first line of the test banners will include the word “MIGRATED” at +the beginning as in: + +

     $ netperf
+     MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+     Recv   Send    Send
+     Socket Socket  Message  Elapsed
+     Size   Size    Size     Time     Throughput
+     bytes  bytes   bytes    secs.    10^6bits/sec
+
+      87380  16384  16384    10.00    27175.27
+
+

The tests migrated in version 2.5.0 are: +

    +
  • TCP_STREAM +
  • TCP_MAERTS +
  • TCP_RR +
  • TCP_CRR +
  • UDP_STREAM +
  • UDP_RR +
+ +

It is expected that future releases will have additional tests +migrated to use the “omni” functionality. + +

If one uses “omni-specific” test-specific options in conjunction +with a migrated test, instead of using the classic output code, the +new omni output code will be used. For example if one uses the +-k test-specific option with a value of +“MIN_LATENCY,MAX_LATENCY” with a migrated TCP_RR test one will see: + +

     $ netperf -t tcp_rr -- -k THROUGHPUT,THROUGHPUT_UNITS
+     MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+     THROUGHPUT=60074.74
+     THROUGHPUT_UNITS=Trans/s
+
+

rather than: +

     $ netperf -t tcp_rr
+     MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo
+     Local /Remote
+     Socket Size   Request  Resp.   Elapsed  Trans.
+     Send   Recv   Size     Size    Time     Rate
+     bytes  Bytes  bytes    bytes   secs.    per sec
+
+     16384  87380  1        1       10.00    59421.52
+     16384  87380
+
+
+ +


+Previous: Migrated Tests, +Up: The Omni Tests + +
+ +

9.3 Omni Output Selection

+ +

The omni test-specific -k, -o and -O +options take an optional output selector by which the user can +configure what values are reported. The output selector can take +several forms: + +

+
filename
The output selections will be read from the named file. Within the +file there can be up to four lines of comma-separated output +selectors. This controls how many multi-line blocks of output are emitted +when the -O option is used. This output, while not identical to +“classic” netperf output, is inspired by it. Multiple lines have no +effect for -k and -o options. Putting output +selections in a file can be useful when the list of selections is long. +
comma and/or semi-colon-separated list
The output selections will be parsed from a comma and/or +semi-colon-separated list of output selectors. When the list is given +to a -O option a semi-colon specifies a new output block +should be started. Semi-colons have the same meaning as commas when +used with the -k or -o options. Depending on the +command interpreter being used, the semi-colon may have to be escaped +somehow to keep it from being interpreted by the command interpreter. +This can often be done by enclosing the entire list in quotes. +
all
If the keyword all is specified it means that all known output +values should be displayed at the end of the test. This can be a +great deal of output. As of version 2.5.0 there are 157 different +output selectors. +
?
If a “?” is given as the output selection, the list of all known +output selectors will be displayed and no test actually run. When +passed to the -O option they will be listed one per +line. Otherwise they will be listed as a comma-separated list. It may +be necessary to protect the “?” from the command interpreter by +escaping it or enclosing it in quotes. +
no selector
If nothing is given to the -k, -o or -O +option then the code selects a default set of output selectors +inspired by classic netperf output. The format will be the ‘human +readable’ format emitted by the test-specific -O option. +
+ +

The order of evaluation will first check for an output selection. If +none is specified with the -k, -o or -O +option netperf will select a default based on the characteristics of the +test. If there is an output selection, the code will first check for +‘?’, then check to see if it is the magic ‘all’ keyword. +After that it will check for either ‘,’ or ‘;’ in the +selection and take that to mean it is a comma and/or +semi-colon-separated list. If none of those checks match, netperf will then +assume the output specification is a filename and attempt to open and +parse the file. + +

+ +
+ +


+Previous: Omni Output Selection, +Up: Omni Output Selection + +
+ +

9.3.1 Omni Output Selectors

+ +

As of version 2.5.0 the output selectors are: + +

+
OUTPUT_NONE
This is essentially a null output. For -k output it will +simply add a line that reads “OUTPUT_NONE=” to the output. For +-o it will cause an empty “column” to be included. For +-O output it will cause extra spaces to separate “real” output. +
SOCKET_TYPE
This will cause the socket type (eg SOCK_STREAM, SOCK_DGRAM) for the +data connection to be output. +
PROTOCOL
This will cause the protocol used for the data connection to be displayed. +
DIRECTION
This will display the data flow direction relative to the netperf +process. Units: Send or Recv for a unidirectional bulk-transfer test, +or Send|Recv for a request/response test. +
ELAPSED_TIME
This will display the elapsed time in seconds for the test. +
THROUGHPUT
This will display the throughput for the test. Units: As requested via +the global -f option and displayed by the THROUGHPUT_UNITS +output selector. +
THROUGHPUT_UNITS
This will display the units for what is displayed by the +THROUGHPUT output selector. +
LSS_SIZE_REQ
This will display the local (netperf) send socket buffer size (aka +SO_SNDBUF) requested via the command line. Units: Bytes. +
LSS_SIZE
This will display the local (netperf) send socket buffer size +(SO_SNDBUF) immediately after the data connection socket was created. +Peculiarities of different networking stacks may lead to this +differing from the size requested via the command line. Units: Bytes. +
LSS_SIZE_END
This will display the local (netperf) send socket buffer size +(SO_SNDBUF) immediately before the data connection socket is closed. +Peculiarities of different networking stacks may lead this to differ +from the size requested via the command line and/or the size +immediately after the data connection socket was created. Units: Bytes. +
LSR_SIZE_REQ
This will display the local (netperf) receive socket buffer size (aka +SO_RCVBUF) requested via the command line. Units: Bytes. +
LSR_SIZE
This will display the local (netperf) receive socket buffer size +(SO_RCVBUF) immediately after the data connection socket was created. +Peculiarities of different networking stacks may lead to this +differing from the size requested via the command line. Units: Bytes. +
LSR_SIZE_END
This will display the local (netperf) receive socket buffer size +(SO_RCVBUF) immediately before the data connection socket is closed. +Peculiarities of different networking stacks may lead this to differ +from the size requested via the command line and/or the size +immediately after the data connection socket was created. Units: Bytes. +
RSS_SIZE_REQ
This will display the remote (netserver) send socket buffer size (aka +SO_SNDBUF) requested via the command line. Units: Bytes. +
RSS_SIZE
This will display the remote (netserver) send socket buffer size +(SO_SNDBUF) immediately after the data connection socket was created. +Peculiarities of different networking stacks may lead to this +differing from the size requested via the command line. Units: Bytes. +
RSS_SIZE_END
This will display the remote (netserver) send socket buffer size +(SO_SNDBUF) immediately before the data connection socket is closed. +Peculiarities of different networking stacks may lead this to differ +from the size requested via the command line and/or the size +immediately after the data connection socket was created. Units: Bytes. +
RSR_SIZE_REQ
This will display the remote (netserver) receive socket buffer size (aka +SO_RCVBUF) requested via the command line. Units: Bytes. +
RSR_SIZE
This will display the remote (netserver) receive socket buffer size +(SO_RCVBUF) immediately after the data connection socket was created. +Peculiarities of different networking stacks may lead to this +differing from the size requested via the command line. Units: Bytes. +
RSR_SIZE_END
This will display the remote (netserver) receive socket buffer size +(SO_RCVBUF) immediately before the data connection socket is closed. +Peculiarities of different networking stacks may lead this to differ +from the size requested via the command line and/or the size +immediately after the data connection socket was created. Units: Bytes. +
LOCAL_SEND_SIZE
This will display the size of the buffers netperf passed in any +“send” calls it made on the data connection for a +non-request/response test. Units: Bytes. +
LOCAL_RECV_SIZE
This will display the size of the buffers netperf passed in any +“receive” calls it made on the data connection for a +non-request/response test. Units: Bytes. +
REMOTE_SEND_SIZE
This will display the size of the buffers netserver passed in any +“send” calls it made on the data connection for a +non-request/response test. Units: Bytes. +
REMOTE_RECV_SIZE
This will display the size of the buffers netserver passed in any +“receive” calls it made on the data connection for a +non-request/response test. Units: Bytes. +
REQUEST_SIZE
This will display the size of the requests netperf sent in a +request-response test. Units: Bytes. +
RESPONSE_SIZE
This will display the size of the responses netserver sent in a +request-response test. Units: Bytes. +
LOCAL_CPU_UTIL
This will display the overall CPU utilization during the test as +measured by netperf. Units: 0 to 100 percent. +
LOCAL_CPU_PERCENT_USER
This will display the CPU fraction spent in user mode during the test +as measured by netperf. Only supported by netcpu_procstat. Units: 0 to +100 percent. +
LOCAL_CPU_PERCENT_SYSTEM
This will display the CPU fraction spent in system mode during the test +as measured by netperf. Only supported by netcpu_procstat. Units: 0 to +100 percent. +
LOCAL_CPU_PERCENT_IOWAIT
This will display the fraction of time waiting for I/O to complete +during the test as measured by netperf. Only supported by +netcpu_procstat. Units: 0 to 100 percent. +
LOCAL_CPU_PERCENT_IRQ
This will display the fraction of time servicing interrupts during the +test as measured by netperf. Only supported by netcpu_procstat. Units: +0 to 100 percent. +
LOCAL_CPU_PERCENT_SWINTR
This will display the fraction of time servicing softirqs during the +test as measured by netperf. Only supported by netcpu_procstat. Units: +0 to 100 percent. +
LOCAL_CPU_METHOD
This will display the method used by netperf to measure CPU +utilization. Units: single character denoting method. +
LOCAL_SD
This will display the service demand, or units of CPU consumed per +unit of work, as measured by netperf. Units: microseconds of CPU +consumed per either KB (K==1024) of data transferred or request/response +transaction. +
REMOTE_CPU_UTIL
This will display the overall CPU utilization during the test as +measured by netserver. Units 0 to 100 percent. +
REMOTE_CPU_PERCENT_USER
This will display the CPU fraction spent in user mode during the test +as measured by netserver. Only supported by netcpu_procstat. Units: 0 to +100 percent. +
REMOTE_CPU_PERCENT_SYSTEM
This will display the CPU fraction spent in system mode during the test +as measured by netserver. Only supported by netcpu_procstat. Units: 0 to +100 percent. +
REMOTE_CPU_PERCENT_IOWAIT
This will display the fraction of time waiting for I/O to complete +during the test as measured by netserver. Only supported by +netcpu_procstat. Units: 0 to 100 percent. +
REMOTE_CPU_PERCENT_IRQ
This will display the fraction of time servicing interrupts during the +test as measured by netserver. Only supported by netcpu_procstat. Units: +0 to 100 percent. +
REMOTE_CPU_PERCENT_SWINTR
This will display the fraction of time servicing softirqs during the +test as measured by netserver. Only supported by netcpu_procstat. Units: +0 to 100 percent. +
REMOTE_CPU_METHOD
This will display the method used by netserver to measure CPU +utilization. Units: single character denoting method. +
REMOTE_SD
This will display the service demand, or units of CPU consumed per +unit of work, as measured by netserver. Units: microseconds of CPU +consumed per either KB (K==1024) of data transferred or +request/response transaction. +
SD_UNITS
This will display the units for LOCAL_SD and REMOTE_SD +
CONFIDENCE_LEVEL
This will display the confidence level requested by the user either +explicitly via the global -I option, or implicitly via the +global -i option. The value will be either 95 or 99 if +confidence intervals have been requested or 0 if they were not. Units: +Percent +
CONFIDENCE_INTERVAL
This will display the width of the confidence interval requested +either explicitly via the global -I option or implicitly via +the global -i option. Units: Width in percent of mean value +computed. A value of -1.0 means that confidence intervals were not requested. +
CONFIDENCE_ITERATION
This will display the number of test iterations netperf undertook, +perhaps while attempting to achieve the requested confidence interval +and level. If confidence intervals were requested via the command line +then the value will be between 3 and 30. If confidence intervals were +not requested the value will be 1. Units: Iterations +
THROUGHPUT_CONFID
This will display the width of the confidence interval actually +achieved for THROUGHPUT during the test. Units: Width of +interval as percentage of reported throughput value. +
LOCAL_CPU_CONFID
This will display the width of the confidence interval actually +achieved for overall CPU utilization on the system running netperf +(LOCAL_CPU_UTIL) during the test, if CPU utilization measurement +was enabled. Units: Width of interval as percentage of reported CPU +utilization. +
REMOTE_CPU_CONFID
This will display the width of the confidence interval actually +achieved for overall CPU utilization on the system running netserver +(REMOTE_CPU_UTIL) during the test, if CPU utilization +measurement was enabled. Units: Width of interval as percentage of +reported CPU utilization. +
TRANSACTION_RATE
This will display the transaction rate in transactions per second for +a request/response test even if the user has requested a throughput in +units of bits or bytes per second via the global -f +option. It is undefined for a non-request/response test. Units: +Transactions per second. +
RT_LATENCY
This will display the average round-trip latency for a +request/response test, accounting for number of transactions in flight +at one time. It is undefined for a non-request/response test. Units: +Microseconds per transaction +
BURST_SIZE
This will display the “burst size” or added transactions in flight +in a request/response test as requested via a test-specific +-b option. The number of transactions in flight at one time +will be one greater than this value. It is undefined for a +non-request/response test. Units: added Transactions in flight. +
LOCAL_TRANSPORT_RETRANS
This will display the number of retransmissions experienced on the +data connection during the test as determined by netperf. A value of +-1 means the attempt to determine the number of retransmissions failed +or the concept was not valid for the given protocol or the mechanism +is not known for the platform. A value of -2 means it was not +attempted. As of version 2.5.0 the meaning of values are in flux and +subject to change. Units: number of retransmissions. +
REMOTE_TRANSPORT_RETRANS
This will display the number of retransmissions experienced on the +data connection during the test as determined by netserver. A value +of -1 means the attempt to determine the number of retransmissions +failed or the concept was not valid for the given protocol or the +mechanism is not known for the platform. A value of -2 means it was +not attempted. As of version 2.5.0 the meaning of values are in flux +and subject to change. Units: number of retransmissions. +
TRANSPORT_MSS
This will display the Maximum Segment Size (aka MSS) or its equivalent +for the protocol being used during the test. A value of -1 means +either the concept of an MSS did not apply to the protocol being used, +or there was an error in retrieving it. Units: Bytes. +
LOCAL_SEND_THROUGHPUT
The throughput as measured by netperf for the successful “send” +calls it made on the data connection. Units: as requested via the +global -f option and displayed via the THROUGHPUT_UNITS +output selector. +
LOCAL_RECV_THROUGHPUT
The throughput as measured by netperf for the successful “receive” +calls it made on the data connection. Units: as requested via the +global -f option and displayed via the THROUGHPUT_UNITS +output selector. +
REMOTE_SEND_THROUGHPUT
The throughput as measured by netserver for the successful “send” +calls it made on the data connection. Units: as requested via the +global -f option and displayed via the THROUGHPUT_UNITS +output selector. +
REMOTE_RECV_THROUGHPUT
The throughput as measured by netserver for the successful “receive” +calls it made on the data connection. Units: as requested via the +global -f option and displayed via the THROUGHPUT_UNITS +output selector. +
LOCAL_CPU_BIND
The CPU to which netperf was bound, if at all, during the test. A +value of -1 means that netperf was not explicitly bound to a CPU +during the test. Units: CPU ID +
LOCAL_CPU_COUNT
The number of CPUs (cores, threads) detected by netperf. Units: CPU count. +
LOCAL_CPU_PEAK_UTIL
The utilization of the CPU most heavily utilized during the test, as +measured by netperf. This can be used to see if any one CPU of a +multi-CPU system was saturated even though the overall CPU utilization +as reported by LOCAL_CPU_UTIL was low. Units: 0 to 100% +
LOCAL_CPU_PEAK_ID
The id of the CPU most heavily utilized during the test as determined +by netperf. Units: CPU ID. +
LOCAL_CPU_MODEL
Model information for the processor(s) present on the system running +netperf. Assumes all processors in the system (as perceived by +netperf) on which netperf is running are the same model. Units: Text +
LOCAL_CPU_FREQUENCY
The frequency of the processor(s) on the system running netperf, at +the time netperf made the call. Assumes that all processors present +in the system running netperf are running at the same +frequency. Units: MHz +
REMOTE_CPU_BIND
The CPU to which netserver was bound, if at all, during the test. A +value of -1 means that netperf was not explicitly bound to a CPU +during the test. Units: CPU ID +
REMOTE_CPU_COUNT
The number of CPUs (cores, threads) detected by netserver. Units: CPU +count. +
REMOTE_CPU_PEAK_UTIL
The utilization of the CPU most heavily utilized during the test, as +measured by netserver. This can be used to see if any one CPU of a +multi-CPU system was saturated even though the overall CPU utilization +as reported by REMOTE_CPU_UTIL was low. Units: 0 to 100% +
REMOTE_CPU_PEAK_ID
The id of the CPU most heavily utilized during the test as determined +by netserver. Units: CPU ID. +
REMOTE_CPU_MODEL
Model information for the processor(s) present on the system running +netserver. Assumes all processors in the system (as perceived by +netserver) on which netserver is running are the same model. Units: +Text +
REMOTE_CPU_FREQUENCY
The frequency of the processor(s) on the system running netserver, at +the time netserver made the call. Assumes that all processors present +in the system running netserver are running at the same +frequency. Units: MHz +
SOURCE_PORT
The port ID/service name to which the data socket created by netperf +was bound. A value of 0 means the data socket was not explicitly +bound to a port number. Units: ASCII text. +
SOURCE_ADDR
The name/address to which the data socket created by netperf was +bound. A value of 0.0.0.0 means the data socket was not explicitly +bound to an address. Units: ASCII text. +
SOURCE_FAMILY
The address family to which the data socket created by netperf was +bound. A value of 0 means the data socket was not explicitly bound to +a given address family. Units: ASCII text. +
DEST_PORT
The port ID to which the data socket created by netserver was bound. A +value of 0 means the data socket was not explicitly bound to a port +number. Units: ASCII text. +
DEST_ADDR
The name/address of the data socket created by netserver. Units: +ASCII text. +
DEST_FAMILY
The address family to which the data socket created by netserver was +bound. A value of 0 means the data socket was not explicitly bound to +a given address family. Units: ASCII text. +
LOCAL_SEND_CALLS
The number of successful “send” calls made by netperf against its +data socket. Units: Calls. +
LOCAL_RECV_CALLS
The number of successful “receive” calls made by netperf against its +data socket. Units: Calls. +
LOCAL_BYTES_PER_RECV
The average number of bytes per “receive” call made by netperf +against its data socket. Units: Bytes. +
LOCAL_BYTES_PER_SEND
The average number of bytes per “send” call made by netperf against +its data socket. Units: Bytes. +
LOCAL_BYTES_SENT
The number of bytes successfully sent by netperf through its data +socket. Units: Bytes. +
LOCAL_BYTES_RECVD
The number of bytes successfully received by netperf through its data +socket. Units: Bytes. +
LOCAL_BYTES_XFERD
The sum of bytes sent and received by netperf through its data +socket. Units: Bytes. +
LOCAL_SEND_OFFSET
The offset from the alignment of the buffers passed by netperf in its +“send” calls. Specified via the global -o option and +defaults to 0. Units: Bytes. +
LOCAL_RECV_OFFSET
The offset from the alignment of the buffers passed by netperf in its +“receive” calls. Specified via the global -o option and +defaults to 0. Units: Bytes. +
LOCAL_SEND_ALIGN
The alignment of the buffers passed by netperf in its “send” calls +as specified via the global -a option. Defaults to 8. Units: +Bytes. +
LOCAL_RECV_ALIGN
The alignment of the buffers passed by netperf in its “receive” +calls as specified via the global -a option. Defaults to +8. Units: Bytes. +
LOCAL_SEND_WIDTH
The “width” of the ring of buffers through which netperf cycles as +it makes its “send” calls. Defaults to one more than the local send +socket buffer size divided by the send size as determined at the time +the data socket is created. Can be used to make netperf more processor +data cache unfriendly. Units: number of buffers. +
LOCAL_RECV_WIDTH
The “width” of the ring of buffers through which netperf cycles as +it makes its “receive” calls. Defaults to one more than the local +receive socket buffer size divided by the receive size as determined +at the time the data socket is created. Can be used to make netperf +more processor data cache unfriendly. Units: number of buffers. +
LOCAL_SEND_DIRTY_COUNT
The number of bytes to “dirty” (write to) before netperf makes a +“send” call. Specified via the global -k option, which +requires that –enable-dirty=yes was specified with the configure +command prior to building netperf. Units: Bytes. +
LOCAL_RECV_DIRTY_COUNT
The number of bytes to “dirty” (write to) before netperf makes a +“recv” call. Specified via the global -k option which +requires that –enable-dirty was specified with the configure command +prior to building netperf. Units: Bytes. +
LOCAL_RECV_CLEAN_COUNT
The number of bytes netperf should read “cleanly” before making a +“receive” call. Specified via the global -k option which +requires that –enable-dirty was specified with configure command +prior to building netperf. Clean reads start were dirty writes ended. +Units: Bytes. +
LOCAL_NODELAY
Indicates whether or not setting the test protocol-specific “no +delay” (eg TCP_NODELAY) option on the data socket used by netperf was +requested by the test-specific -D option and +successful. Units: 0 means no, 1 means yes. +
LOCAL_CORK
Indicates whether or not TCP_CORK was set on the data socket used by +netperf as requested via the test-specific -C option. 1 means +yes, 0 means no/not applicable. +
REMOTE_SEND_CALLS
REMOTE_RECV_CALLS
REMOTE_BYTES_PER_RECV
REMOTE_BYTES_PER_SEND
REMOTE_BYTES_SENT
REMOTE_BYTES_RECVD
REMOTE_BYTES_XFERD
REMOTE_SEND_OFFSET
REMOTE_RECV_OFFSET
REMOTE_SEND_ALIGN
REMOTE_RECV_ALIGN
REMOTE_SEND_WIDTH
REMOTE_RECV_WIDTH
REMOTE_SEND_DIRTY_COUNT
REMOTE_RECV_DIRTY_COUNT
REMOTE_RECV_CLEAN_COUNT
REMOTE_NODELAY
REMOTE_CORK
These are all like their “LOCAL_” counterparts only for the +netserver rather than netperf. +
LOCAL_SYSNAME
The name of the OS (eg “Linux”) running on the system on which +netperf was running. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_SYSTEM_MODEL
The model name of the system on which netperf was running. Units: +ASCII Text. Disabled in 2.7.0. +
LOCAL_RELEASE
The release name/number of the OS running on the system on which +netperf was running. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_VERSION
The version number of the OS running on the system on which netperf +was running. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_MACHINE
The machine architecture of the machine on which netperf was +running. Units: ASCII Text. Disabled in 2.7.0. +
REMOTE_SYSNAME
REMOTE_SYSTEM_MODEL
REMOTE_RELEASE
REMOTE_VERSION
REMOTE_MACHINE
These are all like their “LOCAL_” counterparts only for the +netserver rather than netperf. Disabled in 2.7.0. +
LOCAL_INTERFACE_NAME
The name of the probable egress interface through which the data +connection went on the system running netperf. Example: eth0. Units: +ASCII Text. Disabled in 2.7.0. +
LOCAL_INTERFACE_VENDOR
The vendor ID of the probable egress interface through which traffic +on the data connection went on the system running netperf. Units: +Hexadecimal IDs as might be found in a pci.ids file or at +the PCI ID Repository. Disabled in 2.7.0. +
LOCAL_INTERFACE_DEVICE
The device ID of the probable egress interface through which traffic +on the data connection went on the system running netperf. Units: +Hexadecimal IDs as might be found in a pci.ids file or at +the PCI ID Repository. Disabled in 2.7.0. +
LOCAL_INTERFACE_SUBVENDOR
The sub-vendor ID of the probable egress interface through which +traffic on the data connection went on the system running +netperf. Units: Hexadecimal IDs as might be found in a pci.ids +file or at the PCI ID Repository. Disabled in 2.7.0. +
LOCAL_INTERFACE_SUBDEVICE
The sub-device ID of the probable egress interface through which +traffic on the data connection went on the system running +netperf. Units: Hexadecimal IDs as might be found in a pci.ids +file or at the PCI ID Repository. Disabled in 2.7.0. +
LOCAL_DRIVER_NAME
The name of the driver used for the probable egress interface through +which traffic on the data connection went on the system running +netperf. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_DRIVER_VERSION
The version string for the driver used for the probable egress +interface through which traffic on the data connection went on the +system running netperf. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_DRIVER_FIRMWARE
The firmware version for the driver used for the probable egress +interface through which traffic on the data connection went on the +system running netperf. Units: ASCII Text. Disabled in 2.7.0. +
LOCAL_DRIVER_BUS
The bus address of the probable egress interface through which traffic +on the data connection went on the system running netperf. Units: +ASCII Text. Disabled in 2.7.0. +
LOCAL_INTERFACE_SLOT
The slot ID of the probable egress interface through which traffic +on the data connection went on the system running netperf. Units: +ASCII Text. Disabled in 2.7.0. +
REMOTE_INTERFACE_NAME
REMOTE_INTERFACE_VENDOR
REMOTE_INTERFACE_DEVICE
REMOTE_INTERFACE_SUBVENDOR
REMOTE_INTERFACE_SUBDEVICE
REMOTE_DRIVER_NAME
REMOTE_DRIVER_VERSION
REMOTE_DRIVER_FIRMWARE
REMOTE_DRIVER_BUS
REMOTE_INTERFACE_SLOT
These are all like their “LOCAL_” counterparts only for the +netserver rather than netperf. Disabled in 2.7.0. +
LOCAL_INTERVAL_USECS
The interval at which bursts of operations (sends, receives, +transactions) were attempted by netperf. Specified by the +global -w option which requires –enable-intervals to have +been specified with the configure command prior to building +netperf. Units: Microseconds (though specified by default in +milliseconds on the command line) +
LOCAL_INTERVAL_BURST
The number of operations (sends, receives, transactions depending on +the test) which were attempted by netperf each LOCAL_INTERVAL_USECS +units of time. Specified by the global -b option which +requires –enable-intervals to have been specified with the configure +command prior to building netperf. Units: number of operations per burst. +
REMOTE_INTERVAL_USECS
The interval at which bursts of operations (sends, receives, +transactions) were attempted by netserver. Specified by the +global -w option which requires –enable-intervals to have +been specified with the configure command prior to building +netperf. Units: Microseconds (though specified by default in +milliseconds on the command line) +
REMOTE_INTERVAL_BURST
The number of operations (sends, receives, transactions depending on +the test) which were attempted by netperf each LOCAL_INTERVAL_USECS +units of time. Specified by the global -b option which +requires –enable-intervals to have been specified with the configure +command prior to building netperf. Units: number of operations per burst. +
LOCAL_SECURITY_TYPE_ID
LOCAL_SECURITY_TYPE
LOCAL_SECURITY_ENABLED_NUM
LOCAL_SECURITY_ENABLED
LOCAL_SECURITY_SPECIFIC
REMOTE_SECURITY_TYPE_ID
REMOTE_SECURITY_TYPE
REMOTE_SECURITY_ENABLED_NUM
REMOTE_SECURITY_ENABLED
REMOTE_SECURITY_SPECIFIC
A bunch of stuff related to what sort of security mechanisms (eg +SELINUX) were enabled on the systems during the test. Disabled in 2.7.0. +
RESULT_BRAND
The string specified by the user with the global -B +option. Units: ASCII Text. +
UUID
The universally unique identifier associated with this test, either +generated automagically by netperf, or passed to netperf via an omni +test-specific -u option. Note: Future versions may make this +a global command-line option. Units: ASCII Text. +
MIN_LATENCY
The minimum “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
MAX_LATENCY
The maximum “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
P50_LATENCY
The 50th percentile value of “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
P90_LATENCY
The 90th percentile value of “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
P99_LATENCY
The 99th percentile value of “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
MEAN_LATENCY
The average “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
STDDEV_LATENCY
The standard deviation of “latency” or operation time (send, receive or +request/response exchange depending on the test) as measured on the +netperf side when the global -j option was specified. Units: +Microseconds. +
COMMAND_LINE
The full command line used when invoking netperf. Units: ASCII Text. +
OUTPUT_END
While emitted with the list of output selectors, it is ignored when +specified as an output selector. +
+ +
+ +


+Next: , +Previous: The Omni Tests, +Up: Top + +
+ +

10 Other Netperf Tests

+ +

Apart from the typical performance tests, netperf contains some tests +which can be used to streamline measurements and reporting. These +include CPU rate calibration (present) and host identification (future +enhancement). + +

+ +
+ +


+Next: , +Previous: Other Netperf Tests, +Up: Other Netperf Tests + +
+ +

10.1 CPU rate calibration

+ +

Some of the CPU utilization measurement mechanisms of netperf work by +comparing the rate at which some counter increments when the system is +idle with the rate at which that same counter increments when the +system is running a netperf test. The ratio of those rates is used to +arrive at a CPU utilization percentage. + +

This means that netperf must know the rate at which the counter +increments when the system is presumed to be “idle.” If it does not +know the rate, netperf will measure it before starting a data transfer +test. This calibration step takes 40 seconds for each of the local or +remote systems, and if repeated for each netperf test would make taking +repeated measurements rather slow. + +

Thus, the netperf CPU utilization options -c and and +-C can take an optional calibration value. This value is +used as the “idle rate” and the calibration step is not +performed. To determine the idle rate, netperf can be used to run +special tests which only report the value of the calibration - they +are the LOC_CPU and REM_CPU tests. These return the calibration value +for the local and remote system respectively. A common way to use +these tests is to store their results into an environment variable and +use that in subsequent netperf commands: + +

     LOC_RATE=`netperf -t LOC_CPU`
+     REM_RATE=`netperf -H <remote> -t REM_CPU`
+     netperf -H <remote> -c $LOC_RATE -C $REM_RATE ... -- ...
+     ...
+     netperf -H <remote> -c $LOC_RATE -C $REM_RATE ... -- ...
+
+

If you are going to use netperf to measure aggregate results, it is +important to use the LOC_CPU and REM_CPU tests to get the calibration +values first to avoid issues with some of the aggregate netperf tests +transferring data while others are “idle” and getting bogus +calibration values. When running aggregate tests, it is very +important to remember that any one instance of netperf does not know +about the other instances of netperf. It will report global CPU +utilization and will calculate service demand believing it was the +only thing causing that CPU utilization. So, you can use the CPU +utilization reported by netperf in an aggregate test, but you have to +calculate service demands by hand. + +

+ +


+Previous: CPU rate calibration, +Up: Other Netperf Tests + +
+ +

10.2 UUID Generation

+ +

Beginning with version 2.5.0 netperf can generate Universally Unique +IDentifiers (UUIDs). This can be done explicitly via the “UUID” +test: +

     $ netperf -t UUID
+     2c8561ae-9ebd-11e0-a297-0f5bfa0349d0
+
+

In and of itself, this is not terribly useful, but used in conjunction +with the test-specific -u option of an “omni” test to set +the UUID emitted by the UUID output +selector, it can be used to tie-together the separate instances of an +aggregate netperf test. Say, for instance if they were inserted into +a database of some sort. + +

+ +


+Next: , +Previous: Other Netperf Tests, +Up: Top + +
+ + +

11 Address Resolution

+ +

Netperf versions 2.4.0 and later have merged IPv4 and IPv6 tests so +the functionality of the tests in src/nettest_ipv6.c has been +subsumed into the tests in src/nettest_bsd.c This has been +accomplished in part by switching from gethostbyname()to +getaddrinfo() exclusively. While it was theoretically possible +to get multiple results for a hostname from gethostbyname() it +was generally unlikely and netperf's ignoring of the second and later +results was not much of an issue. + +

Now with getaddrinfo and particularly with AF_UNSPEC it is +increasingly likely that a given hostname will have multiple +associated addresses. The establish_control() routine of +src/netlib.c will indeed attempt to chose from among all the +matching IP addresses when establishing the control connection. +Netperf does not _really_ care if the control connection is IPv4 or +IPv6 or even mixed on either end. + +

However, the individual tests still ass-u-me that the first result in +the address list is the one to be used. Whether or not this will +turn-out to be an issue has yet to be determined. + +

If you do run into problems with this, the easiest workaround is to +specify IP addresses for the data connection explicitly in the +test-specific -H and -L options. At some point, the +netperf tests _may_ try to be more sophisticated in their parsing of +returns from getaddrinfo() - straw-man patches to +netperf-feedback@netperf.org would of course be most welcome +:) + +

Netperf has leveraged code from other open-source projects with +amenable licensing to provide a replacement getaddrinfo() call +on those platforms where the configure script believes there +is no native getaddrinfo call. As of this writing, the replacement +getaddrinfo() as been tested on HP-UX 11.0 and then presumed to +run elsewhere. + +

+ +


+Next: , +Previous: Address Resolution, +Up: Top + +
+ + +

12 Enhancing Netperf

+ +

Netperf is constantly evolving. If you find you want to make +enhancements to netperf, by all means do so. If you wish to add a new +“suite” of tests to netperf the general idea is to: + +

    +
  1. Add files src/nettest_mumble.c and src/nettest_mumble.h +where mumble is replaced with something meaningful for the test-suite. +
  2. Add support for an appropriate --enable-mumble option in +configure.ac. +
  3. Edit src/netperf.c, netsh.c, and netserver.c as +required, using #ifdef WANT_MUMBLE. +
  4. Compile and test +
+ +

However, with the addition of the “omni” tests in version 2.5.0 it +is preferred that one attempt to make the necessary changes to +src/nettest_omni.c rather than adding new source files, unless +this would make the omni tests entirely too complicated. + +

If you wish to submit your changes for possible inclusion into the +mainline sources, please try to base your changes on the latest +available sources. (See Getting Netperf Bits.) and then send email +describing the changes at a high level to +netperf-feedback@netperf.org or perhaps +netperf-talk@netperf.org. If the consensus is positive, then +sending context diff results to +netperf-feedback@netperf.org is the next step. From that +point, it is a matter of pestering the Netperf Contributing Editor +until he gets the changes incorporated :) + +

+ +


+Next: , +Previous: Enhancing Netperf, +Up: Top + +
+ + +

13 Netperf4

+ +

Netperf4 is the shorthand name given to version 4.X.X of netperf. +This is really a separate benchmark more than a newer version of +netperf, but it is a descendant of netperf so the netperf name is +kept. The facetious way to describe netperf4 is to say it is the +egg-laying-woolly-milk-pig version of netperf :) The more respectful +way to describe it is to say it is the version of netperf with support +for synchronized, multiple-thread, multiple-test, multiple-system, +network-oriented benchmarking. + +

Netperf4 is still undergoing evolution. Those wishing to work with or +on netperf4 are encouraged to join the +netperf-dev +mailing list and/or peruse the +current sources. + +

+ +


+Next: , +Previous: Netperf4, +Up: Top + +
+ +

Concept Index

+ +
+ +


+Previous: Concept Index, +Up: Top + +
+ + +

Option Index

+ + + + + diff --git a/doc/netperf.info b/doc/netperf.info new file mode 100644 index 0000000..c570211 --- /dev/null +++ b/doc/netperf.info @@ -0,0 +1,4386 @@ +This is netperf.info, produced by makeinfo version 4.13 from +netperf.texi. + +This is Rick Jones' feeble attempt at a Texinfo-based manual for the +netperf benchmark. + + Copyright (C) 2005-2015 Hewlett-Packard Company + Copyright 2021 Hewlett Packard Enterprise Development LP + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + + + + +File: netperf.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +Netperf Manual +************** + +This is Rick Jones' feeble attempt at a Texinfo-based manual for the +netperf benchmark. + + Copyright (C) 2005-2015 Hewlett-Packard Company + + Permission is granted to copy, distribute and/or modify this + document per the terms of the netperf source license, a copy of + which can be found in the file `COPYING' of the basic netperf + distribution. + +* Menu: + +* Introduction:: An introduction to netperf - what it +is and what it is not. +* Installing Netperf:: How to go about installing netperf. +* The Design of Netperf:: +* Global Command-line Options:: +* Using Netperf to Measure Bulk Data Transfer:: +* Using Netperf to Measure Request/Response :: +* Using Netperf to Measure Aggregate Performance:: +* Using Netperf to Measure Bidirectional Transfer:: +* The Omni Tests:: +* Other Netperf Tests:: +* Address Resolution:: +* Enhancing Netperf:: +* Netperf4:: +* Concept Index:: +* Option Index:: + + +File: netperf.info, Node: Introduction, Next: Installing Netperf, Prev: Top, Up: Top + +1 Introduction +************** + +Netperf is a benchmark that can be use to measure various aspect of +networking performance. The primary foci are bulk (aka unidirectional) +data transfer and request/response performance using either TCP or UDP +and the Berkeley Sockets interface. As of this writing, the tests +available either unconditionally or conditionally include: + + * TCP and UDP unidirectional transfer and request/response over IPv4 + and IPv6 using the Sockets interface. + + * TCP and UDP unidirectional transfer and request/response over IPv4 + using the XTI interface. + + * Link-level unidirectional transfer and request/response using the + DLPI interface. + + * Unix domain sockets + + * SCTP unidirectional transfer and request/response over IPv4 and + IPv6 using the sockets interface. + + While not every revision of netperf will work on every platform +listed, the intention is that at least some version of netperf will +work on the following platforms: + + * Unix - at least all the major variants. + + * Linux + + * Windows + + * Others + + Netperf is maintained and informally supported primarily by Rick +Jones, who can perhaps be best described as Netperf Contributing +Editor. Non-trivial and very appreciated assistance comes from others +in the network performance community, who are too numerous to mention +here. While it is often used by them, netperf is NOT supported via any +of the formal Hewlett-Packard support channels. You should feel free +to make enhancements and modifications to netperf to suit your +nefarious porpoises, so long as you stay within the guidelines of the +netperf copyright. If you feel so inclined, you can send your changes +to netperf-feedback for possible +inclusion into subsequent versions of netperf. + + It is the Contributing Editor's belief that the netperf license walks +like open source and talks like open source. However, the license was +never submitted for "certification" as an open source license. If you +would prefer to make contributions to a networking benchmark using a +certified open source license, please consider netperf4, which is +distributed under the terms of the GPLv2. + + The netperf-talk mailing list is +available to discuss the care and feeding of netperf with others who +share your interest in network performance benchmarking. The +netperf-talk mailing list is a closed list (to deal with spam) and you +must first subscribe by sending email to netperf-talk-request +. + +* Menu: + +* Conventions:: + + +File: netperf.info, Node: Conventions, Prev: Introduction, Up: Introduction + +1.1 Conventions +=============== + +A "sizespec" is a one or two item, comma-separated list used as an +argument to a command-line option that can set one or two, related +netperf parameters. If you wish to set both parameters to separate +values, items should be separated by a comma: + + parameter1,parameter2 + + If you wish to set the first parameter without altering the value of +the second from its default, you should follow the first item with a +comma: + + parameter1, + + Likewise, precede the item with a comma if you wish to set only the +second parameter: + + ,parameter2 + + An item with no commas: + + parameter1and2 + + will set both parameters to the same value. This last mode is one of +the most frequently used. + + There is another variant of the comma-separated, two-item list called +a "optionspec" which is like a sizespec with the exception that a +single item with no comma: + + parameter1 + + will only set the value of the first parameter and will leave the +second parameter at its default value. + + Netperf has two types of command-line options. The first are global +command line options. They are essentially any option not tied to a +particular test or group of tests. An example of a global command-line +option is the one which sets the test type - `-t'. + + The second type of options are test-specific options. These are +options which are only applicable to a particular test or set of tests. +An example of a test-specific option would be the send socket buffer +size for a TCP_STREAM test. + + Global command-line options are specified first with test-specific +options following after a `--' as in: + + netperf -- + + +File: netperf.info, Node: Installing Netperf, Next: The Design of Netperf, Prev: Introduction, Up: Top + +2 Installing Netperf +******************** + +Netperf's primary form of distribution is source code. This allows +installation on systems other than those to which the authors have +ready access and thus the ability to create binaries. There are two +styles of netperf installation. The first runs the netperf server +program - netserver - as a child of inetd. This requires the installer +to have sufficient privileges to edit the files `/etc/services' and +`/etc/inetd.conf' or their platform-specific equivalents. + + The second style is to run netserver as a standalone daemon. This +second method does not require edit privileges on `/etc/services' and +`/etc/inetd.conf' but does mean you must remember to run the netserver +program explicitly after every system reboot. + + This manual assumes that those wishing to measure networking +performance already know how to use anonymous FTP and/or a web browser. +It is also expected that you have at least a passing familiarity with +the networking protocols and interfaces involved. In all honesty, if +you do not have such familiarity, likely as not you have some +experience to gain before attempting network performance measurements. +The excellent texts by authors such as Stevens, Fenner and Rudoff +and/or Stallings would be good starting points. There are likely other +excellent sources out there as well. + +* Menu: + +* Getting Netperf Bits:: +* Installing Netperf Bits:: +* Verifying Installation:: + + +File: netperf.info, Node: Getting Netperf Bits, Next: Installing Netperf Bits, Prev: Installing Netperf, Up: Installing Netperf + +2.1 Getting Netperf Bits +======================== + +Gzipped tar files of netperf sources can be retrieved via anonymous FTP +(ftp://ftp.netperf.org/netperf) for "released" versions of the bits. +Pre-release versions of the bits can be retrieved via anonymous FTP +from the experimental (ftp://ftp.netperf.org/netperf/experimental) +subdirectory. + + For convenience and ease of remembering, a link to the download site +is provided via the NetperfPage (http://www.netperf.org/) + + The bits corresponding to each discrete release of netperf are +tagged (http://www.netperf.org/svn/netperf2/tags) for retrieval via +subversion. For example, there is a tag for the first version +corresponding to this version of the manual - netperf 2.7.0 +(http://www.netperf.org/svn/netperf2/tags/netperf-2.7.0). Those +wishing to be on the bleeding edge of netperf development can use +subversion to grab the top of trunk +(http://www.netperf.org/svn/netperf2/trunk). When fixing bugs or +making enhancements, patches against the top-of-trunk are preferred. + + There are likely other places around the Internet from which one can +download netperf bits. These may be simple mirrors of the main netperf +site, or they may be local variants on netperf. As with anything one +downloads from the Internet, take care to make sure it is what you +really wanted and isn't some malicious Trojan or whatnot. Caveat +downloader. + + As a general rule, binaries of netperf and netserver are not +distributed from ftp.netperf.org. From time to time a kind soul or +souls has packaged netperf as a Debian package available via the +apt-get mechanism or as an RPM. I would be most interested in learning +how to enhance the makefiles to make that easier for people. + + +File: netperf.info, Node: Installing Netperf Bits, Next: Verifying Installation, Prev: Getting Netperf Bits, Up: Installing Netperf + +2.2 Installing Netperf +====================== + +Once you have downloaded the tar file of netperf sources onto your +system(s), it is necessary to unpack the tar file, cd to the netperf +directory, run configure and then make. Most of the time it should be +sufficient to just: + + gzcat netperf-.tar.gz | tar xf - + cd netperf- + ./configure + make + make install + + Most of the "usual" configure script options should be present +dealing with where to install binaries and whatnot. + ./configure --help + should list all of those and more. You may find the `--prefix' +option helpful in deciding where the binaries and such will be put +during the `make install'. + + If the netperf configure script does not know how to automagically +detect which CPU utilization mechanism to use on your platform you may +want to add a `--enable-cpuutil=mumble' option to the configure +command. If you have knowledge and/or experience to contribute to +that area, feel free to contact . + + Similarly, if you want tests using the XTI interface, Unix Domain +Sockets, DLPI or SCTP it will be necessary to add one or more +`--enable-[xti|unixdomain|dlpi|sctp]=yes' options to the configure +command. As of this writing, the configure script will not include +those tests automagically. + + Starting with version 2.5.0, netperf began migrating most of the +"classic" netperf tests found in `src/nettest_bsd.c' to the so-called +"omni" tests (aka "two routines to run them all") found in +`src/nettest_omni.c'. This migration enables a number of new features +such as greater control over what output is included, and new things to +output. The "omni" test is enabled by default in 2.5.0 and a number of +the classic tests are migrated - you can tell if a test has been +migrated from the presence of `MIGRATED' in the test banner. If you +encounter problems with either the omni or migrated tests, please first +attempt to obtain resolution via or +. If that is unsuccessful, you can add a +`--enable-omni=no' to the configure command and the omni tests will not +be compiled-in and the classic tests will not be migrated. + + Starting with version 2.5.0, netperf includes the "burst mode" +functionality in a default compilation of the bits. If you encounter +problems with this, please first attempt to obtain help via + or . If that +is unsuccessful, you can add a `--enable-burst=no' to the configure +command and the burst mode functionality will not be compiled-in. + + On some platforms, it may be necessary to precede the configure +command with a CFLAGS and/or LIBS variable as the netperf configure +script is not yet smart enough to set them itself. Whenever possible, +these requirements will be found in `README.PLATFORM' files. Expertise +and assistance in making that more automagic in the configure script +would be most welcome. + + Other optional configure-time settings include +`--enable-intervals=yes' to give netperf the ability to "pace" its +_STREAM tests and `--enable-histogram=yes' to have netperf keep a +histogram of interesting times. Each of these will have some effect on +the measured result. If your system supports `gethrtime()' the effect +of the histogram measurement should be minimized but probably still +measurable. For example, the histogram of a netperf TCP_RR test will +be of the individual transaction times: + netperf -t TCP_RR -H lag -v 2 + TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET : histogram + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 3538.82 + 32768 32768 + Alignment Offset + Local Remote Local Remote + Send Recv Send Recv + 8 0 0 0 + Histogram of request/response times + UNIT_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + TEN_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + HUNDRED_USEC : 0: 34480: 111: 13: 12: 6: 9: 3: 4: 7 + UNIT_MSEC : 0: 60: 50: 51: 44: 44: 72: 119: 100: 101 + TEN_MSEC : 0: 105: 0: 0: 0: 0: 0: 0: 0: 0 + HUNDRED_MSEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + UNIT_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + TEN_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + >100_SECS: 0 + HIST_TOTAL: 35391 + + The histogram you see above is basically a base-10 log histogram +where we can see that most of the transaction times were on the order +of one hundred to one-hundred, ninety-nine microseconds, but they were +occasionally as long as ten to nineteen milliseconds + + The `--enable-demo=yes' configure option will cause code to be +included to report interim results during a test run. The rate at +which interim results are reported can then be controlled via the +global `-D' option. Here is an example of `-D' output: + + $ src/netperf -D 1.35 -H tardy.hpl.hp.com -f M + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com (15.9.116.144) port 0 AF_INET : demo + Interim result: 5.41 MBytes/s over 1.35 seconds ending at 1308789765.848 + Interim result: 11.07 MBytes/s over 1.36 seconds ending at 1308789767.206 + Interim result: 16.00 MBytes/s over 1.36 seconds ending at 1308789768.566 + Interim result: 20.66 MBytes/s over 1.36 seconds ending at 1308789769.922 + Interim result: 22.74 MBytes/s over 1.36 seconds ending at 1308789771.285 + Interim result: 23.07 MBytes/s over 1.36 seconds ending at 1308789772.647 + Interim result: 23.77 MBytes/s over 1.37 seconds ending at 1308789774.016 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. MBytes/sec + + 87380 16384 16384 10.06 17.81 + + Notice how the units of the interim result track that requested by +the `-f' option. Also notice that sometimes the interval will be +longer than the value specified in the `-D' option. This is normal and +stems from how demo mode is implemented not by relying on interval +timers or frequent calls to get the current time, but by calculating +how many units of work must be performed to take at least the desired +interval. + + Those familiar with this option in earlier versions of netperf will +note the addition of the "ending at" text. This is the time as +reported by a `gettimeofday()' call (or its emulation) with a `NULL' +timezone pointer. This addition is intended to make it easier to +insert interim results into an rrdtool +(http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html) Round-Robin +Database (RRD). A likely bug-riddled example of doing so can be found +in `doc/examples/netperf_interim_to_rrd.sh'. The time is reported out +to milliseconds rather than microseconds because that is the most +rrdtool understands as of the time of this writing. + + As of this writing, a `make install' will not actually update the +files `/etc/services' and/or `/etc/inetd.conf' or their +platform-specific equivalents. It remains necessary to perform that +bit of installation magic by hand. Patches to the makefile sources to +effect an automagic editing of the necessary files to have netperf +installed as a child of inetd would be most welcome. + + Starting the netserver as a standalone daemon should be as easy as: + $ netserver + Starting netserver at port 12865 + Starting netserver at hostname 0.0.0.0 port 12865 and family 0 + + Over time the specifics of the messages netserver prints to the +screen may change but the gist will remain the same. + + If the compilation of netperf or netserver happens to fail, feel free +to contact or join and ask in +. However, it is quite important that you +include the actual compilation errors and perhaps even the configure +log in your email. Otherwise, it will be that much more difficult for +someone to assist you. + + +File: netperf.info, Node: Verifying Installation, Prev: Installing Netperf Bits, Up: Installing Netperf + +2.3 Verifying Installation +========================== + +Basically, once netperf is installed and netserver is configured as a +child of inetd, or launched as a standalone daemon, simply typing: + netperf + should result in output similar to the following: + $ netperf + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 2997.84 + + +File: netperf.info, Node: The Design of Netperf, Next: Global Command-line Options, Prev: Installing Netperf, Up: Top + +3 The Design of Netperf +*********************** + +Netperf is designed around a basic client-server model. There are two +executables - netperf and netserver. Generally you will only execute +the netperf program, with the netserver program being invoked by the +remote system's inetd or having been previously started as its own +standalone daemon. + + When you execute netperf it will establish a "control connection" to +the remote system. This connection will be used to pass test +configuration information and results to and from the remote system. +Regardless of the type of test to be run, the control connection will +be a TCP connection using BSD sockets. The control connection can use +either IPv4 or IPv6. + + Once the control connection is up and the configuration information +has been passed, a separate "data" connection will be opened for the +measurement itself using the API's and protocols appropriate for the +specified test. When the test is completed, the data connection will +be torn-down and results from the netserver will be passed-back via the +control connection and combined with netperf's result for display to +the user. + + Netperf places no traffic on the control connection while a test is +in progress. Certain TCP options, such as SO_KEEPALIVE, if set as your +systems' default, may put packets out on the control connection while a +test is in progress. Generally speaking this will have no effect on +the results. + +* Menu: + +* CPU Utilization:: + + +File: netperf.info, Node: CPU Utilization, Prev: The Design of Netperf, Up: The Design of Netperf + +3.1 CPU Utilization +=================== + +CPU utilization is an important, and alas all-too infrequently reported +component of networking performance. Unfortunately, it can be one of +the most difficult metrics to measure accurately and portably. Netperf +will do its level best to report accurate CPU utilization figures, but +some combinations of processor, OS and configuration may make that +difficult. + + CPU utilization in netperf is reported as a value between 0 and 100% +regardless of the number of CPUs involved. In addition to CPU +utilization, netperf will report a metric called a "service demand". +The service demand is the normalization of CPU utilization and work +performed. For a _STREAM test it is the microseconds of CPU time +consumed to transfer on KB (K == 1024) of data. For a _RR test it is +the microseconds of CPU time consumed processing a single transaction. +For both CPU utilization and service demand, lower is better. + + Service demand can be particularly useful when trying to gauge the +effect of a performance change. It is essentially a measure of +efficiency, with smaller values being more efficient and thus "better." + + Netperf is coded to be able to use one of several, generally +platform-specific CPU utilization measurement mechanisms. Single +letter codes will be included in the CPU portion of the test banner to +indicate which mechanism was used on each of the local (netperf) and +remote (netserver) system. + + As of this writing those codes are: + +`U' + The CPU utilization measurement mechanism was unknown to netperf or + netperf/netserver was not compiled to include CPU utilization + measurements. The code for the null CPU utilization mechanism can + be found in `src/netcpu_none.c'. + +`I' + An HP-UX-specific CPU utilization mechanism whereby the kernel + incremented a per-CPU counter by one for each trip through the idle + loop. This mechanism was only available on specially-compiled HP-UX + kernels prior to HP-UX 10 and is mentioned here only for the sake + of historical completeness and perhaps as a suggestion to those + who might be altering other operating systems. While rather + simple, perhaps even simplistic, this mechanism was quite robust + and was not affected by the concerns of statistical methods, or + methods attempting to track time in each of user, kernel, + interrupt and idle modes which require quite careful accounting. + It can be thought-of as the in-kernel version of the looper `L' + mechanism without the context switch overhead. This mechanism + required calibration. + +`P' + An HP-UX-specific CPU utilization mechanism whereby the kernel + keeps-track of time (in the form of CPU cycles) spent in the kernel + idle loop (HP-UX 10.0 to 11.31 inclusive), or where the kernel + keeps track of time spent in idle, user, kernel and interrupt + processing (HP-UX 11.23 and later). The former requires + calibration, the latter does not. Values in either case are + retrieved via one of the pstat(2) family of calls, hence the use + of the letter `P'. The code for these mechanisms is found in + `src/netcpu_pstat.c' and `src/netcpu_pstatnew.c' respectively. + +`K' + A Solaris-specific CPU utilization mechanism whereby the kernel + keeps track of ticks (eg HZ) spent in the idle loop. This method + is statistical and is known to be inaccurate when the interrupt + rate is above epsilon as time spent processing interrupts is not + subtracted from idle. The value is retrieved via a kstat() call - + hence the use of the letter `K'. Since this mechanism uses units + of ticks (HZ) the calibration value should invariably match HZ. + (Eg 100) The code for this mechanism is implemented in + `src/netcpu_kstat.c'. + +`M' + A Solaris-specific mechanism available on Solaris 10 and latter + which uses the new microstate accounting mechanisms. There are + two, alas, overlapping, mechanisms. The first tracks nanoseconds + spent in user, kernel, and idle modes. The second mechanism tracks + nanoseconds spent in interrupt. Since the mechanisms overlap, + netperf goes through some hand-waving to try to "fix" the problem. + Since the accuracy of the handwaving cannot be completely + determined, one must presume that while better than the `K' + mechanism, this mechanism too is not without issues. The values + are retrieved via kstat() calls, but the letter code is set to `M' + to distinguish this mechanism from the even less accurate `K' + mechanism. The code for this mechanism is implemented in + `src/netcpu_kstat10.c'. + +`L' + A mechanism based on "looper"or "soaker" processes which sit in + tight loops counting as fast as they possibly can. This mechanism + starts a looper process for each known CPU on the system. The + effect of processor hyperthreading on the mechanism is not yet + known. This mechanism definitely requires calibration. The code + for the "looper"mechanism can be found in `src/netcpu_looper.c' + +`N' + A Microsoft Windows-specific mechanism, the code for which can be + found in `src/netcpu_ntperf.c'. This mechanism too is based on + what appears to be a form of micro-state accounting and requires no + calibration. On laptops, or other systems which may dynamically + alter the CPU frequency to minimize power consumption, it has been + suggested that this mechanism may become slightly confused, in + which case using BIOS/uEFI settings to disable the power saving + would be indicated. + +`S' + This mechanism uses `/proc/stat' on Linux to retrieve time (ticks) + spent in idle mode. It is thought but not known to be reasonably + accurate. The code for this mechanism can be found in + `src/netcpu_procstat.c'. + +`C' + A mechanism somewhat similar to `S' but using the sysctl() call on + BSD-like Operating systems (*BSD and MacOS X). The code for this + mechanism can be found in `src/netcpu_sysctl.c'. + +`Others' + Other mechanisms included in netperf in the past have included + using the times() and getrusage() calls. These calls are actually + rather poorly suited to the task of measuring CPU overhead for + networking as they tend to be process-specific and much + network-related processing can happen outside the context of a + process, in places where it is not a given it will be charged to + the correct, or even a process. They are mentioned here as a + warning to anyone seeing those mechanisms used in other networking + benchmarks. These mechanisms are not available in netperf 2.4.0 + and later. + + For many platforms, the configure script will chose the best +available CPU utilization mechanism. However, some platforms have no +particularly good mechanisms. On those platforms, it is probably best +to use the "LOOPER" mechanism which is basically some number of +processes (as many as there are processors) sitting in tight little +loops counting as fast as they can. The rate at which the loopers +count when the system is believed to be idle is compared with the rate +when the system is running netperf and the ratio is used to compute CPU +utilization. + + In the past, netperf included some mechanisms that only reported CPU +time charged to the calling process. Those mechanisms have been +removed from netperf versions 2.4.0 and later because they are +hopelessly inaccurate. Networking can and often results in CPU time +being spent in places - such as interrupt contexts - that do not get +charged to a or the correct process. + + In fact, time spent in the processing of interrupts is a common issue +for many CPU utilization mechanisms. In particular, the "PSTAT" +mechanism was eventually known to have problems accounting for certain +interrupt time prior to HP-UX 11.11 (11iv1). HP-UX 11iv2 and later are +known/presumed to be good. The "KSTAT" mechanism is known to have +problems on all versions of Solaris up to and including Solaris 10. +Even the microstate accounting available via kstat in Solaris 10 has +issues, though perhaps not as bad as those of prior versions. + + The /proc/stat mechanism under Linux is in what the author would +consider an "uncertain" category as it appears to be statistical, which +may also have issues with time spent processing interrupts. + + In summary, be sure to "sanity-check" the CPU utilization figures +with other mechanisms. However, platform tools such as top, vmstat or +mpstat are often based on the same mechanisms used by netperf. + +* Menu: + +* CPU Utilization in a Virtual Guest:: + + +File: netperf.info, Node: CPU Utilization in a Virtual Guest, Prev: CPU Utilization, Up: CPU Utilization + +3.1.1 CPU Utilization in a Virtual Guest +---------------------------------------- + +The CPU utilization mechanisms used by netperf are "inline" in that +they are run by the same netperf or netserver process as is running the +test itself. This works just fine for "bare iron" tests but runs into +a problem when using virtual machines. + + The relationship between virtual guest and hypervisor can be thought +of as being similar to that between a process and kernel in a bare iron +system. As such, (m)any CPU utilization mechanisms used in the virtual +guest are similar to "process-local" mechanisms in a bare iron +situation. However, just as with bare iron and process-local +mechanisms, much networking processing happens outside the context of +the virtual guest. It takes place in the hypervisor, and is not +visible to mechanisms running in the guest(s). For this reason, one +should not really trust CPU utilization figures reported by netperf or +netserver when running in a virtual guest. + + If one is looking to measure the added overhead of a virtualization +mechanism, rather than rely on CPU utilization, one can rely instead on +netperf _RR tests - path-lengths and overheads can be a significant +fraction of the latency, so increases in overhead should appear as +decreases in transaction rate. Whatever you do, DO NOT rely on the +throughput of a _STREAM test. Achieving link-rate can be done via a +multitude of options that mask overhead rather than eliminate it. + + +File: netperf.info, Node: Global Command-line Options, Next: Using Netperf to Measure Bulk Data Transfer, Prev: The Design of Netperf, Up: Top + +4 Global Command-line Options +***************************** + +This section describes each of the global command-line options +available in the netperf and netserver binaries. Essentially, it is an +expanded version of the usage information displayed by netperf or +netserver when invoked with the `-h' global command-line option. + +* Menu: + +* Command-line Options Syntax:: +* Global Options:: + + +File: netperf.info, Node: Command-line Options Syntax, Next: Global Options, Prev: Global Command-line Options, Up: Global Command-line Options + +4.1 Command-line Options Syntax +=============================== + +Revision 1.8 of netperf introduced enough new functionality to overrun +the English alphabet for mnemonic command-line option names, and the +author was not and is not quite ready to switch to the contemporary +`--mumble' style of command-line options. (Call him a Luddite if you +wish :). + + For this reason, the command-line options were split into two parts - +the first are the global command-line options. They are options that +affect nearly any and every test type of netperf. The second type are +the test-specific command-line options. Both are entered on the same +command line, but they must be separated from one another by a `--' for +correct parsing. Global command-line options come first, followed by +the `--' and then test-specific command-line options. If there are no +test-specific options to be set, the `--' may be omitted. If there are +no global command-line options to be set, test-specific options must +still be preceded by a `--'. For example: + netperf -- + sets both global and test-specific options: + netperf + sets just global options and: + netperf -- + sets just test-specific options. + + +File: netperf.info, Node: Global Options, Prev: Command-line Options Syntax, Up: Global Command-line Options + +4.2 Global Options +================== + +`-a ' + This option allows you to alter the alignment of the buffers used + in the sending and receiving calls on the local system.. Changing + the alignment of the buffers can force the system to use different + copy schemes, which can have a measurable effect on performance. + If the page size for the system were 4096 bytes, and you want to + pass page-aligned buffers beginning on page boundaries, you could + use `-a 4096'. By default the units are bytes, but suffix of "G," + "M," or "K" will specify the units to be 2^30 (GB), 2^20 (MB) or + 2^10 (KB) respectively. A suffix of "g," "m" or "k" will specify + units of 10^9, 10^6 or 10^3 bytes respectively. [Default: 8 bytes] + +`-A ' + This option is identical to the `-a' option with the difference + being it affects alignments for the remote system. + +`-b ' + This option is only present when netperf has been configure with + -enable-intervals=yes prior to compilation. It sets the size of + the burst of send calls in a _STREAM test. When used in + conjunction with the `-w' option it can cause the rate at which + data is sent to be "paced." + +`-B ' + This option will cause `' to be appended to the brief (see + -P) output of netperf. + +`-c [rate]' + This option will ask that CPU utilization and service demand be + calculated for the local system. For those CPU utilization + mechanisms requiring calibration, the options rate parameter may + be specified to preclude running another calibration step, saving + 40 seconds of time. For those CPU utilization mechanisms + requiring no calibration, the optional rate parameter will be + utterly and completely ignored. [Default: no CPU measurements] + +`-C [rate]' + This option requests CPU utilization and service demand + calculations for the remote system. It is otherwise identical to + the `-c' option. + +`-d' + Each instance of this option will increase the quantity of + debugging output displayed during a test. If the debugging output + level is set high enough, it may have a measurable effect on + performance. Debugging information for the local system is + printed to stdout. Debugging information for the remote system is + sent by default to the file `/tmp/netperf.debug'. [Default: no + debugging output] + +`-D [interval,units]' + This option is only available when netperf is configured with + -enable-demo=yes. When set, it will cause netperf to emit periodic + reports of performance during the run. [INTERVAL,UNITS] follow + the semantics of an optionspec. If specified, INTERVAL gives the + minimum interval in real seconds, it does not have to be whole + seconds. The UNITS value can be used for the first guess as to + how many units of work (bytes or transactions) must be done to + take at least INTERVAL seconds. If omitted, INTERVAL defaults to + one second and UNITS to values specific to each test type. + +`-f G|M|K|g|m|k|x' + This option can be used to change the reporting units for _STREAM + tests. Arguments of "G," "M," or "K" will set the units to 2^30, + 2^20 or 2^10 bytes/s respectively (EG power of two GB, MB or KB). + Arguments of "g," ",m" or "k" will set the units to 10^9, 10^6 or + 10^3 bits/s respectively. An argument of "x" requests the units + be transactions per second and is only meaningful for a + request-response test. [Default: "m" or 10^6 bits/s] + +`-F ' + This option specified the file from which send which buffers will + be pre-filled . While the buffers will contain data from the + specified file, the file is not fully transferred to the remote + system as the receiving end of the test will not write the + contents of what it receives to a file. This can be used to + pre-fill the send buffers with data having different + compressibility and so is useful when measuring performance over + mechanisms which perform compression. + + While previously required for a TCP_SENDFILE test, later versions + of netperf removed that restriction, creating a temporary file as + needed. While the author cannot recall exactly when that took + place, it is known to be unnecessary in version 2.5.0 and later. + +`-h' + This option causes netperf to display its "global" usage string and + exit to the exclusion of all else. + +`-H ' + This option will set the name of the remote system and or the + address family used for the control connection. For example: + -H linger,4 + will set the name of the remote system to "linger" and tells + netperf to use IPv4 addressing only. + -H ,6 + will leave the name of the remote system at its default, and + request that only IPv6 addresses be used for the control + connection. + -H lag + will set the name of the remote system to "lag" and leave the + address family to AF_UNSPEC which means selection of IPv4 vs IPv6 + is left to the system's address resolution. + + A value of "inet" can be used in place of "4" to request IPv4 only + addressing. Similarly, a value of "inet6" can be used in place of + "6" to request IPv6 only addressing. A value of "0" can be used + to request either IPv4 or IPv6 addressing as name resolution + dictates. + + By default, the options set with the global `-H' option are + inherited by the test for its data connection, unless a + test-specific `-H' option is specified. + + If a `-H' option follows either the `-4' or `-6' options, the + family setting specified with the -H option will override the `-4' + or `-6' options for the remote address family. If no address + family is specified, settings from a previous `-4' or `-6' option + will remain. In a nutshell, the last explicit global command-line + option wins. + + [Default: "localhost" for the remote name/IP address and "0" (eg + AF_UNSPEC) for the remote address family.] + +`-I ' + This option enables the calculation of confidence intervals and + sets the confidence and width parameters with the first half of the + optionspec being either 99 or 95 for 99% or 95% confidence + respectively. The second value of the optionspec specifies the + width of the desired confidence interval. For example + -I 99,5 + asks netperf to be 99% confident that the measured mean values for + throughput and CPU utilization are within +/- 2.5% of the "real" + mean values. If the `-i' option is specified and the `-I' option + is omitted, the confidence defaults to 99% and the width to 5% + (giving +/- 2.5%) + + If classic netperf test calculates that the desired confidence + intervals have not been met, it emits a noticeable warning that + cannot be suppressed with the `-P' or `-v' options: + + netperf -H tardy.cup -i 3 -I 99,5 + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.cup.hp.com (15.244.44.58) port 0 AF_INET : +/-2.5% 99% conf. + !!! WARNING + !!! Desired confidence was not achieved within the specified iterations. + !!! This implies that there was variability in the test environment that + !!! must be investigated before going further. + !!! Confidence intervals: Throughput : 6.8% + !!! Local CPU util : 0.0% + !!! Remote CPU util : 0.0% + + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.01 40.23 + + In the example above we see that netperf did not meet the desired + confidence intervals. Instead of being 99% confident it was within + +/- 2.5% of the real mean value of throughput it is only confident + it was within +/-3.4%. In this example, increasing the `-i' + option (described below) and/or increasing the iteration length + with the `-l' option might resolve the situation. + + In an explicit "omni" test, failure to meet the confidence + intervals will not result in netperf emitting a warning. To + verify the hitting, or not, of the confidence intervals one will + need to include them as part of an *note output selection: Omni + Output Selection. in the test-specific `-o', `-O' or `k' output + selection options. The warning about not hitting the confidence + intervals will remain in a "migrated" classic netperf test. + +`-i ' + This option enables the calculation of confidence intervals and + sets the minimum and maximum number of iterations to run in + attempting to achieve the desired confidence interval. The first + value sets the maximum number of iterations to run, the second, + the minimum. The maximum number of iterations is silently capped + at 30 and the minimum is silently floored at 3. Netperf repeats + the measurement the minimum number of iterations and continues + until it reaches either the desired confidence interval, or the + maximum number of iterations, whichever comes first. A classic or + migrated netperf test will not display the actual number of + iterations run. An *note omni test: The Omni Tests. will emit the + number of iterations run if the `CONFIDENCE_ITERATION' output + selector is included in the *note output selection: Omni Output + Selection. + + If the `-I' option is specified and the `-i' option omitted the + maximum number of iterations is set to 10 and the minimum to three. + + Output of a warning upon not hitting the desired confidence + intervals follows the description provided for the `-I' option. + + The total test time will be somewhere between the minimum and + maximum number of iterations multiplied by the test length + supplied by the `-l' option. + +`-j' + This option instructs netperf to keep additional timing statistics + when explicitly running an *note omni test: The Omni Tests. These + can be output when the test-specific `-o', `-O' or `-k' *note + output selectors: Omni Output Selectors. include one or more of: + + * MIN_LATENCY + + * MAX_LATENCY + + * P50_LATENCY + + * P90_LATENCY + + * P99_LATENCY + + * MEAN_LATENCY + + * STDDEV_LATENCY + + These statistics will be based on an expanded (100 buckets per row + rather than 10) histogram of times rather than a terribly long + list of individual times. As such, there will be some slight + error thanks to the bucketing. However, the reduction in storage + and processing overheads is well worth it. When running a + request/response test, one might get some idea of the error by + comparing the *note `MEAN_LATENCY': Omni Output Selectors. + calculated from the histogram with the `RT_LATENCY' calculated + from the number of request/response transactions and the test run + time. + + In the case of a request/response test the latencies will be + transaction latencies. In the case of a receive-only test they + will be time spent in the receive call. In the case of a + send-only test they will be time spent in the send call. The units + will be microseconds. Added in netperf 2.5.0. + +`-l testlen' + This option controls the length of any one iteration of the + requested test. A positive value for TESTLEN will run each + iteration of the test for at least TESTLEN seconds. A negative + value for TESTLEN will run each iteration for the absolute value of + TESTLEN transactions for a _RR test or bytes for a _STREAM test. + Certain tests, notably those using UDP can only be timed, they + cannot be limited by transaction or byte count. This limitation + may be relaxed in an *note omni: The Omni Tests. test. + + In some situations, individual iterations of a test may run for + longer for the number of seconds specified by the `-l' option. In + particular, this may occur for those tests where the socket buffer + size(s) are significantly longer than the bandwidthXdelay product + of the link(s) over which the data connection passes, or those + tests where there may be non-trivial numbers of retransmissions. + + If confidence intervals are enabled via either `-I' or `-i' the + total length of the netperf test will be somewhere between the + minimum and maximum iteration count multiplied by TESTLEN. + +`-L ' + This option is identical to the `-H' option with the difference + being it sets the _local_ hostname/IP and/or address family + information. This option is generally unnecessary, but can be + useful when you wish to make sure that the netperf control and data + connections go via different paths. It can also come-in handy if + one is trying to run netperf through those evil, end-to-end + breaking things known as firewalls. + + [Default: 0.0.0.0 (eg INADDR_ANY) for IPv4 and ::0 for IPv6 for the + local name. AF_UNSPEC for the local address family.] + +`-n numcpus' + This option tells netperf how many CPUs it should ass-u-me are + active on the system running netperf. In particular, this is used + for the *note CPU utilization: CPU Utilization. and service demand + calculations. On certain systems, netperf is able to determine + the number of CPU's automagically. This option will override any + number netperf might be able to determine on its own. + + Note that this option does _not_ set the number of CPUs on the + system running netserver. When netperf/netserver cannot + automagically determine the number of CPUs that can only be set + for netserver via a netserver `-n' command-line option. + + As it is almost universally possible for netperf/netserver to + determine the number of CPUs on the system automagically, 99 times + out of 10 this option should not be necessary and may be removed + in a future release of netperf. + +`-N' + This option tells netperf to forgo establishing a control + connection. This makes it is possible to run some limited netperf + tests without a corresponding netserver on the remote system. + + With this option set, the test to be run is to get all the + addressing information it needs to establish its data connection + from the command line or internal defaults. If not otherwise + specified by test-specific command line options, the data + connection for a "STREAM" or "SENDFILE" test will be to the + "discard" port, an "RR" test will be to the "echo" port, and a + "MEARTS" test will be to the chargen port. + + The response size of an "RR" test will be silently set to be the + same as the request size. Otherwise the test would hang if the + response size was larger than the request size, or would report an + incorrect, inflated transaction rate if the response size was less + than the request size. + + Since there is no control connection when this option is + specified, it is not possible to set "remote" properties such as + socket buffer size and the like via the netperf command line. Nor + is it possible to retrieve such interesting remote information as + CPU utilization. These items will be displayed as values which + should make it immediately obvious that was the case. + + The only way to change remote characteristics such as socket buffer + size or to obtain information such as CPU utilization is to employ + platform-specific methods on the remote system. Frankly, if one + has access to the remote system to employ those methods one aught + to be able to run a netserver there. However, that ability may + not be present in certain "support" situations, hence the addition + of this option. + + Added in netperf 2.4.3. + +`-o ' + The value(s) passed-in with this option will be used as an offset + added to the alignment specified with the `-a' option. For + example: + -o 3 -a 4096 + will cause the buffers passed to the local (netperf) send and + receive calls to begin three bytes past an address aligned to 4096 + bytes. [Default: 0 bytes] + +`-O ' + This option behaves just as the `-o' option but on the remote + (netserver) system and in conjunction with the `-A' option. + [Default: 0 bytes] + +`-p ' + The first value of the optionspec passed-in with this option tells + netperf the port number at which it should expect the remote + netserver to be listening for control connections. The second + value of the optionspec will request netperf to bind to that local + port number before establishing the control connection. For + example + -p 12345 + tells netperf that the remote netserver is listening on port 12345 + and leaves selection of the local port number for the control + connection up to the local TCP/IP stack whereas + -p ,32109 + leaves the remote netserver port at the default value of 12865 and + causes netperf to bind to the local port number 32109 before + connecting to the remote netserver. + + In general, setting the local port number is only necessary when + one is looking to run netperf through those evil, end-to-end + breaking things known as firewalls. + +`-P 0|1' + A value of "1" for the `-P' option will enable display of the test + banner. A value of "0" will disable display of the test banner. + One might want to disable display of the test banner when running + the same basic test type (eg TCP_STREAM) multiple times in + succession where the test banners would then simply be redundant + and unnecessarily clutter the output. [Default: 1 - display test + banners] + +`-s ' + This option will cause netperf to sleep `' before + actually transferring data over the data connection. This may be + useful in situations where one wishes to start a great many netperf + instances and do not want the earlier ones affecting the ability of + the later ones to get established. + + Added somewhere between versions 2.4.3 and 2.5.0. + +`-S' + This option will cause an attempt to be made to set SO_KEEPALIVE on + the data socket of a test using the BSD sockets interface. The + attempt will be made on the netperf side of all tests, and will be + made on the netserver side of an *note omni: The Omni Tests. or + *note migrated: Migrated Tests. test. No indication of failure is + given unless debug output is enabled with the global `-d' option. + + Added in version 2.5.0. + +`-t testname' + This option is used to tell netperf which test you wish to run. + As of this writing, valid values for TESTNAME include: + * *note TCP_STREAM::, *note TCP_MAERTS::, *note TCP_SENDFILE::, + *note TCP_RR::, *note TCP_CRR::, *note TCP_CC:: + + * *note UDP_STREAM::, *note UDP_RR:: + + * *note XTI_TCP_STREAM::, *note XTI_TCP_RR::, *note + XTI_TCP_CRR::, *note XTI_TCP_CC:: + + * *note XTI_UDP_STREAM::, *note XTI_UDP_RR:: + + * *note SCTP_STREAM::, *note SCTP_RR:: + + * *note DLCO_STREAM::, *note DLCO_RR::, *note DLCL_STREAM::, + *note DLCL_RR:: + + * *note LOC_CPU: Other Netperf Tests, *note REM_CPU: Other + Netperf Tests. + + * *note OMNI: The Omni Tests. + Not all tests are always compiled into netperf. In particular, the + "XTI," "SCTP," "UNIXDOMAIN," and "DL*" tests are only included in + netperf when configured with + `--enable-[xti|sctp|unixdomain|dlpi]=yes'. + + Netperf only runs one type of test no matter how many `-t' options + may be present on the command-line. The last `-t' global + command-line option will determine the test to be run. [Default: + TCP_STREAM] + +`-T ' + This option controls the CPU, and probably by extension memory, + affinity of netperf and/or netserver. + netperf -T 1 + will bind both netperf and netserver to "CPU 1" on their respective + systems. + netperf -T 1, + will bind just netperf to "CPU 1" and will leave netserver unbound. + netperf -T ,2 + will leave netperf unbound and will bind netserver to "CPU 2." + netperf -T 1,2 + will bind netperf to "CPU 1" and netserver to "CPU 2." + + This can be particularly useful when investigating performance + issues involving where processes run relative to where NIC + interrupts are processed or where NICs allocate their DMA buffers. + +`-v verbosity' + This option controls how verbose netperf will be in its output, + and is often used in conjunction with the `-P' option. If the + verbosity is set to a value of "0" then only the test's SFM (Single + Figure of Merit) is displayed. If local *note CPU utilization: + CPU Utilization. is requested via the `-c' option then the SFM is + the local service demand. Othersise, if remote CPU utilization is + requested via the `-C' option then the SFM is the remote service + demand. If neither local nor remote CPU utilization are requested + the SFM will be the measured throughput or transaction rate as + implied by the test specified with the `-t' option. + + If the verbosity level is set to "1" then the "normal" netperf + result output for each test is displayed. + + If the verbosity level is set to "2" then "extra" information will + be displayed. This may include, but is not limited to the number + of send or recv calls made and the average number of bytes per + send or recv call, or a histogram of the time spent in each send() + call or for each transaction if netperf was configured with + `--enable-histogram=yes'. [Default: 1 - normal verbosity] + + In an *note omni: The Omni Tests. test the verbosity setting is + largely ignored, save for when asking for the time histogram to be + displayed. In version 2.5.0 and later there is no *note output + selector: Omni Output Selectors. for the histogram and so it + remains displayed only when the verbosity level is set to 2. + +`-V' + This option displays the netperf version and then exits. + + Added in netperf 2.4.4. + +`-w time' + If netperf was configured with `--enable-intervals=yes' then this + value will set the inter-burst time to time milliseconds, and the + `-b' option will set the number of sends per burst. The actual + inter-burst time may vary depending on the system's timer + resolution. + +`-W ' + This option controls the number of buffers in the send (first or + only value) and or receive (second or only value) buffer rings. + Unlike some benchmarks, netperf does not continuously send or + receive from a single buffer. Instead it rotates through a ring of + buffers. [Default: One more than the size of the send or receive + socket buffer sizes (`-s' and/or `-S' options) divided by the send + `-m' or receive `-M' buffer size respectively] + +`-4' + Specifying this option will set both the local and remote address + families to AF_INET - that is use only IPv4 addresses on the + control connection. This can be overridden by a subsequent `-6', + `-H' or `-L' option. Basically, the last option explicitly + specifying an address family wins. Unless overridden by a + test-specific option, this will be inherited for the data + connection as well. + +`-6' + Specifying this option will set both local and and remote address + families to AF_INET6 - that is use only IPv6 addresses on the + control connection. This can be overridden by a subsequent `-4', + `-H' or `-L' option. Basically, the last address family + explicitly specified wins. Unless overridden by a test-specific + option, this will be inherited for the data connection as well. + + + +File: netperf.info, Node: Using Netperf to Measure Bulk Data Transfer, Next: Using Netperf to Measure Request/Response, Prev: Global Command-line Options, Up: Top + +5 Using Netperf to Measure Bulk Data Transfer +********************************************* + +The most commonly measured aspect of networked system performance is +that of bulk or unidirectional transfer performance. Everyone wants to +know how many bits or bytes per second they can push across the +network. The classic netperf convention for a bulk data transfer test +name is to tack a "_STREAM" suffix to a test name. + +* Menu: + +* Issues in Bulk Transfer:: +* Options common to TCP UDP and SCTP tests:: + + +File: netperf.info, Node: Issues in Bulk Transfer, Next: Options common to TCP UDP and SCTP tests, Prev: Using Netperf to Measure Bulk Data Transfer, Up: Using Netperf to Measure Bulk Data Transfer + +5.1 Issues in Bulk Transfer +=========================== + +There are any number of things which can affect the performance of a +bulk transfer test. + + Certainly, absent compression, bulk-transfer tests can be limited by +the speed of the slowest link in the path from the source to the +destination. If testing over a gigabit link, you will not see more +than a gigabit :) Such situations can be described as being +"network-limited" or "NIC-limited". + + CPU utilization can also affect the results of a bulk-transfer test. +If the networking stack requires a certain number of instructions or +CPU cycles per KB of data transferred, and the CPU is limited in the +number of instructions or cycles it can provide, then the transfer can +be described as being "CPU-bound". + + A bulk-transfer test can be CPU bound even when netperf reports less +than 100% CPU utilization. This can happen on an MP system where one +or more of the CPUs saturate at 100% but other CPU's remain idle. +Typically, a single flow of data, such as that from a single instance +of a netperf _STREAM test cannot make use of much more than the power +of one CPU. Exceptions to this generally occur when netperf and/or +netserver run on CPU(s) other than the CPU(s) taking interrupts from +the NIC(s). In that case, one might see as much as two CPUs' worth of +processing being used to service the flow of data. + + Distance and the speed-of-light can affect performance for a +bulk-transfer; often this can be mitigated by using larger windows. +One common limit to the performance of a transport using window-based +flow-control is: + Throughput <= WindowSize/RoundTripTime + As the sender can only have a window's-worth of data outstanding on +the network at any one time, and the soonest the sender can receive a +window update from the receiver is one RoundTripTime (RTT). TCP and +SCTP are examples of such protocols. + + Packet losses and their effects can be particularly bad for +performance. This is especially true if the packet losses result in +retransmission timeouts for the protocol(s) involved. By the time a +retransmission timeout has happened, the flow or connection has sat +idle for a considerable length of time. + + On many platforms, some variant on the `netstat' command can be used +to retrieve statistics about packet loss and retransmission. For +example: + netstat -p tcp + will retrieve TCP statistics on the HP-UX Operating System. On other +platforms, it may not be possible to retrieve statistics for a specific +protocol and something like: + netstat -s + would be used instead. + + Many times, such network statistics are keep since the time the stack +started, and we are only really interested in statistics from when +netperf was running. In such situations something along the lines of: + netstat -p tcp > before + netperf -t TCP_mumble... + netstat -p tcp > after + is indicated. The beforeafter +(ftp://ftp.cup.hp.com/dist/networking/tools/) utility can be used to +subtract the statistics in `before' from the statistics in `after': + beforeafter before after > delta + and then one can look at the statistics in `delta'. Beforeafter is +distributed in source form so one can compile it on the platform(s) of +interest. + + If running a version 2.5.0 or later "omni" test under Linux one can +include either or both of: + * LOCAL_TRANSPORT_RETRANS + + * REMOTE_TRANSPORT_RETRANS + + in the values provided via a test-specific `-o', `-O', or `-k' +output selction option and netperf will report the retransmissions +experienced on the data connection, as reported via a +`getsockopt(TCP_INFO)' call. If confidence intervals have been +requested via the global `-I' or `-i' options, the reported value(s) +will be for the last iteration. If the test is over a protocol other +than TCP, or on a platform other than Linux, the results are undefined. + + While it was written with HP-UX's netstat in mind, the annotated +netstat +(ftp://ftp.cup.hp.com/dist/networking/briefs/annotated_netstat.txt) +writeup may be helpful with other platforms as well. + + +File: netperf.info, Node: Options common to TCP UDP and SCTP tests, Prev: Issues in Bulk Transfer, Up: Using Netperf to Measure Bulk Data Transfer + +5.2 Options common to TCP UDP and SCTP tests +============================================ + +Many "test-specific" options are actually common across the different +tests. For those tests involving TCP, UDP and SCTP, whether using the +BSD Sockets or the XTI interface those common options include: + +`-h' + Display the test-suite-specific usage string and exit. For a TCP_ + or UDP_ test this will be the usage string from the source file + nettest_bsd.c. For an XTI_ test, this will be the usage string + from the source file nettest_xti.c. For an SCTP test, this will + be the usage string from the source file nettest_sctp.c. + +`-H ' + Normally, the remote hostname|IP and address family information is + inherited from the settings for the control connection (eg global + command-line `-H', `-4' and/or `-6' options). The test-specific + `-H' will override those settings for the data (aka test) + connection only. Settings for the control connection are left + unchanged. + +`-L ' + The test-specific `-L' option is identical to the test-specific + `-H' option except it affects the local hostname|IP and address + family information. As with its global command-line counterpart, + this is generally only useful when measuring though those evil, + end-to-end breaking things called firewalls. + +`-m bytes' + Set the size of the buffer passed-in to the "send" calls of a + _STREAM test. Note that this may have only an indirect effect on + the size of the packets sent over the network, and certain Layer 4 + protocols do _not_ preserve or enforce message boundaries, so + setting `-m' for the send size does not necessarily mean the + receiver will receive that many bytes at any one time. By default + the units are bytes, but suffix of "G," "M," or "K" will specify + the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-m 32K' + will set the size to 32KB or 32768 bytes. [Default: the local send + socket buffer size for the connection - either the system's + default or the value set via the `-s' option.] + +`-M bytes' + Set the size of the buffer passed-in to the "recv" calls of a + _STREAM test. This will be an upper bound on the number of bytes + received per receive call. By default the units are bytes, but + suffix of "G," "M," or "K" will specify the units to be 2^30 (GB), + 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," "m" or "k" + will specify units of 10^9, 10^6 or 10^3 bytes respectively. For + example: + `-M 32K' + will set the size to 32KB or 32768 bytes. [Default: the remote + receive socket buffer size for the data connection - either the + system's default or the value set via the `-S' option.] + +`-P ' + Set the local and/or remote port numbers for the data connection. + +`-s ' + This option sets the local (netperf) send and receive socket buffer + sizes for the data connection to the value(s) specified. Often, + this will affect the advertised and/or effective TCP or other + window, but on some platforms it may not. By default the units are + bytes, but suffix of "G," "M," or "K" will specify the units to be + 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," + "m" or "k" will specify units of 10^9, 10^6 or 10^3 bytes + respectively. For example: + `-s 128K' + Will request the local send and receive socket buffer sizes to be + 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. Further, while the historic expectation + is that the value specified in a `setsockopt()' call will be the + value returned via a `getsockopt()' call, at least one stack is + known to deliberately ignore history. When running under Windows + a value of 0 may be used which will be an indication to the stack + the user wants to enable a form of copy avoidance. [Default: -1 - + use the system's default socket buffer sizes] + +`-S ' + This option sets the remote (netserver) send and/or receive socket + buffer sizes for the data connection to the value(s) specified. + Often, this will affect the advertised and/or effective TCP or + other window, but on some platforms it may not. By default the + units are bytes, but suffix of "G," "M," or "K" will specify the + units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-S 128K' + Will request the remote send and receive socket buffer sizes to be + 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. Further, while the historic expectation + is that the value specified in a `setsockopt()' call will be the + value returned via a `getsockopt()' call, at least one stack is + known to deliberately ignore history. When running under Windows + a value of 0 may be used which will be an indication to the stack + the user wants to enable a form of copy avoidance. [Default: -1 - + use the system's default socket buffer sizes] + +`-4' + Set the local and remote address family for the data connection to + AF_INET - ie use IPv4 addressing only. Just as with their global + command-line counterparts the last of the `-4', `-6', `-H' or `-L' + option wins for their respective address families. + +`-6' + This option is identical to its `-4' cousin, but requests IPv6 + addresses for the local and remote ends of the data connection. + + +* Menu: + +* TCP_STREAM:: +* TCP_MAERTS:: +* TCP_SENDFILE:: +* UDP_STREAM:: +* XTI_TCP_STREAM:: +* XTI_UDP_STREAM:: +* SCTP_STREAM:: +* DLCO_STREAM:: +* DLCL_STREAM:: +* STREAM_STREAM:: +* DG_STREAM:: + + +File: netperf.info, Node: TCP_STREAM, Next: TCP_MAERTS, Prev: Options common to TCP UDP and SCTP tests, Up: Options common to TCP UDP and SCTP tests + +5.2.1 TCP_STREAM +---------------- + +The TCP_STREAM test is the default test in netperf. It is quite +simple, transferring some quantity of data from the system running +netperf to the system running netserver. While time spent establishing +the connection is not included in the throughput calculation, time +spent flushing the last of the data to the remote at the end of the +test is. This is how netperf knows that all the data it sent was +received by the remote. In addition to the *note options common to +STREAM tests: Options common to TCP UDP and SCTP tests, the following +test-specific options can be included to possibly alter the behavior of +the test: + +`-C' + This option will set TCP_CORK mode on the data connection on those + systems where TCP_CORK is defined (typically Linux). A full + description of TCP_CORK is beyond the scope of this manual, but in + a nutshell it forces sub-MSS sends to be buffered so every segment + sent is Maximum Segment Size (MSS) unless the application performs + an explicit flush operation or the connection is closed. At + present netperf does not perform any explicit flush operations. + Setting TCP_CORK may improve the bitrate of tests where the "send + size" (`-m' option) is smaller than the MSS. It should also + improve (make smaller) the service demand. + + The Linux tcp(7) manpage states that TCP_CORK cannot be used in + conjunction with TCP_NODELAY (set via the `-d' option), however + netperf does not validate command-line options to enforce that. + +`-D' + This option will set TCP_NODELAY on the data connection on those + systems where TCP_NODELAY is defined. This disables something + known as the Nagle Algorithm, which is intended to make the + segments TCP sends as large as reasonably possible. Setting + TCP_NODELAY for a TCP_STREAM test should either have no effect + when the send size (`-m' option) is larger than the MSS or will + decrease reported bitrate and increase service demand when the + send size is smaller than the MSS. This stems from TCP_NODELAY + causing each sub-MSS send to be its own TCP segment rather than + being aggregated with other small sends. This means more trips up + and down the protocol stack per KB of data transferred, which + means greater CPU utilization. + + If setting TCP_NODELAY with `-D' affects throughput and/or service + demand for tests where the send size (`-m') is larger than the MSS + it suggests the TCP/IP stack's implementation of the Nagle + Algorithm _may_ be broken, perhaps interpreting the Nagle + Algorithm on a segment by segment basis rather than the proper user + send by user send basis. However, a better test of this can be + achieved with the *note TCP_RR:: test. + + + Here is an example of a basic TCP_STREAM test, in this case from a +Debian Linux (2.6 kernel) system to an HP-UX 11iv2 (HP-UX 11.23) system: + + $ netperf -H lag + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.00 80.42 + + We see that the default receive socket buffer size for the receiver +(lag - HP-UX 11.23) is 32768 bytes, and the default socket send buffer +size for the sender (Debian 2.6 kernel) is 16384 bytes, however Linux +does "auto tuning" of socket buffer and TCP window sizes, which means +the send socket buffer size may be different at the end of the test +than it was at the beginning. This is addressed in the *note omni +tests: The Omni Tests. added in version 2.5.0 and *note output +selection: Omni Output Selection. Throughput is expressed as 10^6 (aka +Mega) bits per second, and the test ran for 10 seconds. IPv4 addresses +(AF_INET) were used. + + +File: netperf.info, Node: TCP_MAERTS, Next: TCP_SENDFILE, Prev: TCP_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.2 TCP_MAERTS +---------------- + +A TCP_MAERTS (MAERTS is STREAM backwards) test is "just like" a *note +TCP_STREAM:: test except the data flows from the netserver to the +netperf. The global command-line `-F' option is ignored for this test +type. The test-specific command-line `-C' option is ignored for this +test type. + + Here is an example of a TCP_MAERTS test between the same two systems +as in the example for the *note TCP_STREAM:: test. This time we request +larger socket buffers with `-s' and `-S' options: + + $ netperf -H lag -t TCP_MAERTS -- -s 128K -S 128K + TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 221184 131072 131072 10.03 81.14 + + Where we see that Linux, unlike HP-UX, may not return the same value +in a `getsockopt()' as was requested in the prior `setsockopt()'. + + This test is included more for benchmarking convenience than anything +else. + + +File: netperf.info, Node: TCP_SENDFILE, Next: UDP_STREAM, Prev: TCP_MAERTS, Up: Options common to TCP UDP and SCTP tests + +5.2.3 TCP_SENDFILE +------------------ + +The TCP_SENDFILE test is "just like" a *note TCP_STREAM:: test except +netperf the platform's `sendfile()' call instead of calling `send()'. +Often this results in a "zero-copy" operation where data is sent +directly from the filesystem buffer cache. This _should_ result in +lower CPU utilization and possibly higher throughput. If it does not, +then you may want to contact your vendor(s) because they have a problem +on their hands. + + Zero-copy mechanisms may also alter the characteristics (size and +number of buffers per) of packets passed to the NIC. In many stacks, +when a copy is performed, the stack can "reserve" space at the +beginning of the destination buffer for things like TCP, IP and Link +headers. This then has the packet contained in a single buffer which +can be easier to DMA to the NIC. When no copy is performed, there is +no opportunity to reserve space for headers and so a packet will be +contained in two or more buffers. + + As of some time before version 2.5.0, the *note global `-F' option: +Global Options. is no longer required for this test. If it is not +specified, netperf will create a temporary file, which it will delete +at the end of the test. If the `-F' option is specified it must +reference a file of at least the size of the send ring (*Note the +global `-W' option: Global Options.) multiplied by the send size (*Note +the test-specific `-m' option: Options common to TCP UDP and SCTP +tests.). All other TCP-specific options remain available and optional. + + In this first example: + $ netperf -H lag -F ../src/netperf -t TCP_SENDFILE -- -s 128K -S 128K + TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + alloc_sendfile_buf_ring: specified file too small. + file must be larger than send_width * send_size + + we see what happens when the file is too small. Here: + + $ netperf -H lag -F /boot/vmlinuz-2.6.8-1-686 -t TCP_SENDFILE -- -s 128K -S 128K + TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 131072 221184 221184 10.02 81.83 + + we resolve that issue by selecting a larger file. + + +File: netperf.info, Node: UDP_STREAM, Next: XTI_TCP_STREAM, Prev: TCP_SENDFILE, Up: Options common to TCP UDP and SCTP tests + +5.2.4 UDP_STREAM +---------------- + +A UDP_STREAM test is similar to a *note TCP_STREAM:: test except UDP is +used as the transport rather than TCP. + + A UDP_STREAM test has no end-to-end flow control - UDP provides none +and neither does netperf. However, if you wish, you can configure +netperf with `--enable-intervals=yes' to enable the global command-line +`-b' and `-w' options to pace bursts of traffic onto the network. + + This has a number of implications. + + The biggest of these implications is the data which is sent might not +be received by the remote. For this reason, the output of a UDP_STREAM +test shows both the sending and receiving throughput. On some +platforms, it may be possible for the sending throughput to be reported +as a value greater than the maximum rate of the link. This is common +when the CPU(s) are faster than the network and there is no +"intra-stack" flow-control. + + Here is an example of a UDP_STREAM test between two systems connected +by a 10 Gigabit Ethernet link: + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 32768 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Socket Message Elapsed Messages + Size Size Time Okay Errors Throughput + bytes bytes secs # # 10^6bits/sec + + 124928 32768 10.00 105672 0 2770.20 + 135168 10.00 104844 2748.50 + + The first line of numbers are statistics from the sending (netperf) +side. The second line of numbers are from the receiving (netserver) +side. In this case, 105672 - 104844 or 828 messages did not make it +all the way to the remote netserver process. + + If the value of the `-m' option is larger than the local send socket +buffer size (`-s' option) netperf will likely abort with an error +message about how the send call failed: + + netperf -t UDP_STREAM -H 192.168.2.125 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + udp_send: data send error: Message too long + + If the value of the `-m' option is larger than the remote socket +receive buffer, the reported receive throughput will likely be zero as +the remote UDP will discard the messages as being too large to fit into +the socket buffer. + + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 65000 -S 32768 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Socket Message Elapsed Messages + Size Size Time Okay Errors Throughput + bytes bytes secs # # 10^6bits/sec + + 124928 65000 10.00 53595 0 2786.99 + 65536 10.00 0 0.00 + + The example above was between a pair of systems running a "Linux" +kernel. Notice that the remote Linux system returned a value larger +than that passed-in to the `-S' option. In fact, this value was larger +than the message size set with the `-m' option. That the remote socket +buffer size is reported as 65536 bytes would suggest to any sane person +that a message of 65000 bytes would fit, but the socket isn't _really_ +65536 bytes, even though Linux is telling us so. Go figure. + + +File: netperf.info, Node: XTI_TCP_STREAM, Next: XTI_UDP_STREAM, Prev: UDP_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.5 XTI_TCP_STREAM +-------------------- + +An XTI_TCP_STREAM test is simply a *note TCP_STREAM:: test using the XTI +rather than BSD Sockets interface. The test-specific `-X ' +option can be used to specify the name of the local and/or remote XTI +device files, which is required by the `t_open()' call made by netperf +XTI tests. + + The XTI_TCP_STREAM test is only present if netperf was configured +with `--enable-xti=yes'. The remote netserver must have also been +configured with `--enable-xti=yes'. + + +File: netperf.info, Node: XTI_UDP_STREAM, Next: SCTP_STREAM, Prev: XTI_TCP_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.6 XTI_UDP_STREAM +-------------------- + +An XTI_UDP_STREAM test is simply a *note UDP_STREAM:: test using the XTI +rather than BSD Sockets Interface. The test-specific `-X ' +option can be used to specify the name of the local and/or remote XTI +device files, which is required by the `t_open()' call made by netperf +XTI tests. + + The XTI_UDP_STREAM test is only present if netperf was configured +with `--enable-xti=yes'. The remote netserver must have also been +configured with `--enable-xti=yes'. + + +File: netperf.info, Node: SCTP_STREAM, Next: DLCO_STREAM, Prev: XTI_UDP_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.7 SCTP_STREAM +----------------- + +An SCTP_STREAM test is essentially a *note TCP_STREAM:: test using the +SCTP rather than TCP. The `-D' option will set SCTP_NODELAY, which is +much like the TCP_NODELAY option for TCP. The `-C' option is not +applicable to an SCTP test as there is no corresponding SCTP_CORK +option. The author is still figuring-out what the test-specific `-N' +option does :) + + The SCTP_STREAM test is only present if netperf was configured with +`--enable-sctp=yes'. The remote netserver must have also been +configured with `--enable-sctp=yes'. + + +File: netperf.info, Node: DLCO_STREAM, Next: DLCL_STREAM, Prev: SCTP_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.8 DLCO_STREAM +----------------- + +A DLPI Connection Oriented Stream (DLCO_STREAM) test is very similar in +concept to a *note TCP_STREAM:: test. Both use reliable, +connection-oriented protocols. The DLPI test differs from the TCP test +in that its protocol operates only at the link-level and does not +include TCP-style segmentation and reassembly. This last difference +means that the value passed-in with the `-m' option must be less than +the interface MTU. Otherwise, the `-m' and `-M' options are just like +their TCP/UDP/SCTP counterparts. + + Other DLPI-specific options include: + +`-D ' + This option is used to provide the fully-qualified names for the + local and/or remote DLPI device files. The syntax is otherwise + identical to that of a "sizespec". + +`-p ' + This option is used to specify the local and/or remote DLPI PPA(s). + The PPA is used to identify the interface over which traffic is to + be sent/received. The syntax of a "ppaspec" is otherwise the same + as a "sizespec". + +`-s sap' + This option specifies the 802.2 SAP for the test. A SAP is + somewhat like either the port field of a TCP or UDP header or the + protocol field of an IP header. The specified SAP should not + conflict with any other active SAPs on the specified PPA's (`-p' + option). + +`-w ' + This option specifies the local send and receive window sizes in + units of frames on those platforms which support setting such + things. + +`-W ' + This option specifies the remote send and receive window sizes in + units of frames on those platforms which support setting such + things. + + The DLCO_STREAM test is only present if netperf was configured with +`--enable-dlpi=yes'. The remote netserver must have also been +configured with `--enable-dlpi=yes'. + + +File: netperf.info, Node: DLCL_STREAM, Next: STREAM_STREAM, Prev: DLCO_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.9 DLCL_STREAM +----------------- + +A DLPI ConnectionLess Stream (DLCL_STREAM) test is analogous to a *note +UDP_STREAM:: test in that both make use of unreliable/best-effort, +connection-less transports. The DLCL_STREAM test differs from the +*note UDP_STREAM:: test in that the message size (`-m' option) must +always be less than the link MTU as there is no IP-like fragmentation +and reassembly available and netperf does not presume to provide one. + + The test-specific command-line options for a DLCL_STREAM test are the +same as those for a *note DLCO_STREAM:: test. + + The DLCL_STREAM test is only present if netperf was configured with +`--enable-dlpi=yes'. The remote netserver must have also been +configured with `--enable-dlpi=yes'. + + +File: netperf.info, Node: STREAM_STREAM, Next: DG_STREAM, Prev: DLCL_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.10 STREAM_STREAM +-------------------- + +A Unix Domain Stream Socket Stream test (STREAM_STREAM) is similar in +concept to a *note TCP_STREAM:: test, but using Unix Domain sockets. +It is, naturally, limited to intra-machine traffic. A STREAM_STREAM +test shares the `-m', `-M', `-s' and `-S' options of the other _STREAM +tests. In a STREAM_STREAM test the `-p' option sets the directory in +which the pipes will be created rather than setting a port number. The +default is to create the pipes in the system default for the +`tempnam()' call. + + The STREAM_STREAM test is only present if netperf was configured with +`--enable-unixdomain=yes'. The remote netserver must have also been +configured with `--enable-unixdomain=yes'. + + +File: netperf.info, Node: DG_STREAM, Prev: STREAM_STREAM, Up: Options common to TCP UDP and SCTP tests + +5.2.11 DG_STREAM +---------------- + +A Unix Domain Datagram Socket Stream test (SG_STREAM) is very much like +a *note TCP_STREAM:: test except that message boundaries are preserved. +In this way, it may also be considered similar to certain flavors of +SCTP test which can also preserve message boundaries. + + All the options of a *note STREAM_STREAM:: test are applicable to a +DG_STREAM test. + + The DG_STREAM test is only present if netperf was configured with +`--enable-unixdomain=yes'. The remote netserver must have also been +configured with `--enable-unixdomain=yes'. + + +File: netperf.info, Node: Using Netperf to Measure Request/Response, Next: Using Netperf to Measure Aggregate Performance, Prev: Using Netperf to Measure Bulk Data Transfer, Up: Top + +6 Using Netperf to Measure Request/Response +******************************************* + +Request/response performance is often overlooked, yet it is just as +important as bulk-transfer performance. While things like larger +socket buffers and TCP windows, and stateless offloads like TSO and LRO +can cover a multitude of latency and even path-length sins, those sins +cannot easily hide from a request/response test. The convention for a +request/response test is to have a _RR suffix. There are however a few +"request/response" tests that have other suffixes. + + A request/response test, particularly synchronous, one transaction at +a time test such as those found by default in netperf, is particularly +sensitive to the path-length of the networking stack. An _RR test can +also uncover those platforms where the NICs are strapped by default +with overbearing interrupt avoidance settings in an attempt to increase +the bulk-transfer performance (or rather, decrease the CPU utilization +of a bulk-transfer test). This sensitivity is most acute for small +request and response sizes, such as the single-byte default for a +netperf _RR test. + + While a bulk-transfer test reports its results in units of bits or +bytes transferred per second, by default a mumble_RR test reports +transactions per second where a transaction is defined as the completed +exchange of a request and a response. One can invert the transaction +rate to arrive at the average round-trip latency. If one is confident +about the symmetry of the connection, the average one-way latency can +be taken as one-half the average round-trip latency. As of version +2.5.0 (actually slightly before) netperf still does not do the latter, +but will do the former if one sets the verbosity to 2 for a classic +netperf test, or includes the appropriate *note output selector: Omni +Output Selectors. in an *note omni test: The Omni Tests. It will also +allow the user to switch the throughput units from transactions per +second to bits or bytes per second with the global `-f' option. + +* Menu: + +* Issues in Request/Response:: +* Options Common to TCP UDP and SCTP _RR tests:: + + +File: netperf.info, Node: Issues in Request/Response, Next: Options Common to TCP UDP and SCTP _RR tests, Prev: Using Netperf to Measure Request/Response, Up: Using Netperf to Measure Request/Response + +6.1 Issues in Request/Response +============================== + +Most if not all the *note Issues in Bulk Transfer:: apply to +request/response. The issue of round-trip latency is even more +important as netperf generally only has one transaction outstanding at +a time. + + A single instance of a one transaction outstanding _RR test should +_never_ completely saturate the CPU of a system. If testing between +otherwise evenly matched systems, the symmetric nature of a _RR test +with equal request and response sizes should result in equal CPU +loading on both systems. However, this may not hold true on MP systems, +particularly if one CPU binds the netperf and netserver differently via +the global `-T' option. + + For smaller request and response sizes packet loss is a bigger issue +as there is no opportunity for a "fast retransmit" or retransmission +prior to a retransmission timer expiring. + + Virtualization may considerably increase the effective path length of +a networking stack. While this may not preclude achieving link-rate on +a comparatively slow link (eg 1 Gigabit Ethernet) on a _STREAM test, it +can show-up as measurably fewer transactions per second on an _RR test. +However, this may still be masked by interrupt coalescing in the +NIC/driver. + + Certain NICs have ways to minimize the number of interrupts sent to +the host. If these are strapped badly they can significantly reduce +the performance of something like a single-byte request/response test. +Such setups are distinguished by seriously low reported CPU utilization +and what seems like a low (even if in the thousands) transaction per +second rate. Also, if you run such an OS/driver combination on faster +or slower hardware and do not see a corresponding change in the +transaction rate, chances are good that the driver is strapping the NIC +with aggressive interrupt avoidance settings. Good for bulk +throughput, but bad for latency. + + Some drivers may try to automagically adjust the interrupt avoidance +settings. If they are not terribly good at it, you will see +considerable run-to-run variation in reported transaction rates. +Particularly if you "mix-up" _STREAM and _RR tests. + + +File: netperf.info, Node: Options Common to TCP UDP and SCTP _RR tests, Prev: Issues in Request/Response, Up: Using Netperf to Measure Request/Response + +6.2 Options Common to TCP UDP and SCTP _RR tests +================================================ + +Many "test-specific" options are actually common across the different +tests. For those tests involving TCP, UDP and SCTP, whether using the +BSD Sockets or the XTI interface those common options include: + +`-h' + Display the test-suite-specific usage string and exit. For a TCP_ + or UDP_ test this will be the usage string from the source file + `nettest_bsd.c'. For an XTI_ test, this will be the usage string + from the source file `src/nettest_xti.c'. For an SCTP test, this + will be the usage string from the source file `src/nettest_sctp.c'. + +`-H ' + Normally, the remote hostname|IP and address family information is + inherited from the settings for the control connection (eg global + command-line `-H', `-4' and/or `-6' options. The test-specific + `-H' will override those settings for the data (aka test) + connection only. Settings for the control connection are left + unchanged. This might be used to cause the control and data + connections to take different paths through the network. + +`-L ' + The test-specific `-L' option is identical to the test-specific + `-H' option except it affects the local hostname|IP and address + family information. As with its global command-line counterpart, + this is generally only useful when measuring though those evil, + end-to-end breaking things called firewalls. + +`-P ' + Set the local and/or remote port numbers for the data connection. + +`-r ' + This option sets the request (first value) and/or response (second + value) sizes for an _RR test. By default the units are bytes, but a + suffix of "G," "M," or "K" will specify the units to be 2^30 (GB), + 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," "m" or "k" + will specify units of 10^9, 10^6 or 10^3 bytes respectively. For + example: + `-r 128,16K' + Will set the request size to 128 bytes and the response size to 16 + KB or 16384 bytes. [Default: 1 - a single-byte request and + response ] + +`-s ' + This option sets the local (netperf) send and receive socket buffer + sizes for the data connection to the value(s) specified. Often, + this will affect the advertised and/or effective TCP or other + window, but on some platforms it may not. By default the units are + bytes, but a suffix of "G," "M," or "K" will specify the units to + be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of + "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 bytes + respectively. For example: + `-s 128K' + Will request the local send (netperf) and receive socket buffer + sizes to be 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. When running under Windows a value of 0 + may be used which will be an indication to the stack the user + wants to enable a form of copy avoidance. [Default: -1 - use the + system's default socket buffer sizes] + +`-S ' + This option sets the remote (netserver) send and/or receive socket + buffer sizes for the data connection to the value(s) specified. + Often, this will affect the advertised and/or effective TCP or + other window, but on some platforms it may not. By default the + units are bytes, but a suffix of "G," "M," or "K" will specify the + units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-S 128K' + Will request the remote (netserver) send and receive socket buffer + sizes to be 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. When running under Windows a value of 0 + may be used which will be an indication to the stack the user + wants to enable a form of copy avoidance. [Default: -1 - use the + system's default socket buffer sizes] + +`-4' + Set the local and remote address family for the data connection to + AF_INET - ie use IPv4 addressing only. Just as with their global + command-line counterparts the last of the `-4', `-6', `-H' or `-L' + option wins for their respective address families. + +`-6' + This option is identical to its `-4' cousin, but requests IPv6 + addresses for the local and remote ends of the data connection. + + +* Menu: + +* TCP_RR:: +* TCP_CC:: +* TCP_CRR:: +* UDP_RR:: +* XTI_TCP_RR:: +* XTI_TCP_CC:: +* XTI_TCP_CRR:: +* XTI_UDP_RR:: +* DLCL_RR:: +* DLCO_RR:: +* SCTP_RR:: + + +File: netperf.info, Node: TCP_RR, Next: TCP_CC, Prev: Options Common to TCP UDP and SCTP _RR tests, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.1 TCP_RR +------------ + +A TCP_RR (TCP Request/Response) test is requested by passing a value of +"TCP_RR" to the global `-t' command-line option. A TCP_RR test can be +thought-of as a user-space to user-space `ping' with no think time - it +is by default a synchronous, one transaction at a time, +request/response test. + + The transaction rate is the number of complete transactions exchanged +divided by the length of time it took to perform those transactions. + + If the two Systems Under Test are otherwise identical, a TCP_RR test +with the same request and response size should be symmetric - it should +not matter which way the test is run, and the CPU utilization measured +should be virtually the same on each system. If not, it suggests that +the CPU utilization mechanism being used may have some, well, issues +measuring CPU utilization completely and accurately. + + Time to establish the TCP connection is not counted in the result. +If you want connection setup overheads included, you should consider the +*note TPC_CC: TCP_CC. or *note TCP_CRR: TCP_CRR. tests. + + If specifying the `-D' option to set TCP_NODELAY and disable the +Nagle Algorithm increases the transaction rate reported by a TCP_RR +test, it implies the stack(s) over which the TCP_RR test is running +have a broken implementation of the Nagle Algorithm. Likely as not +they are interpreting Nagle on a segment by segment basis rather than a +user send by user send basis. You should contact your stack vendor(s) +to report the problem to them. + + Here is an example of two systems running a basic TCP_RR test over a +10 Gigabit Ethernet link: + + netperf -t TCP_RR -H 192.168.2.125 + TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 29150.15 + 16384 87380 + + In this example the request and response sizes were one byte, the +socket buffers were left at their defaults, and the test ran for all of +10 seconds. The transaction per second rate was rather good for the +time :) + + +File: netperf.info, Node: TCP_CC, Next: TCP_CRR, Prev: TCP_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.2 TCP_CC +------------ + +A TCP_CC (TCP Connect/Close) test is requested by passing a value of +"TCP_CC" to the global `-t' option. A TCP_CC test simply measures how +fast the pair of systems can open and close connections between one +another in a synchronous (one at a time) manner. While this is +considered an _RR test, no request or response is exchanged over the +connection. + + The issue of TIME_WAIT reuse is an important one for a TCP_CC test. +Basically, TIME_WAIT reuse is when a pair of systems churn through +connections fast enough that they wrap the 16-bit port number space in +less time than the length of the TIME_WAIT state. While it is indeed +theoretically possible to "reuse" a connection in TIME_WAIT, the +conditions under which such reuse is possible are rather rare. An +attempt to reuse a connection in TIME_WAIT can result in a non-trivial +delay in connection establishment. + + Basically, any time the connection churn rate approaches: + + Sizeof(clientportspace) / Lengthof(TIME_WAIT) + + there is the risk of TIME_WAIT reuse. To minimize the chances of +this happening, netperf will by default select its own client port +numbers from the range of 5000 to 65535. On systems with a 60 second +TIME_WAIT state, this should allow roughly 1000 transactions per +second. The size of the client port space used by netperf can be +controlled via the test-specific `-p' option, which takes a "sizespec" +as a value setting the minimum (first value) and maximum (second value) +port numbers used by netperf at the client end. + + Since no requests or responses are exchanged during a TCP_CC test, +only the `-H', `-L', `-4' and `-6' of the "common" test-specific +options are likely to have an effect, if any, on the results. The `-s' +and `-S' options _may_ have some effect if they alter the number and/or +type of options carried in the TCP SYNchronize segments, such as Window +Scaling or Timestamps. The `-P' and `-r' options are utterly ignored. + + Since connection establishment and tear-down for TCP is not +symmetric, a TCP_CC test is not symmetric in its loading of the two +systems under test. + + +File: netperf.info, Node: TCP_CRR, Next: UDP_RR, Prev: TCP_CC, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.3 TCP_CRR +------------- + +The TCP Connect/Request/Response (TCP_CRR) test is requested by passing +a value of "TCP_CRR" to the global `-t' command-line option. A TCP_CRR +test is like a merger of a *note TCP_RR:: and *note TCP_CC:: test which +measures the performance of establishing a connection, exchanging a +single request/response transaction, and tearing-down that connection. +This is very much like what happens in an HTTP 1.0 or HTTP 1.1 +connection when HTTP Keepalives are not used. In fact, the TCP_CRR +test was added to netperf to simulate just that. + + Since a request and response are exchanged the `-r', `-s' and `-S' +options can have an effect on the performance. + + The issue of TIME_WAIT reuse exists for the TCP_CRR test just as it +does for the TCP_CC test. Similarly, since connection establishment +and tear-down is not symmetric, a TCP_CRR test is not symmetric even +when the request and response sizes are the same. + + +File: netperf.info, Node: UDP_RR, Next: XTI_TCP_RR, Prev: TCP_CRR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.4 UDP_RR +------------ + +A UDP Request/Response (UDP_RR) test is requested by passing a value of +"UDP_RR" to a global `-t' option. It is very much the same as a TCP_RR +test except UDP is used rather than TCP. + + UDP does not provide for retransmission of lost UDP datagrams, and +netperf does not add anything for that either. This means that if +_any_ request or response is lost, the exchange of requests and +responses will stop from that point until the test timer expires. +Netperf will not really "know" this has happened - the only symptom +will be a low transaction per second rate. If `--enable-burst' was +included in the `configure' command and a test-specific `-b' option +used, the UDP_RR test will "survive" the loss of requests and responses +until the sum is one more than the value passed via the `-b' option. It +will though almost certainly run more slowly. + + The netperf side of a UDP_RR test will call `connect()' on its data +socket and thenceforth use the `send()' and `recv()' socket calls. The +netserver side of a UDP_RR test will not call `connect()' and will use +`recvfrom()' and `sendto()' calls. This means that even if the request +and response sizes are the same, a UDP_RR test is _not_ symmetric in +its loading of the two systems under test. + + Here is an example of a UDP_RR test between two otherwise identical +two-CPU systems joined via a 1 Gigabit Ethernet network: + + $ netperf -T 1 -H 192.168.1.213 -t UDP_RR -c -C + UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.213 (192.168.1.213) port 0 AF_INET + Local /Remote + Socket Size Request Resp. Elapsed Trans. CPU CPU S.dem S.dem + Send Recv Size Size Time Rate local remote local remote + bytes bytes bytes bytes secs. per sec % I % I us/Tr us/Tr + + 65535 65535 1 1 10.01 15262.48 13.90 16.11 18.221 21.116 + 65535 65535 + + This example includes the `-c' and `-C' options to enable CPU +utilization reporting and shows the asymmetry in CPU loading. The `-T' +option was used to make sure netperf and netserver ran on a given CPU +and did not move around during the test. + + +File: netperf.info, Node: XTI_TCP_RR, Next: XTI_TCP_CC, Prev: UDP_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.5 XTI_TCP_RR +---------------- + +An XTI_TCP_RR test is essentially the same as a *note TCP_RR:: test only +using the XTI rather than BSD Sockets interface. It is requested by +passing a value of "XTI_TCP_RR" to the `-t' global command-line option. + + The test-specific options for an XTI_TCP_RR test are the same as +those for a TCP_RR test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + + +File: netperf.info, Node: XTI_TCP_CC, Next: XTI_TCP_CRR, Prev: XTI_TCP_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.6 XTI_TCP_CC +---------------- + +An XTI_TCP_CC test is essentially the same as a *note TCP_CC: TCP_CC. +test, only using the XTI rather than BSD Sockets interface. + + The test-specific options for an XTI_TCP_CC test are the same as +those for a TCP_CC test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + + +File: netperf.info, Node: XTI_TCP_CRR, Next: XTI_UDP_RR, Prev: XTI_TCP_CC, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.7 XTI_TCP_CRR +----------------- + +The XTI_TCP_CRR test is essentially the same as a *note TCP_CRR: +TCP_CRR. test, only using the XTI rather than BSD Sockets interface. + + The test-specific options for an XTI_TCP_CRR test are the same as +those for a TCP_RR test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + + +File: netperf.info, Node: XTI_UDP_RR, Next: DLCL_RR, Prev: XTI_TCP_CRR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.8 XTI_UDP_RR +---------------- + +An XTI_UDP_RR test is essentially the same as a UDP_RR test only using +the XTI rather than BSD Sockets interface. It is requested by passing +a value of "XTI_UDP_RR" to the `-t' global command-line option. + + The test-specific options for an XTI_UDP_RR test are the same as +those for a UDP_RR test with the addition of the `-X ' option +to specify the name of the local and/or remote XTI device file(s). + + +File: netperf.info, Node: DLCL_RR, Next: DLCO_RR, Prev: XTI_UDP_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.9 DLCL_RR +------------- + + +File: netperf.info, Node: DLCO_RR, Next: SCTP_RR, Prev: DLCL_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.10 DLCO_RR +-------------- + + +File: netperf.info, Node: SCTP_RR, Prev: DLCO_RR, Up: Options Common to TCP UDP and SCTP _RR tests + +6.2.11 SCTP_RR +-------------- + + +File: netperf.info, Node: Using Netperf to Measure Aggregate Performance, Next: Using Netperf to Measure Bidirectional Transfer, Prev: Using Netperf to Measure Request/Response, Up: Top + +7 Using Netperf to Measure Aggregate Performance +************************************************ + +Ultimately, *note Netperf4: Netperf4. will be the preferred benchmark to +use when one wants to measure aggregate performance because netperf has +no support for explicit synchronization of concurrent tests. Until +netperf4 is ready for prime time, one can make use of the heuristics +and procedures mentioned here for the 85% solution. + + There are a few ways to measure aggregate performance with netperf. +The first is to run multiple, concurrent netperf tests and can be +applied to any of the netperf tests. The second is to configure +netperf with `--enable-burst' and is applicable to the TCP_RR test. The +third is a variation on the first. + +* Menu: + +* Running Concurrent Netperf Tests:: +* Using --enable-burst:: +* Using --enable-demo:: + + +File: netperf.info, Node: Running Concurrent Netperf Tests, Next: Using --enable-burst, Prev: Using Netperf to Measure Aggregate Performance, Up: Using Netperf to Measure Aggregate Performance + +7.1 Running Concurrent Netperf Tests +==================================== + +*note Netperf4: Netperf4. is the preferred benchmark to use when one +wants to measure aggregate performance because netperf has no support +for explicit synchronization of concurrent tests. This leaves netperf2 +results vulnerable to "skew" errors. + + However, since there are times when netperf4 is unavailable it may be +necessary to run netperf. The skew error can be minimized by making use +of the confidence interval functionality. Then one simply launches +multiple tests from the shell using a `for' loop or the like: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 & + done + + which will run four, concurrent *note TCP_STREAM: TCP_STREAM. tests +from the system on which it is executed to tardy.cup.hp.com. Each +concurrent netperf will iterate 10 times thanks to the `-i' option and +will omit the test banners (option `-P') for brevity. The output looks +something like this: + + 87380 16384 16384 10.03 235.15 + 87380 16384 16384 10.03 235.09 + 87380 16384 16384 10.03 235.38 + 87380 16384 16384 10.03 233.96 + + We can take the sum of the results and be reasonably confident that +the aggregate performance was 940 Mbits/s. This method does not need +to be limited to one system speaking to one other system. It can be +extended to one system talking to N other systems. It could be as +simple as: + for host in 'foo bar baz bing' + do + netperf -t TCP_STREAM -H $hosts -i 10 -P 0 & + done + A more complicated/sophisticated example can be found in +`doc/examples/runemomniagg2.sh' where. + + If you see warnings about netperf not achieving the confidence +intervals, the best thing to do is to increase the number of iterations +with `-i' and/or increase the run length of each iteration with `-l'. + + You can also enable local (`-c') and/or remote (`-C') CPU +utilization: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 -c -C & + done + + 87380 16384 16384 10.03 235.47 3.67 5.09 10.226 14.180 + 87380 16384 16384 10.03 234.73 3.67 5.09 10.260 14.225 + 87380 16384 16384 10.03 234.64 3.67 5.10 10.263 14.231 + 87380 16384 16384 10.03 234.87 3.67 5.09 10.253 14.215 + + If the CPU utilizations reported for the same system are the same or +very very close you can be reasonably confident that skew error is +minimized. Presumably one could then omit `-i' but that is not +advised, particularly when/if the CPU utilization approaches 100 +percent. In the example above we see that the CPU utilization on the +local system remains the same for all four tests, and is only off by +0.01 out of 5.09 on the remote system. As the number of CPUs in the +system increases, and so too the odds of saturating a single CPU, the +accuracy of similar CPU utilization implying little skew error is +diminished. This is also the case for those increasingly rare single +CPU systems if the utilization is reported as 100% or very close to it. + + NOTE: It is very important to remember that netperf is calculating + system-wide CPU utilization. When calculating the service demand + (those last two columns in the output above) each netperf assumes + it is the only thing running on the system. This means that for + concurrent tests the service demands reported by netperf will be + wrong. One has to compute service demands for concurrent tests by + hand. + + If you wish you can add a unique, global `-B' option to each command +line to append the given string to the output: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -B "this is test $i" -i 10 -P 0 & + done + + 87380 16384 16384 10.03 234.90 this is test 4 + 87380 16384 16384 10.03 234.41 this is test 2 + 87380 16384 16384 10.03 235.26 this is test 1 + 87380 16384 16384 10.03 235.09 this is test 3 + + You will notice that the tests completed in an order other than they +were started from the shell. This underscores why there is a threat of +skew error and why netperf4 will eventually be the preferred tool for +aggregate tests. Even if you see the Netperf Contributing Editor +acting to the contrary!-) + +* Menu: + +* Issues in Running Concurrent Tests:: + + +File: netperf.info, Node: Issues in Running Concurrent Tests, Prev: Running Concurrent Netperf Tests, Up: Running Concurrent Netperf Tests + +7.1.1 Issues in Running Concurrent Tests +---------------------------------------- + +In addition to the aforementioned issue of skew error, there can be +other issues to consider when running concurrent netperf tests. + + For example, when running concurrent tests over multiple interfaces, +one is not always assured that the traffic one thinks went over a given +interface actually did so. In particular, the Linux networking stack +takes a particularly strong stance on its following the so called `weak +end system model'. As such, it is willing to answer ARP requests for +any of its local IP addresses on any of its interfaces. If multiple +interfaces are connected to the same broadcast domain, then even if +they are configured into separate IP subnets there is no a priori way +of knowing which interface was actually used for which connection(s). +This can be addressed by setting the `arp_ignore' sysctl before +configuring interfaces. + + As it is quite important, we will repeat that it is very important to +remember that each concurrent netperf instance is calculating +system-wide CPU utilization. When calculating the service demand each +netperf assumes it is the only thing running on the system. This means +that for concurrent tests the service demands reported by netperf will +be wrong. One has to compute service demands for concurrent tests by +hand + + Running concurrent tests can also become difficult when there is no +one "central" node. Running tests between pairs of systems may be more +difficult, calling for remote shell commands in the for loop rather +than netperf commands. This introduces more skew error, which the +confidence intervals may not be able to sufficiently mitigate. One +possibility is to actually run three consecutive netperf tests on each +node - the first being a warm-up, the last being a cool-down. The idea +then is to ensure that the time it takes to get all the netperfs +started is less than the length of the first netperf command in the +sequence of three. Similarly, it assumes that all "middle" netperfs +will complete before the first of the "last" netperfs complete. + + +File: netperf.info, Node: Using --enable-burst, Next: Using --enable-demo, Prev: Running Concurrent Netperf Tests, Up: Using Netperf to Measure Aggregate Performance + +7.2 Using - -enable-burst +========================= + +Starting in version 2.5.0 `--enable-burst=yes' is the default, which +means one no longer must: + + configure --enable-burst + + To have burst-mode functionality present in netperf. This enables a +test-specific `-b num' option in *note TCP_RR: TCP_RR, *note UDP_RR: +UDP_RR. and *note omni: The Omni Tests. tests. + + Normally, netperf will attempt to ramp-up the number of outstanding +requests to `num' plus one transactions in flight at one time. The +ramp-up is to avoid transactions being smashed together into a smaller +number of segments when the transport's congestion window (if any) is +smaller at the time than what netperf wants to have outstanding at one +time. If, however, the user specifies a negative value for `num' this +ramp-up is bypassed and the burst of sends is made without +consideration of transport congestion window. + + This burst-mode is used as an alternative to or even in conjunction +with multiple-concurrent _RR tests and as a way to implement a +single-connection, bidirectional bulk-transfer test. When run with +just a single instance of netperf, increasing the burst size can +determine the maximum number of transactions per second which can be +serviced by a single process: + + for b in 0 1 2 4 8 16 32 + do + netperf -v 0 -t TCP_RR -B "-b $b" -H hpcpc108 -P 0 -- -b $b + done + + 9457.59 -b 0 + 9975.37 -b 1 + 10000.61 -b 2 + 20084.47 -b 4 + 29965.31 -b 8 + 71929.27 -b 16 + 109718.17 -b 32 + + The global `-v' and `-P' options were used to minimize the output to +the single figure of merit which in this case the transaction rate. +The global `-B' option was used to more clearly label the output, and +the test-specific `-b' option enabled by `--enable-burst' increase the +number of transactions in flight at one time. + + Now, since the test-specific `-D' option was not specified to set +TCP_NODELAY, the stack was free to "bundle" requests and/or responses +into TCP segments as it saw fit, and since the default request and +response size is one byte, there could have been some considerable +bundling even in the absence of transport congestion window issues. If +one wants to try to achieve a closer to one-to-one correspondence +between a request and response and a TCP segment, add the test-specific +`-D' option: + + for b in 0 1 2 4 8 16 32 + do + netperf -v 0 -t TCP_RR -B "-b $b -D" -H hpcpc108 -P 0 -- -b $b -D + done + + 8695.12 -b 0 -D + 19966.48 -b 1 -D + 20691.07 -b 2 -D + 49893.58 -b 4 -D + 62057.31 -b 8 -D + 108416.88 -b 16 -D + 114411.66 -b 32 -D + + You can see that this has a rather large effect on the reported +transaction rate. In this particular instance, the author believes it +relates to interactions between the test and interrupt coalescing +settings in the driver for the NICs used. + + NOTE: Even if you set the `-D' option that is still not a + guarantee that each transaction is in its own TCP segments. You + should get into the habit of verifying the relationship between the + transaction rate and the packet rate via other means. + + You can also combine `--enable-burst' functionality with concurrent +netperf tests. This would then be an "aggregate of aggregates" if you +like: + + + for i in 1 2 3 4 + do + netperf -H hpcpc108 -v 0 -P 0 -i 10 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & + done + + 46668.38 aggregate 4 -b 8 -D + 44890.64 aggregate 2 -b 8 -D + 45702.04 aggregate 1 -b 8 -D + 46352.48 aggregate 3 -b 8 -D + + Since each netperf did hit the confidence intervals, we can be +reasonably certain that the aggregate transaction per second rate was +the sum of all four concurrent tests, or something just shy of 184,000 +transactions per second. To get some idea if that was also the packet +per second rate, we could bracket that `for' loop with something to +gather statistics and run the results through beforeafter +(ftp://ftp.cup.hp.com/dist/networking/tools): + + /usr/sbin/ethtool -S eth2 > before + for i in 1 2 3 4 + do + netperf -H 192.168.2.108 -l 60 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & + done + wait + /usr/sbin/ethtool -S eth2 > after + + 52312.62 aggregate 2 -b 8 -D + 50105.65 aggregate 4 -b 8 -D + 50890.82 aggregate 1 -b 8 -D + 50869.20 aggregate 3 -b 8 -D + + beforeafter before after > delta + + grep packets delta + rx_packets: 12251544 + tx_packets: 12251550 + + This example uses `ethtool' because the system being used is running +Linux. Other platforms have other tools - for example HP-UX has +lanadmin: + + lanadmin -g mibstats + + and of course one could instead use `netstat'. + + The `wait' is important because we are launching concurrent netperfs +in the background. Without it, the second ethtool command would be run +before the tests finished and perhaps even before the last of them got +started! + + The sum of the reported transaction rates is 204178 over 60 seconds, +which is a total of 12250680 transactions. Each transaction is the +exchange of a request and a response, so we multiply that by 2 to +arrive at 24501360. + + The sum of the ethtool stats is 24503094 packets which matches what +netperf was reporting very well. + + Had the request or response size differed, we would need to know how +it compared with the "MSS" for the connection. + + Just for grins, here is the exercise repeated, using `netstat' +instead of `ethtool' + + netstat -s -t > before + for i in 1 2 3 4 + do + netperf -l 60 -H 192.168.2.108 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & done + wait + netstat -s -t > after + + 51305.88 aggregate 4 -b 8 -D + 51847.73 aggregate 2 -b 8 -D + 50648.19 aggregate 3 -b 8 -D + 53605.86 aggregate 1 -b 8 -D + + beforeafter before after > delta + + grep segments delta + 12445708 segments received + 12445730 segments send out + 1 segments retransmited + 0 bad segments received. + + The sums are left as an exercise to the reader :) + + Things become considerably more complicated if there are non-trvial +packet losses and/or retransmissions. + + Of course all this checking is unnecessary if the test is a UDP_RR +test because UDP "never" aggregates multiple sends into the same UDP +datagram, and there are no ACKnowledgements in UDP. The loss of a +single request or response will not bring a "burst" UDP_RR test to a +screeching halt, but it will reduce the number of transactions +outstanding at any one time. A "burst" UDP_RR test will come to a halt +if the sum of the lost requests and responses reaches the value +specified in the test-specific `-b' option. + + +File: netperf.info, Node: Using --enable-demo, Prev: Using --enable-burst, Up: Using Netperf to Measure Aggregate Performance + +7.3 Using - -enable-demo +======================== + +One can + configure --enable-demo + and compile netperf to enable netperf to emit "interim results" at +semi-regular intervals. This enables a global `-D' option which takes +a reporting interval as an argument. With that specified, the output +of netperf will then look something like + + $ src/netperf -D 1.25 + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain () port 0 AF_INET : demo + Interim result: 25425.52 10^6bits/s over 1.25 seconds ending at 1327962078.405 + Interim result: 25486.82 10^6bits/s over 1.25 seconds ending at 1327962079.655 + Interim result: 25474.96 10^6bits/s over 1.25 seconds ending at 1327962080.905 + Interim result: 25523.49 10^6bits/s over 1.25 seconds ending at 1327962082.155 + Interim result: 25053.57 10^6bits/s over 1.27 seconds ending at 1327962083.429 + Interim result: 25349.64 10^6bits/s over 1.25 seconds ending at 1327962084.679 + Interim result: 25292.84 10^6bits/s over 1.25 seconds ending at 1327962085.932 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 25375.66 + The units of the "Interim result" lines will follow the units +selected via the global `-f' option. If the test-specific `-o' option +is specified on the command line, the format will be CSV: + ... + 2978.81,MBytes/s,1.25,1327962298.035 + ... + If the test-specific `-k' option is used the format will be keyval +with each keyval being given an index: + ... + NETPERF_INTERIM_RESULT[2]=25.00 + NETPERF_UNITS[2]=10^9bits/s + NETPERF_INTERVAL[2]=1.25 + NETPERF_ENDING[2]=1327962357.249 + ... + The expectation is it may be easier to utilize the keyvals if they +have indices. + + But how does this help with aggregate tests? Well, what one can do +is start the netperfs via a script, giving each a Very Long (tm) run +time. Direct the output to a file per instance. Then, once all the +netperfs have been started, take a timestamp and wait for some desired +test interval. Once that interval expires take another timestamp and +then start terminating the netperfs by sending them a SIGALRM signal +via the likes of the `kill' or `pkill' command. The netperfs will +terminate and emit the rest of the "usual" output, and you can then +bring the files to a central location for post processing to find the +aggregate performance over the "test interval." + + This method has the advantage that it does not require advance +knowledge of how long it takes to get netperf tests started and/or +stopped. It does though require sufficiently synchronized clocks on +all the test systems. + + While calls to get the current time can be inexpensive, that neither +has been nor is universally true. For that reason netperf tries to +minimize the number of such "timestamping" calls (eg `gettimeofday') +calls it makes when in demo mode. Rather than take a timestamp after +each `send' or `recv' call completes netperf tries to guess how many +units of work will be performed over the desired interval. Only once +that many units of work have been completed will netperf check the +time. If the reporting interval has passed, netperf will emit an +"interim result." If the interval has not passed, netperf will update +its estimate for units and continue. + + After a bit of thought one can see that if things "speed-up" netperf +will still honor the interval. However, if things "slow-down" netperf +may be late with an "interim result." Here is an example of both of +those happening during a test - with the interval being honored while +throughput increases, and then about half-way through when another +netperf (not shown) is started we see things slowing down and netperf +not hitting the interval as desired. + $ src/netperf -D 2 -H tardy.hpl.hp.com -l 20 + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com () port 0 AF_INET : demo + Interim result: 36.46 10^6bits/s over 2.01 seconds ending at 1327963880.565 + Interim result: 59.19 10^6bits/s over 2.00 seconds ending at 1327963882.569 + Interim result: 73.39 10^6bits/s over 2.01 seconds ending at 1327963884.576 + Interim result: 84.01 10^6bits/s over 2.03 seconds ending at 1327963886.603 + Interim result: 75.63 10^6bits/s over 2.21 seconds ending at 1327963888.814 + Interim result: 55.52 10^6bits/s over 2.72 seconds ending at 1327963891.538 + Interim result: 70.94 10^6bits/s over 2.11 seconds ending at 1327963893.650 + Interim result: 80.66 10^6bits/s over 2.13 seconds ending at 1327963895.777 + Interim result: 86.42 10^6bits/s over 2.12 seconds ending at 1327963897.901 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 20.34 68.87 + So long as your post-processing mechanism can account for that, there +should be no problem. As time passes there may be changes to try to +improve the netperf's honoring the interval but one should not ass-u-me +it will always do so. One should not assume the precision will remain +fixed - future versions may change it - perhaps going beyond tenths of +seconds in reporting the interval length etc. + + +File: netperf.info, Node: Using Netperf to Measure Bidirectional Transfer, Next: The Omni Tests, Prev: Using Netperf to Measure Aggregate Performance, Up: Top + +8 Using Netperf to Measure Bidirectional Transfer +************************************************* + +There are two ways to use netperf to measure the performance of +bidirectional transfer. The first is to run concurrent netperf tests +from the command line. The second is to configure netperf with +`--enable-burst' and use a single instance of the *note TCP_RR: TCP_RR. +test. + + While neither method is more "correct" than the other, each is doing +so in different ways, and that has possible implications. For +instance, using the concurrent netperf test mechanism means that +multiple TCP connections and multiple processes are involved, whereas +using the single instance of TCP_RR there is only one TCP connection +and one process on each end. They may behave differently, especially +on an MP system. + +* Menu: + +* Bidirectional Transfer with Concurrent Tests:: +* Bidirectional Transfer with TCP_RR:: +* Implications of Concurrent Tests vs Burst Request/Response:: + + +File: netperf.info, Node: Bidirectional Transfer with Concurrent Tests, Next: Bidirectional Transfer with TCP_RR, Prev: Using Netperf to Measure Bidirectional Transfer, Up: Using Netperf to Measure Bidirectional Transfer + +8.1 Bidirectional Transfer with Concurrent Tests +================================================ + +If we had two hosts Fred and Ethel, we could simply run a netperf *note +TCP_STREAM: TCP_STREAM. test on Fred pointing at Ethel, and a +concurrent netperf TCP_STREAM test on Ethel pointing at Fred, but since +there are no mechanisms to synchronize netperf tests and we would be +starting tests from two different systems, there is a considerable risk +of skew error. + + Far better would be to run simultaneous TCP_STREAM and *note +TCP_MAERTS: TCP_MAERTS. tests from just one system, using the concepts +and procedures outlined in *note Running Concurrent Netperf Tests: +Running Concurrent Netperf Tests. Here then is an example: + + for i in 1 + do + netperf -H 192.168.2.108 -t TCP_STREAM -B "outbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & + netperf -H 192.168.2.108 -t TCP_MAERTS -B "inbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & + done + + 892.66 outbound + 891.34 inbound + + We have used a `for' loop in the shell with just one iteration +because that will be much easier to get both tests started at more or +less the same time than doing it by hand. The global `-P' and `-v' +options are used because we aren't interested in anything other than +the throughput, and the global `-B' option is used to tag each output +so we know which was inbound and which outbound relative to the system +on which we were running netperf. Of course that sense is switched on +the system running netserver :) The use of the global `-i' option is +explained in *note Running Concurrent Netperf Tests: Running Concurrent +Netperf Tests. + + Beginning with version 2.5.0 we can accomplish a similar result with +the *note the omni tests: The Omni Tests. and *note output selectors: +Omni Output Selectors.: + + for i in 1 + do + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d stream -s 256K -S 256K -o throughput,direction & + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d maerts -s 256K -S 256K -o throughput,direction & + done + + 805.26,Receive + 828.54,Send + + +File: netperf.info, Node: Bidirectional Transfer with TCP_RR, Next: Implications of Concurrent Tests vs Burst Request/Response, Prev: Bidirectional Transfer with Concurrent Tests, Up: Using Netperf to Measure Bidirectional Transfer + +8.2 Bidirectional Transfer with TCP_RR +====================================== + +Starting with version 2.5.0 the `--enable-burst' configure option +defaults to `yes', and starting some time before version 2.5.0 but +after 2.4.0 the global `-f' option would affect the "throughput" +reported by request/response tests. If one uses the test-specific `-b' +option to have several "transactions" in flight at one time and the +test-specific `-r' option to increase their size, the test looks more +and more like a single-connection bidirectional transfer than a simple +request/response test. + + So, putting it all together one can do something like: + + netperf -f m -t TCP_RR -H 192.168.1.3 -v 2 -- -b 6 -r 32K -S 256K -S 256K + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.3 (192.168.1.3) port 0 AF_INET : interval : first burst 6 + Local /Remote + Socket Size Request Resp. Elapsed + Send Recv Size Size Time Throughput + bytes Bytes bytes bytes secs. 10^6bits/sec + + 16384 87380 32768 32768 10.00 1821.30 + 524288 524288 + Alignment Offset RoundTrip Trans Throughput + Local Remote Local Remote Latency Rate 10^6bits/s + Send Recv Send Recv usec/Tran per sec Outbound Inbound + 8 0 0 0 2015.402 3473.252 910.492 910.492 + + to get a bidirectional bulk-throughput result. As one can see, the -v +2 output will include a number of interesting, related values. + + NOTE: The logic behind `--enable-burst' is very simple, and there + are no calls to `poll()' or `select()' which means we want to make + sure that the `send()' calls will never block, or we run the risk + of deadlock with each side stuck trying to call `send()' and + neither calling `recv()'. + + Fortunately, this is easily accomplished by setting a "large enough" +socket buffer size with the test-specific `-s' and `-S' options. +Presently this must be performed by the user. Future versions of +netperf might attempt to do this automagically, but there are some +issues to be worked-out. + + +File: netperf.info, Node: Implications of Concurrent Tests vs Burst Request/Response, Prev: Bidirectional Transfer with TCP_RR, Up: Using Netperf to Measure Bidirectional Transfer + +8.3 Implications of Concurrent Tests vs Burst Request/Response +============================================================== + +There are perhaps subtle but important differences between using +concurrent unidirectional tests vs a burst-mode request to measure +bidirectional performance. + + Broadly speaking, a single "connection" or "flow" of traffic cannot +make use of the services of more than one or two CPUs at either end. +Whether one or two CPUs will be used processing a flow will depend on +the specifics of the stack(s) involved and whether or not the global +`-T' option has been used to bind netperf/netserver to specific CPUs. + + When using concurrent tests there will be two concurrent connections +or flows, which means that upwards of four CPUs will be employed +processing the packets (global `-T' used, no more than two if not), +however, with just a single, bidirectional request/response test no +more than two CPUs will be employed (only one if the global `-T' is not +used). + + If there is a CPU bottleneck on either system this may result in +rather different results between the two methods. + + Also, with a bidirectional request/response test there is something +of a natural balance or synchronization between inbound and outbound - a +response will not be sent until a request is received, and (once the +burst level is reached) a subsequent request will not be sent until a +response is received. This may mask favoritism in the NIC between +inbound and outbound processing. + + With two concurrent unidirectional tests there is no such +synchronization or balance and any favoritism in the NIC may be exposed. + + +File: netperf.info, Node: The Omni Tests, Next: Other Netperf Tests, Prev: Using Netperf to Measure Bidirectional Transfer, Up: Top + +9 The Omni Tests +**************** + +Beginning with version 2.5.0, netperf begins a migration to the `omni' +tests or "Two routines to measure them all." The code for the omni +tests can be found in `src/nettest_omni.c' and the goal is to make it +easier for netperf to support multiple protocols and report a great +many additional things about the systems under test. Additionally, a +flexible output selection mechanism is present which allows the user to +chose specifically what values she wishes to have reported and in what +format. + + The omni tests are included by default in version 2.5.0. To disable +them, one must: + ./configure --enable-omni=no ... + + and remake netperf. Remaking netserver is optional because even in +2.5.0 it has "unmigrated" netserver side routines for the classic (eg +`src/nettest_bsd.c') tests. + +* Menu: + +* Native Omni Tests:: +* Migrated Tests:: +* Omni Output Selection:: + + +File: netperf.info, Node: Native Omni Tests, Next: Migrated Tests, Prev: The Omni Tests, Up: The Omni Tests + +9.1 Native Omni Tests +===================== + +One access the omni tests "natively" by using a value of "OMNI" with +the global `-t' test-selection option. This will then cause netperf to +use the code in `src/nettest_omni.c' and in particular the +test-specific options parser for the omni tests. The test-specific +options for the omni tests are a superset of those for "classic" tests. +The options added by the omni tests are: + +`-c' + This explicitly declares that the test is to include connection + establishment and tear-down as in either a TCP_CRR or TCP_CC test. + +`-d ' + This option sets the direction of the test relative to the netperf + process. As of version 2.5.0 one can use the following in a + case-insensitive manner: + + `send, stream, transmit, xmit or 2' + Any of which will cause netperf to send to the netserver. + + `recv, receive, maerts or 4' + Any of which will cause netserver to send to netperf. + + `rr or 6' + Either of which will cause a request/response test. + + Additionally, one can specify two directions separated by a '|' + character and they will be OR'ed together. In this way one can use + the "Send|Recv" that will be emitted by the *note DIRECTION: Omni + Output Selectors. *note output selector: Omni Output Selection. + when used with a request/response test. + +`-k [*note output selector: Omni Output Selection.]' + This option sets the style of output to "keyval" where each line of + output has the form: + key=value + For example: + $ netperf -t omni -- -d rr -k "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + THROUGHPUT=59092.65 + THROUGHPUT_UNITS=Trans/s + + Using the `-k' option will override any previous, test-specific + `-o' or `-O' option. + +`-o [*note output selector: Omni Output Selection.]' + This option sets the style of output to "CSV" where there will be + one line of comma-separated values, preceded by one line of column + names unless the global `-P' option is used with a value of 0: + $ netperf -t omni -- -d rr -o "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Throughput,Throughput Units + 60999.07,Trans/s + + Using the `-o' option will override any previous, test-specific + `-k' or `-O' option. + +`-O [*note output selector: Omni Output Selection.]' + This option sets the style of output to "human readable" which will + look quite similar to classic netperf output: + $ netperf -t omni -- -d rr -O "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Throughput Throughput + Units + + + 60492.57 Trans/s + + Using the `-O' option will override any previous, test-specific + `-k' or `-o' option. + +`-t' + This option explicitly sets the socket type for the test's data + connection. As of version 2.5.0 the known socket types include + "stream" and "dgram" for SOCK_STREAM and SOCK_DGRAM respectively. + +`-T ' + This option is used to explicitly set the protocol used for the + test. It is case-insensitive. As of version 2.5.0 the protocols + known to netperf include: + `TCP' + Select the Transmission Control Protocol + + `UDP' + Select the User Datagram Protocol + + `SDP' + Select the Sockets Direct Protocol + + `DCCP' + Select the Datagram Congestion Control Protocol + + `SCTP' + Select the Stream Control Transport Protocol + + `udplite' + Select UDP Lite + + The default is implicit based on other settings. + + The omni tests also extend the interpretation of some of the classic, +test-specific options for the BSD Sockets tests: + +`-m ' + This can set the send size for either or both of the netperf and + netserver sides of the test: + -m 32K + sets only the netperf-side send size to 32768 bytes, and or's-in + transmit for the direction. This is effectively the same behaviour + as for the classic tests. + -m ,32K + sets only the netserver side send size to 32768 bytes and or's-in + receive for the direction. + -m 16K,32K + sets the netperf side send size to 16284 bytes, the netserver side + send size to 32768 bytes and the direction will be "Send|Recv." + +`-M ' + This can set the receive size for either or both of the netperf and + netserver sides of the test: + -M 32K + sets only the netserver side receive size to 32768 bytes and + or's-in send for the test direction. + -M ,32K + sets only the netperf side receive size to 32768 bytes and or's-in + receive for the test direction. + -M 16K,32K + sets the netserver side receive size to 16384 bytes and the netperf + side receive size to 32768 bytes and the direction will be + "Send|Recv." + + +File: netperf.info, Node: Migrated Tests, Next: Omni Output Selection, Prev: Native Omni Tests, Up: The Omni Tests + +9.2 Migrated Tests +================== + +As of version 2.5.0 several tests have been migrated to use the omni +code in `src/nettest_omni.c' for the core of their testing. A migrated +test retains all its previous output code and so should still "look and +feel" just like a pre-2.5.0 test with one exception - the first line of +the test banners will include the word "MIGRATED" at the beginning as +in: + + $ netperf + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 27175.27 + + The tests migrated in version 2.5.0 are: + * TCP_STREAM + + * TCP_MAERTS + + * TCP_RR + + * TCP_CRR + + * UDP_STREAM + + * UDP_RR + + It is expected that future releases will have additional tests +migrated to use the "omni" functionality. + + If one uses "omni-specific" test-specific options in conjunction +with a migrated test, instead of using the classic output code, the new +omni output code will be used. For example if one uses the `-k' +test-specific option with a value of "MIN_LATENCY,MAX_LATENCY" with a +migrated TCP_RR test one will see: + + $ netperf -t tcp_rr -- -k THROUGHPUT,THROUGHPUT_UNITS + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + THROUGHPUT=60074.74 + THROUGHPUT_UNITS=Trans/s + rather than: + $ netperf -t tcp_rr + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 59421.52 + 16384 87380 + + +File: netperf.info, Node: Omni Output Selection, Prev: Migrated Tests, Up: The Omni Tests + +9.3 Omni Output Selection +========================= + +The omni test-specific `-k', `-o' and `-O' options take an optional +`output selector' by which the user can configure what values are +reported. The output selector can take several forms: + +``filename'' + The output selections will be read from the named file. Within the + file there can be up to four lines of comma-separated output + selectors. This controls how many multi-line blocks of output are + emitted when the `-O' option is used. This output, while not + identical to "classic" netperf output, is inspired by it. + Multiple lines have no effect for `-k' and `-o' options. Putting + output selections in a file can be useful when the list of + selections is long. + +`comma and/or semi-colon-separated list' + The output selections will be parsed from a comma and/or + semi-colon-separated list of output selectors. When the list is + given to a `-O' option a semi-colon specifies a new output block + should be started. Semi-colons have the same meaning as commas + when used with the `-k' or `-o' options. Depending on the command + interpreter being used, the semi-colon may have to be escaped + somehow to keep it from being interpreted by the command + interpreter. This can often be done by enclosing the entire list + in quotes. + +`all' + If the keyword all is specified it means that all known output + values should be displayed at the end of the test. This can be a + great deal of output. As of version 2.5.0 there are 157 different + output selectors. + +`?' + If a "?" is given as the output selection, the list of all known + output selectors will be displayed and no test actually run. When + passed to the `-O' option they will be listed one per line. + Otherwise they will be listed as a comma-separated list. It may + be necessary to protect the "?" from the command interpreter by + escaping it or enclosing it in quotes. + +`no selector' + If nothing is given to the `-k', `-o' or `-O' option then the code + selects a default set of output selectors inspired by classic + netperf output. The format will be the `human readable' format + emitted by the test-specific `-O' option. + + The order of evaluation will first check for an output selection. If +none is specified with the `-k', `-o' or `-O' option netperf will +select a default based on the characteristics of the test. If there is +an output selection, the code will first check for `?', then check to +see if it is the magic `all' keyword. After that it will check for +either `,' or `;' in the selection and take that to mean it is a comma +and/or semi-colon-separated list. If none of those checks match, +netperf will then assume the output specification is a filename and +attempt to open and parse the file. + +* Menu: + +* Omni Output Selectors:: + + +File: netperf.info, Node: Omni Output Selectors, Prev: Omni Output Selection, Up: Omni Output Selection + +9.3.1 Omni Output Selectors +--------------------------- + +As of version 2.5.0 the output selectors are: + +`OUTPUT_NONE' + This is essentially a null output. For `-k' output it will simply + add a line that reads "OUTPUT_NONE=" to the output. For `-o' it + will cause an empty "column" to be included. For `-O' output it + will cause extra spaces to separate "real" output. + +`SOCKET_TYPE' + This will cause the socket type (eg SOCK_STREAM, SOCK_DGRAM) for + the data connection to be output. + +`PROTOCOL' + This will cause the protocol used for the data connection to be + displayed. + +`DIRECTION' + This will display the data flow direction relative to the netperf + process. Units: Send or Recv for a unidirectional bulk-transfer + test, or Send|Recv for a request/response test. + +`ELAPSED_TIME' + This will display the elapsed time in seconds for the test. + +`THROUGHPUT' + This will display the throughput for the test. Units: As requested + via the global `-f' option and displayed by the THROUGHPUT_UNITS + output selector. + +`THROUGHPUT_UNITS' + This will display the units for what is displayed by the + `THROUGHPUT' output selector. + +`LSS_SIZE_REQ' + This will display the local (netperf) send socket buffer size (aka + SO_SNDBUF) requested via the command line. Units: Bytes. + +`LSS_SIZE' + This will display the local (netperf) send socket buffer size + (SO_SNDBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`LSS_SIZE_END' + This will display the local (netperf) send socket buffer size + (SO_SNDBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`LSR_SIZE_REQ' + This will display the local (netperf) receive socket buffer size + (aka SO_RCVBUF) requested via the command line. Units: Bytes. + +`LSR_SIZE' + This will display the local (netperf) receive socket buffer size + (SO_RCVBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`LSR_SIZE_END' + This will display the local (netperf) receive socket buffer size + (SO_RCVBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`RSS_SIZE_REQ' + This will display the remote (netserver) send socket buffer size + (aka SO_SNDBUF) requested via the command line. Units: Bytes. + +`RSS_SIZE' + This will display the remote (netserver) send socket buffer size + (SO_SNDBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`RSS_SIZE_END' + This will display the remote (netserver) send socket buffer size + (SO_SNDBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`RSR_SIZE_REQ' + This will display the remote (netserver) receive socket buffer + size (aka SO_RCVBUF) requested via the command line. Units: Bytes. + +`RSR_SIZE' + This will display the remote (netserver) receive socket buffer size + (SO_RCVBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`RSR_SIZE_END' + This will display the remote (netserver) receive socket buffer size + (SO_RCVBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`LOCAL_SEND_SIZE' + This will display the size of the buffers netperf passed in any + "send" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`LOCAL_RECV_SIZE' + This will display the size of the buffers netperf passed in any + "receive" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REMOTE_SEND_SIZE' + This will display the size of the buffers netserver passed in any + "send" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REMOTE_RECV_SIZE' + This will display the size of the buffers netserver passed in any + "receive" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REQUEST_SIZE' + This will display the size of the requests netperf sent in a + request-response test. Units: Bytes. + +`RESPONSE_SIZE' + This will display the size of the responses netserver sent in a + request-response test. Units: Bytes. + +`LOCAL_CPU_UTIL' + This will display the overall CPU utilization during the test as + measured by netperf. Units: 0 to 100 percent. + +`LOCAL_CPU_PERCENT_USER' + This will display the CPU fraction spent in user mode during the + test as measured by netperf. Only supported by netcpu_procstat. + Units: 0 to 100 percent. + +`LOCAL_CPU_PERCENT_SYSTEM' + This will display the CPU fraction spent in system mode during the + test as measured by netperf. Only supported by netcpu_procstat. + Units: 0 to 100 percent. + +`LOCAL_CPU_PERCENT_IOWAIT' + This will display the fraction of time waiting for I/O to complete + during the test as measured by netperf. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`LOCAL_CPU_PERCENT_IRQ' + This will display the fraction of time servicing interrupts during + the test as measured by netperf. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`LOCAL_CPU_PERCENT_SWINTR' + This will display the fraction of time servicing softirqs during + the test as measured by netperf. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`LOCAL_CPU_METHOD' + This will display the method used by netperf to measure CPU + utilization. Units: single character denoting method. + +`LOCAL_SD' + This will display the service demand, or units of CPU consumed per + unit of work, as measured by netperf. Units: microseconds of CPU + consumed per either KB (K==1024) of data transferred or + request/response transaction. + +`REMOTE_CPU_UTIL' + This will display the overall CPU utilization during the test as + measured by netserver. Units 0 to 100 percent. + +`REMOTE_CPU_PERCENT_USER' + This will display the CPU fraction spent in user mode during the + test as measured by netserver. Only supported by netcpu_procstat. + Units: 0 to 100 percent. + +`REMOTE_CPU_PERCENT_SYSTEM' + This will display the CPU fraction spent in system mode during the + test as measured by netserver. Only supported by netcpu_procstat. + Units: 0 to 100 percent. + +`REMOTE_CPU_PERCENT_IOWAIT' + This will display the fraction of time waiting for I/O to complete + during the test as measured by netserver. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`REMOTE_CPU_PERCENT_IRQ' + This will display the fraction of time servicing interrupts during + the test as measured by netserver. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`REMOTE_CPU_PERCENT_SWINTR' + This will display the fraction of time servicing softirqs during + the test as measured by netserver. Only supported by + netcpu_procstat. Units: 0 to 100 percent. + +`REMOTE_CPU_METHOD' + This will display the method used by netserver to measure CPU + utilization. Units: single character denoting method. + +`REMOTE_SD' + This will display the service demand, or units of CPU consumed per + unit of work, as measured by netserver. Units: microseconds of CPU + consumed per either KB (K==1024) of data transferred or + request/response transaction. + +`SD_UNITS' + This will display the units for LOCAL_SD and REMOTE_SD + +`CONFIDENCE_LEVEL' + This will display the confidence level requested by the user either + explicitly via the global `-I' option, or implicitly via the + global `-i' option. The value will be either 95 or 99 if + confidence intervals have been requested or 0 if they were not. + Units: Percent + +`CONFIDENCE_INTERVAL' + This will display the width of the confidence interval requested + either explicitly via the global `-I' option or implicitly via the + global `-i' option. Units: Width in percent of mean value + computed. A value of -1.0 means that confidence intervals were not + requested. + +`CONFIDENCE_ITERATION' + This will display the number of test iterations netperf undertook, + perhaps while attempting to achieve the requested confidence + interval and level. If confidence intervals were requested via the + command line then the value will be between 3 and 30. If + confidence intervals were not requested the value will be 1. + Units: Iterations + +`THROUGHPUT_CONFID' + This will display the width of the confidence interval actually + achieved for `THROUGHPUT' during the test. Units: Width of + interval as percentage of reported throughput value. + +`LOCAL_CPU_CONFID' + This will display the width of the confidence interval actually + achieved for overall CPU utilization on the system running netperf + (`LOCAL_CPU_UTIL') during the test, if CPU utilization measurement + was enabled. Units: Width of interval as percentage of reported + CPU utilization. + +`REMOTE_CPU_CONFID' + This will display the width of the confidence interval actually + achieved for overall CPU utilization on the system running + netserver (`REMOTE_CPU_UTIL') during the test, if CPU utilization + measurement was enabled. Units: Width of interval as percentage of + reported CPU utilization. + +`TRANSACTION_RATE' + This will display the transaction rate in transactions per second + for a request/response test even if the user has requested a + throughput in units of bits or bytes per second via the global `-f' + option. It is undefined for a non-request/response test. Units: + Transactions per second. + +`RT_LATENCY' + This will display the average round-trip latency for a + request/response test, accounting for number of transactions in + flight at one time. It is undefined for a non-request/response + test. Units: Microseconds per transaction + +`BURST_SIZE' + This will display the "burst size" or added transactions in flight + in a request/response test as requested via a test-specific `-b' + option. The number of transactions in flight at one time will be + one greater than this value. It is undefined for a + non-request/response test. Units: added Transactions in flight. + +`LOCAL_TRANSPORT_RETRANS' + This will display the number of retransmissions experienced on the + data connection during the test as determined by netperf. A value + of -1 means the attempt to determine the number of retransmissions + failed or the concept was not valid for the given protocol or the + mechanism is not known for the platform. A value of -2 means it + was not attempted. As of version 2.5.0 the meaning of values are + in flux and subject to change. Units: number of retransmissions. + +`REMOTE_TRANSPORT_RETRANS' + This will display the number of retransmissions experienced on the + data connection during the test as determined by netserver. A + value of -1 means the attempt to determine the number of + retransmissions failed or the concept was not valid for the given + protocol or the mechanism is not known for the platform. A value + of -2 means it was not attempted. As of version 2.5.0 the meaning + of values are in flux and subject to change. Units: number of + retransmissions. + +`TRANSPORT_MSS' + This will display the Maximum Segment Size (aka MSS) or its + equivalent for the protocol being used during the test. A value + of -1 means either the concept of an MSS did not apply to the + protocol being used, or there was an error in retrieving it. + Units: Bytes. + +`LOCAL_SEND_THROUGHPUT' + The throughput as measured by netperf for the successful "send" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`LOCAL_RECV_THROUGHPUT' + The throughput as measured by netperf for the successful "receive" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`REMOTE_SEND_THROUGHPUT' + The throughput as measured by netserver for the successful "send" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`REMOTE_RECV_THROUGHPUT' + The throughput as measured by netserver for the successful + "receive" calls it made on the data connection. Units: as + requested via the global `-f' option and displayed via the + `THROUGHPUT_UNITS' output selector. + +`LOCAL_CPU_BIND' + The CPU to which netperf was bound, if at all, during the test. A + value of -1 means that netperf was not explicitly bound to a CPU + during the test. Units: CPU ID + +`LOCAL_CPU_COUNT' + The number of CPUs (cores, threads) detected by netperf. Units: + CPU count. + +`LOCAL_CPU_PEAK_UTIL' + The utilization of the CPU most heavily utilized during the test, + as measured by netperf. This can be used to see if any one CPU of a + multi-CPU system was saturated even though the overall CPU + utilization as reported by `LOCAL_CPU_UTIL' was low. Units: 0 to + 100% + +`LOCAL_CPU_PEAK_ID' + The id of the CPU most heavily utilized during the test as + determined by netperf. Units: CPU ID. + +`LOCAL_CPU_MODEL' + Model information for the processor(s) present on the system + running netperf. Assumes all processors in the system (as + perceived by netperf) on which netperf is running are the same + model. Units: Text + +`LOCAL_CPU_FREQUENCY' + The frequency of the processor(s) on the system running netperf, at + the time netperf made the call. Assumes that all processors + present in the system running netperf are running at the same + frequency. Units: MHz + +`REMOTE_CPU_BIND' + The CPU to which netserver was bound, if at all, during the test. A + value of -1 means that netperf was not explicitly bound to a CPU + during the test. Units: CPU ID + +`REMOTE_CPU_COUNT' + The number of CPUs (cores, threads) detected by netserver. Units: + CPU count. + +`REMOTE_CPU_PEAK_UTIL' + The utilization of the CPU most heavily utilized during the test, + as measured by netserver. This can be used to see if any one CPU + of a multi-CPU system was saturated even though the overall CPU + utilization as reported by `REMOTE_CPU_UTIL' was low. Units: 0 to + 100% + +`REMOTE_CPU_PEAK_ID' + The id of the CPU most heavily utilized during the test as + determined by netserver. Units: CPU ID. + +`REMOTE_CPU_MODEL' + Model information for the processor(s) present on the system + running netserver. Assumes all processors in the system (as + perceived by netserver) on which netserver is running are the same + model. Units: Text + +`REMOTE_CPU_FREQUENCY' + The frequency of the processor(s) on the system running netserver, + at the time netserver made the call. Assumes that all processors + present in the system running netserver are running at the same + frequency. Units: MHz + +`SOURCE_PORT' + The port ID/service name to which the data socket created by + netperf was bound. A value of 0 means the data socket was not + explicitly bound to a port number. Units: ASCII text. + +`SOURCE_ADDR' + The name/address to which the data socket created by netperf was + bound. A value of 0.0.0.0 means the data socket was not explicitly + bound to an address. Units: ASCII text. + +`SOURCE_FAMILY' + The address family to which the data socket created by netperf was + bound. A value of 0 means the data socket was not explicitly + bound to a given address family. Units: ASCII text. + +`DEST_PORT' + The port ID to which the data socket created by netserver was + bound. A value of 0 means the data socket was not explicitly bound + to a port number. Units: ASCII text. + +`DEST_ADDR' + The name/address of the data socket created by netserver. Units: + ASCII text. + +`DEST_FAMILY' + The address family to which the data socket created by netserver + was bound. A value of 0 means the data socket was not explicitly + bound to a given address family. Units: ASCII text. + +`LOCAL_SEND_CALLS' + The number of successful "send" calls made by netperf against its + data socket. Units: Calls. + +`LOCAL_RECV_CALLS' + The number of successful "receive" calls made by netperf against + its data socket. Units: Calls. + +`LOCAL_BYTES_PER_RECV' + The average number of bytes per "receive" call made by netperf + against its data socket. Units: Bytes. + +`LOCAL_BYTES_PER_SEND' + The average number of bytes per "send" call made by netperf against + its data socket. Units: Bytes. + +`LOCAL_BYTES_SENT' + The number of bytes successfully sent by netperf through its data + socket. Units: Bytes. + +`LOCAL_BYTES_RECVD' + The number of bytes successfully received by netperf through its + data socket. Units: Bytes. + +`LOCAL_BYTES_XFERD' + The sum of bytes sent and received by netperf through its data + socket. Units: Bytes. + +`LOCAL_SEND_OFFSET' + The offset from the alignment of the buffers passed by netperf in + its "send" calls. Specified via the global `-o' option and + defaults to 0. Units: Bytes. + +`LOCAL_RECV_OFFSET' + The offset from the alignment of the buffers passed by netperf in + its "receive" calls. Specified via the global `-o' option and + defaults to 0. Units: Bytes. + +`LOCAL_SEND_ALIGN' + The alignment of the buffers passed by netperf in its "send" calls + as specified via the global `-a' option. Defaults to 8. Units: + Bytes. + +`LOCAL_RECV_ALIGN' + The alignment of the buffers passed by netperf in its "receive" + calls as specified via the global `-a' option. Defaults to 8. + Units: Bytes. + +`LOCAL_SEND_WIDTH' + The "width" of the ring of buffers through which netperf cycles as + it makes its "send" calls. Defaults to one more than the local + send socket buffer size divided by the send size as determined at + the time the data socket is created. Can be used to make netperf + more processor data cache unfriendly. Units: number of buffers. + +`LOCAL_RECV_WIDTH' + The "width" of the ring of buffers through which netperf cycles as + it makes its "receive" calls. Defaults to one more than the local + receive socket buffer size divided by the receive size as + determined at the time the data socket is created. Can be used to + make netperf more processor data cache unfriendly. Units: number + of buffers. + +`LOCAL_SEND_DIRTY_COUNT' + The number of bytes to "dirty" (write to) before netperf makes a + "send" call. Specified via the global `-k' option, which requires + that -enable-dirty=yes was specified with the configure command + prior to building netperf. Units: Bytes. + +`LOCAL_RECV_DIRTY_COUNT' + The number of bytes to "dirty" (write to) before netperf makes a + "recv" call. Specified via the global `-k' option which requires + that -enable-dirty was specified with the configure command prior + to building netperf. Units: Bytes. + +`LOCAL_RECV_CLEAN_COUNT' + The number of bytes netperf should read "cleanly" before making a + "receive" call. Specified via the global `-k' option which + requires that -enable-dirty was specified with configure command + prior to building netperf. Clean reads start were dirty writes + ended. Units: Bytes. + +`LOCAL_NODELAY' + Indicates whether or not setting the test protocol-specific "no + delay" (eg TCP_NODELAY) option on the data socket used by netperf + was requested by the test-specific `-D' option and successful. + Units: 0 means no, 1 means yes. + +`LOCAL_CORK' + Indicates whether or not TCP_CORK was set on the data socket used + by netperf as requested via the test-specific `-C' option. 1 means + yes, 0 means no/not applicable. + +`REMOTE_SEND_CALLS' + +`REMOTE_RECV_CALLS' + +`REMOTE_BYTES_PER_RECV' + +`REMOTE_BYTES_PER_SEND' + +`REMOTE_BYTES_SENT' + +`REMOTE_BYTES_RECVD' + +`REMOTE_BYTES_XFERD' + +`REMOTE_SEND_OFFSET' + +`REMOTE_RECV_OFFSET' + +`REMOTE_SEND_ALIGN' + +`REMOTE_RECV_ALIGN' + +`REMOTE_SEND_WIDTH' + +`REMOTE_RECV_WIDTH' + +`REMOTE_SEND_DIRTY_COUNT' + +`REMOTE_RECV_DIRTY_COUNT' + +`REMOTE_RECV_CLEAN_COUNT' + +`REMOTE_NODELAY' + +`REMOTE_CORK' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. + +`LOCAL_SYSNAME' + The name of the OS (eg "Linux") running on the system on which + netperf was running. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_SYSTEM_MODEL' + The model name of the system on which netperf was running. Units: + ASCII Text. Disabled in 2.7.0. + +`LOCAL_RELEASE' + The release name/number of the OS running on the system on which + netperf was running. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_VERSION' + The version number of the OS running on the system on which netperf + was running. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_MACHINE' + The machine architecture of the machine on which netperf was + running. Units: ASCII Text. Disabled in 2.7.0. + +`REMOTE_SYSNAME' + +`REMOTE_SYSTEM_MODEL' + +`REMOTE_RELEASE' + +`REMOTE_VERSION' + +`REMOTE_MACHINE' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. Disabled in 2.7.0. + +`LOCAL_INTERFACE_NAME' + The name of the probable egress interface through which the data + connection went on the system running netperf. Example: eth0. + Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_INTERFACE_VENDOR' + The vendor ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). Disabled + in 2.7.0. + +`LOCAL_INTERFACE_DEVICE' + The device ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). Disabled + in 2.7.0. + +`LOCAL_INTERFACE_SUBVENDOR' + The sub-vendor ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). Disabled + in 2.7.0. + +`LOCAL_INTERFACE_SUBDEVICE' + The sub-device ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). Disabled + in 2.7.0. + +`LOCAL_DRIVER_NAME' + The name of the driver used for the probable egress interface + through which traffic on the data connection went on the system + running netperf. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_DRIVER_VERSION' + The version string for the driver used for the probable egress + interface through which traffic on the data connection went on the + system running netperf. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_DRIVER_FIRMWARE' + The firmware version for the driver used for the probable egress + interface through which traffic on the data connection went on the + system running netperf. Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_DRIVER_BUS' + The bus address of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: ASCII Text. Disabled in 2.7.0. + +`LOCAL_INTERFACE_SLOT' + The slot ID of the probable egress interface through which traffic + on the data connection went on the system running netperf. Units: + ASCII Text. Disabled in 2.7.0. + +`REMOTE_INTERFACE_NAME' + +`REMOTE_INTERFACE_VENDOR' + +`REMOTE_INTERFACE_DEVICE' + +`REMOTE_INTERFACE_SUBVENDOR' + +`REMOTE_INTERFACE_SUBDEVICE' + +`REMOTE_DRIVER_NAME' + +`REMOTE_DRIVER_VERSION' + +`REMOTE_DRIVER_FIRMWARE' + +`REMOTE_DRIVER_BUS' + +`REMOTE_INTERFACE_SLOT' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. Disabled in 2.7.0. + +`LOCAL_INTERVAL_USECS' + The interval at which bursts of operations (sends, receives, + transactions) were attempted by netperf. Specified by the global + `-w' option which requires -enable-intervals to have been + specified with the configure command prior to building netperf. + Units: Microseconds (though specified by default in milliseconds + on the command line) + +`LOCAL_INTERVAL_BURST' + The number of operations (sends, receives, transactions depending + on the test) which were attempted by netperf each + LOCAL_INTERVAL_USECS units of time. Specified by the global `-b' + option which requires -enable-intervals to have been specified + with the configure command prior to building netperf. Units: + number of operations per burst. + +`REMOTE_INTERVAL_USECS' + The interval at which bursts of operations (sends, receives, + transactions) were attempted by netserver. Specified by the + global `-w' option which requires -enable-intervals to have been + specified with the configure command prior to building netperf. + Units: Microseconds (though specified by default in milliseconds + on the command line) + +`REMOTE_INTERVAL_BURST' + The number of operations (sends, receives, transactions depending + on the test) which were attempted by netperf each + LOCAL_INTERVAL_USECS units of time. Specified by the global `-b' + option which requires -enable-intervals to have been specified + with the configure command prior to building netperf. Units: + number of operations per burst. + +`LOCAL_SECURITY_TYPE_ID' + +`LOCAL_SECURITY_TYPE' + +`LOCAL_SECURITY_ENABLED_NUM' + +`LOCAL_SECURITY_ENABLED' + +`LOCAL_SECURITY_SPECIFIC' + +`REMOTE_SECURITY_TYPE_ID' + +`REMOTE_SECURITY_TYPE' + +`REMOTE_SECURITY_ENABLED_NUM' + +`REMOTE_SECURITY_ENABLED' + +`REMOTE_SECURITY_SPECIFIC' + A bunch of stuff related to what sort of security mechanisms (eg + SELINUX) were enabled on the systems during the test. Disabled in + 2.7.0. + +`RESULT_BRAND' + The string specified by the user with the global `-B' option. + Units: ASCII Text. + +`UUID' + The universally unique identifier associated with this test, either + generated automagically by netperf, or passed to netperf via an + omni test-specific `-u' option. Note: Future versions may make this + a global command-line option. Units: ASCII Text. + +`MIN_LATENCY' + The minimum "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`MAX_LATENCY' + The maximum "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`P50_LATENCY' + The 50th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`P90_LATENCY' + The 90th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`P99_LATENCY' + The 99th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`MEAN_LATENCY' + The average "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`STDDEV_LATENCY' + The standard deviation of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`COMMAND_LINE' + The full command line used when invoking netperf. Units: ASCII + Text. + +`OUTPUT_END' + While emitted with the list of output selectors, it is ignored when + specified as an output selector. + + +File: netperf.info, Node: Other Netperf Tests, Next: Address Resolution, Prev: The Omni Tests, Up: Top + +10 Other Netperf Tests +********************** + +Apart from the typical performance tests, netperf contains some tests +which can be used to streamline measurements and reporting. These +include CPU rate calibration (present) and host identification (future +enhancement). + +* Menu: + +* CPU rate calibration:: +* UUID Generation:: + + +File: netperf.info, Node: CPU rate calibration, Next: UUID Generation, Prev: Other Netperf Tests, Up: Other Netperf Tests + +10.1 CPU rate calibration +========================= + +Some of the CPU utilization measurement mechanisms of netperf work by +comparing the rate at which some counter increments when the system is +idle with the rate at which that same counter increments when the +system is running a netperf test. The ratio of those rates is used to +arrive at a CPU utilization percentage. + + This means that netperf must know the rate at which the counter +increments when the system is presumed to be "idle." If it does not +know the rate, netperf will measure it before starting a data transfer +test. This calibration step takes 40 seconds for each of the local or +remote systems, and if repeated for each netperf test would make taking +repeated measurements rather slow. + + Thus, the netperf CPU utilization options `-c' and and `-C' can take +an optional calibration value. This value is used as the "idle rate" +and the calibration step is not performed. To determine the idle rate, +netperf can be used to run special tests which only report the value of +the calibration - they are the LOC_CPU and REM_CPU tests. These return +the calibration value for the local and remote system respectively. A +common way to use these tests is to store their results into an +environment variable and use that in subsequent netperf commands: + + LOC_RATE=`netperf -t LOC_CPU` + REM_RATE=`netperf -H -t REM_CPU` + netperf -H -c $LOC_RATE -C $REM_RATE ... -- ... + ... + netperf -H -c $LOC_RATE -C $REM_RATE ... -- ... + + If you are going to use netperf to measure aggregate results, it is +important to use the LOC_CPU and REM_CPU tests to get the calibration +values first to avoid issues with some of the aggregate netperf tests +transferring data while others are "idle" and getting bogus calibration +values. When running aggregate tests, it is very important to remember +that any one instance of netperf does not know about the other +instances of netperf. It will report global CPU utilization and will +calculate service demand believing it was the only thing causing that +CPU utilization. So, you can use the CPU utilization reported by +netperf in an aggregate test, but you have to calculate service demands +by hand. + + +File: netperf.info, Node: UUID Generation, Prev: CPU rate calibration, Up: Other Netperf Tests + +10.2 UUID Generation +==================== + +Beginning with version 2.5.0 netperf can generate Universally Unique +IDentifiers (UUIDs). This can be done explicitly via the "UUID" test: + $ netperf -t UUID + 2c8561ae-9ebd-11e0-a297-0f5bfa0349d0 + + In and of itself, this is not terribly useful, but used in +conjunction with the test-specific `-u' option of an "omni" test to set +the UUID emitted by the *note UUID: Omni Output Selectors. output +selector, it can be used to tie-together the separate instances of an +aggregate netperf test. Say, for instance if they were inserted into a +database of some sort. + + +File: netperf.info, Node: Address Resolution, Next: Enhancing Netperf, Prev: Other Netperf Tests, Up: Top + +11 Address Resolution +********************* + +Netperf versions 2.4.0 and later have merged IPv4 and IPv6 tests so the +functionality of the tests in `src/nettest_ipv6.c' has been subsumed +into the tests in `src/nettest_bsd.c' This has been accomplished in +part by switching from `gethostbyname()'to `getaddrinfo()' exclusively. +While it was theoretically possible to get multiple results for a +hostname from `gethostbyname()' it was generally unlikely and netperf's +ignoring of the second and later results was not much of an issue. + + Now with `getaddrinfo' and particularly with AF_UNSPEC it is +increasingly likely that a given hostname will have multiple associated +addresses. The `establish_control()' routine of `src/netlib.c' will +indeed attempt to chose from among all the matching IP addresses when +establishing the control connection. Netperf does not _really_ care if +the control connection is IPv4 or IPv6 or even mixed on either end. + + However, the individual tests still ass-u-me that the first result in +the address list is the one to be used. Whether or not this will +turn-out to be an issue has yet to be determined. + + If you do run into problems with this, the easiest workaround is to +specify IP addresses for the data connection explicitly in the +test-specific `-H' and `-L' options. At some point, the netperf tests +_may_ try to be more sophisticated in their parsing of returns from +`getaddrinfo()' - straw-man patches to +would of course be most welcome :) + + Netperf has leveraged code from other open-source projects with +amenable licensing to provide a replacement `getaddrinfo()' call on +those platforms where the `configure' script believes there is no +native getaddrinfo call. As of this writing, the replacement +`getaddrinfo()' as been tested on HP-UX 11.0 and then presumed to run +elsewhere. + + +File: netperf.info, Node: Enhancing Netperf, Next: Netperf4, Prev: Address Resolution, Up: Top + +12 Enhancing Netperf +******************** + +Netperf is constantly evolving. If you find you want to make +enhancements to netperf, by all means do so. If you wish to add a new +"suite" of tests to netperf the general idea is to: + + 1. Add files `src/nettest_mumble.c' and `src/nettest_mumble.h' where + mumble is replaced with something meaningful for the test-suite. + + 2. Add support for an appropriate `--enable-mumble' option in + `configure.ac'. + + 3. Edit `src/netperf.c', `netsh.c', and `netserver.c' as required, + using #ifdef WANT_MUMBLE. + + 4. Compile and test + + However, with the addition of the "omni" tests in version 2.5.0 it +is preferred that one attempt to make the necessary changes to +`src/nettest_omni.c' rather than adding new source files, unless this +would make the omni tests entirely too complicated. + + If you wish to submit your changes for possible inclusion into the +mainline sources, please try to base your changes on the latest +available sources. (*Note Getting Netperf Bits::.) and then send email +describing the changes at a high level to + or perhaps . +If the consensus is positive, then sending context `diff' results to + is the next step. From that point, it +is a matter of pestering the Netperf Contributing Editor until he gets +the changes incorporated :) + + +File: netperf.info, Node: Netperf4, Next: Concept Index, Prev: Enhancing Netperf, Up: Top + +13 Netperf4 +*********** + +Netperf4 is the shorthand name given to version 4.X.X of netperf. This +is really a separate benchmark more than a newer version of netperf, +but it is a descendant of netperf so the netperf name is kept. The +facetious way to describe netperf4 is to say it is the +egg-laying-woolly-milk-pig version of netperf :) The more respectful +way to describe it is to say it is the version of netperf with support +for synchronized, multiple-thread, multiple-test, multiple-system, +network-oriented benchmarking. + + Netperf4 is still undergoing evolution. Those wishing to work with or +on netperf4 are encouraged to join the netperf-dev +(http://www.netperf.org/cgi-bin/mailman/listinfo/netperf-dev) mailing +list and/or peruse the current sources +(http://www.netperf.org/svn/netperf4/trunk). + + +File: netperf.info, Node: Concept Index, Next: Option Index, Prev: Netperf4, Up: Top + +Concept Index +************* + +[index] +* Menu: + +* Aggregate Performance: Using Netperf to Measure Aggregate Performance. + (line 6) +* Bandwidth Limitation: Installing Netperf Bits. + (line 64) +* Connection Latency: TCP_CC. (line 6) +* CPU Utilization: CPU Utilization. (line 6) +* Design of Netperf: The Design of Netperf. + (line 6) +* Installation: Installing Netperf. (line 6) +* Introduction: Introduction. (line 6) +* Latency, Connection Establishment <1>: XTI_TCP_CRR. (line 6) +* Latency, Connection Establishment <2>: XTI_TCP_CC. (line 6) +* Latency, Connection Establishment <3>: TCP_CRR. (line 6) +* Latency, Connection Establishment: TCP_CC. (line 6) +* Latency, Request-Response <1>: SCTP_RR. (line 6) +* Latency, Request-Response <2>: DLCO_RR. (line 6) +* Latency, Request-Response <3>: DLCL_RR. (line 6) +* Latency, Request-Response <4>: XTI_UDP_RR. (line 6) +* Latency, Request-Response <5>: XTI_TCP_CRR. (line 6) +* Latency, Request-Response <6>: XTI_TCP_RR. (line 6) +* Latency, Request-Response <7>: UDP_RR. (line 6) +* Latency, Request-Response <8>: TCP_CRR. (line 6) +* Latency, Request-Response: TCP_RR. (line 6) +* Limiting Bandwidth <1>: UDP_STREAM. (line 9) +* Limiting Bandwidth: Installing Netperf Bits. + (line 64) +* Measuring Latency: TCP_RR. (line 6) +* Packet Loss: UDP_RR. (line 6) +* Port Reuse: TCP_CC. (line 13) +* TIME_WAIT: TCP_CC. (line 13) + + +File: netperf.info, Node: Option Index, Prev: Concept Index, Up: Top + +Option Index +************ + +[index] +* Menu: + +* --enable-burst, Configure: Using Netperf to Measure Aggregate Performance. + (line 6) +* --enable-cpuutil, Configure: Installing Netperf Bits. + (line 24) +* --enable-dlpi, Configure: Installing Netperf Bits. + (line 30) +* --enable-histogram, Configure: Installing Netperf Bits. + (line 64) +* --enable-intervals, Configure: Installing Netperf Bits. + (line 64) +* --enable-omni, Configure: Installing Netperf Bits. + (line 36) +* --enable-sctp, Configure: Installing Netperf Bits. + (line 30) +* --enable-unixdomain, Configure: Installing Netperf Bits. + (line 30) +* --enable-xti, Configure: Installing Netperf Bits. + (line 30) +* -4, Global: Global Options. (line 489) +* -4, Test-specific <1>: Options Common to TCP UDP and SCTP _RR tests. + (line 88) +* -4, Test-specific: Options common to TCP UDP and SCTP tests. + (line 110) +* -6 Test-specific: Options Common to TCP UDP and SCTP _RR tests. + (line 94) +* -6, Global: Global Options. (line 498) +* -6, Test-specific: Options common to TCP UDP and SCTP tests. + (line 116) +* -A, Global: Global Options. (line 18) +* -a, Global: Global Options. (line 6) +* -B, Global: Global Options. (line 29) +* -b, Global: Global Options. (line 22) +* -C, Global: Global Options. (line 42) +* -c, Global: Global Options. (line 33) +* -c, Test-specific: Native Omni Tests. (line 13) +* -D, Global: Global Options. (line 56) +* -d, Global: Global Options. (line 47) +* -d, Test-specific: Native Omni Tests. (line 17) +* -F, Global: Global Options. (line 76) +* -f, Global: Global Options. (line 67) +* -H, Global: Global Options. (line 95) +* -h, Global: Global Options. (line 91) +* -H, Test-specific: Options Common to TCP UDP and SCTP _RR tests. + (line 17) +* -h, Test-specific <1>: Options Common to TCP UDP and SCTP _RR tests. + (line 10) +* -h, Test-specific: Options common to TCP UDP and SCTP tests. + (line 10) +* -i, Global: Global Options. (line 179) +* -I, Global: Global Options. (line 130) +* -j, Global: Global Options. (line 205) +* -k, Test-specific: Native Omni Tests. (line 37) +* -L, Global: Global Options. (line 263) +* -l, Global: Global Options. (line 242) +* -L, Test-specific <1>: Options Common to TCP UDP and SCTP _RR tests. + (line 26) +* -L, Test-specific: Options common to TCP UDP and SCTP tests. + (line 25) +* -M, Test-specific: Options common to TCP UDP and SCTP tests. + (line 48) +* -m, Test-specific: Options common to TCP UDP and SCTP tests. + (line 32) +* -N, Global: Global Options. (line 293) +* -n, Global: Global Options. (line 275) +* -O, Global: Global Options. (line 338) +* -o, Global: Global Options. (line 329) +* -O, Test-specific: Native Omni Tests. (line 62) +* -o, Test-specific: Native Omni Tests. (line 50) +* -P, Global: Global Options. (line 363) +* -p, Global: Global Options. (line 343) +* -P, Test-specific <1>: Options Common to TCP UDP and SCTP _RR tests. + (line 33) +* -P, Test-specific: Options common to TCP UDP and SCTP tests. + (line 61) +* -r, Test-specific: Options Common to TCP UDP and SCTP _RR tests. + (line 36) +* -S Test-specific: Options common to TCP UDP and SCTP tests. + (line 87) +* -S, Global: Global Options. (line 381) +* -s, Global: Global Options. (line 372) +* -S, Test-specific: Options Common to TCP UDP and SCTP _RR tests. + (line 68) +* -s, Test-specific <1>: Options Common to TCP UDP and SCTP _RR tests. + (line 48) +* -s, Test-specific: Options common to TCP UDP and SCTP tests. + (line 64) +* -T, Global: Global Options. (line 423) +* -t, Global: Global Options. (line 391) +* -T, Test-specific: Native Omni Tests. (line 81) +* -t, Test-specific: Native Omni Tests. (line 76) +* -V, Global: Global Options. (line 468) +* -v, Global: Global Options. (line 440) +* -W, Global: Global Options. (line 480) +* -w, Global: Global Options. (line 473) + + + +Tag Table: +Node: Top439 +Node: Introduction1476 +Node: Conventions4150 +Node: Installing Netperf5913 +Node: Getting Netperf Bits7467 +Node: Installing Netperf Bits9326 +Node: Verifying Installation17820 +Node: The Design of Netperf18524 +Node: CPU Utilization20120 +Node: CPU Utilization in a Virtual Guest28844 +Node: Global Command-line Options30431 +Node: Command-line Options Syntax30970 +Node: Global Options32366 +Node: Using Netperf to Measure Bulk Data Transfer56529 +Node: Issues in Bulk Transfer57202 +Node: Options common to TCP UDP and SCTP tests61463 +Node: TCP_STREAM67788 +Node: TCP_MAERTS71873 +Node: TCP_SENDFILE73110 +Node: UDP_STREAM75610 +Node: XTI_TCP_STREAM79046 +Node: XTI_UDP_STREAM79691 +Node: SCTP_STREAM80336 +Node: DLCO_STREAM81036 +Node: DLCL_STREAM83009 +Node: STREAM_STREAM83883 +Node: DG_STREAM84741 +Node: Using Netperf to Measure Request/Response85422 +Node: Issues in Request/Response87740 +Node: Options Common to TCP UDP and SCTP _RR tests90114 +Node: TCP_RR95138 +Node: TCP_CC97538 +Node: TCP_CRR99772 +Node: UDP_RR100834 +Node: XTI_TCP_RR103138 +Node: XTI_TCP_CC103721 +Node: XTI_TCP_CRR104226 +Node: XTI_UDP_RR104738 +Node: DLCL_RR105315 +Node: DLCO_RR105468 +Node: SCTP_RR105620 +Node: Using Netperf to Measure Aggregate Performance105756 +Node: Running Concurrent Netperf Tests106788 +Node: Issues in Running Concurrent Tests111429 +Node: Using --enable-burst113693 +Node: Using --enable-demo120592 +Node: Using Netperf to Measure Bidirectional Transfer126148 +Node: Bidirectional Transfer with Concurrent Tests127280 +Node: Bidirectional Transfer with TCP_RR129636 +Node: Implications of Concurrent Tests vs Burst Request/Response132020 +Node: The Omni Tests133834 +Node: Native Omni Tests134881 +Node: Migrated Tests140159 +Node: Omni Output Selection142264 +Node: Omni Output Selectors145247 +Node: Other Netperf Tests175368 +Node: CPU rate calibration175803 +Node: UUID Generation178171 +Node: Address Resolution178887 +Node: Enhancing Netperf180863 +Node: Netperf4182358 +Node: Concept Index183263 +Node: Option Index185589 + +End Tag Table diff --git a/doc/netperf.pdf b/doc/netperf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8726ff386c7d981c264397b85763b5e8516feef2 GIT binary patch literal 453226 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 x>^H0(RMWIzyX$@7`7St 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

25fx+S+iu2WD?<&OzzbaUPC&4z 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

Ml%&P>((W^+L-4&{1HEwigl3#ADpFugd;-RP1D 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 for possible +inclusion into subsequent versions of netperf. + + It is the Contributing Editor's belief that the netperf license walks +like open source and talks like open source. However, the license was +never submitted for "certification" as an open source license. If you +would prefer to make contributions to a networking benchmark using a +certified open source license, please consider netperf4, which is +distributed under the terms of the GPLv2. + + The netperf-talk mailing list is +available to discuss the care and feeding of netperf with others who +share your interest in network performance benchmarking. The +netperf-talk mailing list is a closed list (to deal with spam) and you +must first subscribe by sending email to netperf-talk-request +. + +1.1 Conventions +=============== + +A "sizespec" is a one or two item, comma-separated list used as an +argument to a command-line option that can set one or two, related +netperf parameters. If you wish to set both parameters to separate +values, items should be separated by a comma: + + parameter1,parameter2 + + If you wish to set the first parameter without altering the value of +the second from its default, you should follow the first item with a +comma: + + parameter1, + + Likewise, precede the item with a comma if you wish to set only the +second parameter: + + ,parameter2 + + An item with no commas: + + parameter1and2 + + will set both parameters to the same value. This last mode is one of +the most frequently used. + + There is another variant of the comma-separated, two-item list called +a "optionspec" which is like a sizespec with the exception that a +single item with no comma: + + parameter1 + + will only set the value of the first parameter and will leave the +second parameter at its default value. + + Netperf has two types of command-line options. The first are global +command line options. They are essentially any option not tied to a +particular test or group of tests. An example of a global command-line +option is the one which sets the test type - `-t'. + + The second type of options are test-specific options. These are +options which are only applicable to a particular test or set of tests. +An example of a test-specific option would be the send socket buffer +size for a TCP_STREAM test. + + Global command-line options are specified first with test-specific +options following after a `--' as in: + + netperf -- + +2 Installing Netperf +******************** + +Netperf's primary form of distribution is source code. This allows +installation on systems other than those to which the authors have +ready access and thus the ability to create binaries. There are two +styles of netperf installation. The first runs the netperf server +program - netserver - as a child of inetd. This requires the installer +to have sufficient privileges to edit the files `/etc/services' and +`/etc/inetd.conf' or their platform-specific equivalents. + + The second style is to run netserver as a standalone daemon. This +second method does not require edit privileges on `/etc/services' and +`/etc/inetd.conf' but does mean you must remember to run the netserver +program explicitly after every system reboot. + + This manual assumes that those wishing to measure networking +performance already know how to use anonymous FTP and/or a web browser. +It is also expected that you have at least a passing familiarity with +the networking protocols and interfaces involved. In all honesty, if +you do not have such familiarity, likely as not you have some +experience to gain before attempting network performance measurements. +The excellent texts by authors such as Stevens, Fenner and Rudoff +and/or Stallings would be good starting points. There are likely other +excellent sources out there as well. + +2.1 Getting Netperf Bits +======================== + +Gzipped tar files of netperf sources can be retrieved via anonymous FTP +(ftp://ftp.netperf.org/netperf) for "released" versions of the bits. +Pre-release versions of the bits can be retrieved via anonymous FTP +from the experimental (ftp://ftp.netperf.org/netperf/experimental) +subdirectory. + + For convenience and ease of remembering, a link to the download site +is provided via the NetperfPage (http://www.netperf.org/) + + The bits corresponding to each discrete release of netperf are +tagged (http://www.netperf.org/svn/netperf2/tags) for retrieval via +subversion. For example, there is a tag for the first version +corresponding to this version of the manual - netperf 2.6.0 +(http://www.netperf.org/svn/netperf2/tags/netperf-2.6.0). Those +wishing to be on the bleeding edge of netperf development can use +subversion to grab the top of trunk +(http://www.netperf.org/svn/netperf2/trunk). When fixing bugs or +making enhancements, patches against the top-of-trunk are preferred. + + There are likely other places around the Internet from which one can +download netperf bits. These may be simple mirrors of the main netperf +site, or they may be local variants on netperf. As with anything one +downloads from the Internet, take care to make sure it is what you +really wanted and isn't some malicious Trojan or whatnot. Caveat +downloader. + + As a general rule, binaries of netperf and netserver are not +distributed from ftp.netperf.org. From time to time a kind soul or +souls has packaged netperf as a Debian package available via the +apt-get mechanism or as an RPM. I would be most interested in learning +how to enhance the makefiles to make that easier for people. + +2.2 Installing Netperf +====================== + +Once you have downloaded the tar file of netperf sources onto your +system(s), it is necessary to unpack the tar file, cd to the netperf +directory, run configure and then make. Most of the time it should be +sufficient to just: + + gzcat netperf-.tar.gz | tar xf - + cd netperf- + ./configure + make + make install + + Most of the "usual" configure script options should be present +dealing with where to install binaries and whatnot. + ./configure --help + should list all of those and more. You may find the `--prefix' +option helpful in deciding where the binaries and such will be put +during the `make install'. + + If the netperf configure script does not know how to automagically +detect which CPU utilization mechanism to use on your platform you may +want to add a `--enable-cpuutil=mumble' option to the configure +command. If you have knowledge and/or experience to contribute to +that area, feel free to contact . + + Similarly, if you want tests using the XTI interface, Unix Domain +Sockets, DLPI or SCTP it will be necessary to add one or more +`--enable-[xti|unixdomain|dlpi|sctp]=yes' options to the configure +command. As of this writing, the configure script will not include +those tests automagically. + + Starting with version 2.5.0, netperf began migrating most of the +"classic" netperf tests found in `src/nettest_bsd.c' to the so-called +"omni" tests (aka "two routines to run them all") found in +`src/nettest_omni.c'. This migration enables a number of new features +such as greater control over what output is included, and new things to +output. The "omni" test is enabled by default in 2.5.0 and a number of +the classic tests are migrated - you can tell if a test has been +migrated from the presence of `MIGRATED' in the test banner. If you +encounter problems with either the omni or migrated tests, please first +attempt to obtain resolution via or +. If that is unsuccessful, you can add a +`--enable-omni=no' to the configure command and the omni tests will not +be compiled-in and the classic tests will not be migrated. + + Starting with version 2.5.0, netperf includes the "burst mode" +functionality in a default compilation of the bits. If you encounter +problems with this, please first attempt to obtain help via + or . If that +is unsuccessful, you can add a `--enable-burst=no' to the configure +command and the burst mode functionality will not be compiled-in. + + On some platforms, it may be necessary to precede the configure +command with a CFLAGS and/or LIBS variable as the netperf configure +script is not yet smart enough to set them itself. Whenever possible, +these requirements will be found in `README.PLATFORM' files. Expertise +and assistance in making that more automagic in the configure script +would be most welcome. + + Other optional configure-time settings include +`--enable-intervals=yes' to give netperf the ability to "pace" its +_STREAM tests and `--enable-histogram=yes' to have netperf keep a +histogram of interesting times. Each of these will have some effect on +the measured result. If your system supports `gethrtime()' the effect +of the histogram measurement should be minimized but probably still +measurable. For example, the histogram of a netperf TCP_RR test will +be of the individual transaction times: + netperf -t TCP_RR -H lag -v 2 + TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET : histogram + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 3538.82 + 32768 32768 + Alignment Offset + Local Remote Local Remote + Send Recv Send Recv + 8 0 0 0 + Histogram of request/response times + UNIT_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + TEN_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + HUNDRED_USEC : 0: 34480: 111: 13: 12: 6: 9: 3: 4: 7 + UNIT_MSEC : 0: 60: 50: 51: 44: 44: 72: 119: 100: 101 + TEN_MSEC : 0: 105: 0: 0: 0: 0: 0: 0: 0: 0 + HUNDRED_MSEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + UNIT_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + TEN_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 + >100_SECS: 0 + HIST_TOTAL: 35391 + + The histogram you see above is basically a base-10 log histogram +where we can see that most of the transaction times were on the order +of one hundred to one-hundred, ninety-nine microseconds, but they were +occasionally as long as ten to nineteen milliseconds + + The `--enable-demo=yes' configure option will cause code to be +included to report interim results during a test run. The rate at +which interim results are reported can then be controlled via the +global `-D' option. Here is an example of `-D' output: + + $ src/netperf -D 1.35 -H tardy.hpl.hp.com -f M + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com (15.9.116.144) port 0 AF_INET : demo + Interim result: 5.41 MBytes/s over 1.35 seconds ending at 1308789765.848 + Interim result: 11.07 MBytes/s over 1.36 seconds ending at 1308789767.206 + Interim result: 16.00 MBytes/s over 1.36 seconds ending at 1308789768.566 + Interim result: 20.66 MBytes/s over 1.36 seconds ending at 1308789769.922 + Interim result: 22.74 MBytes/s over 1.36 seconds ending at 1308789771.285 + Interim result: 23.07 MBytes/s over 1.36 seconds ending at 1308789772.647 + Interim result: 23.77 MBytes/s over 1.37 seconds ending at 1308789774.016 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. MBytes/sec + + 87380 16384 16384 10.06 17.81 + + Notice how the units of the interim result track that requested by +the `-f' option. Also notice that sometimes the interval will be +longer than the value specified in the `-D' option. This is normal and +stems from how demo mode is implemented not by relying on interval +timers or frequent calls to get the current time, but by calculating +how many units of work must be performed to take at least the desired +interval. + + Those familiar with this option in earlier versions of netperf will +note the addition of the "ending at" text. This is the time as +reported by a `gettimeofday()' call (or its emulation) with a `NULL' +timezone pointer. This addition is intended to make it easier to +insert interim results into an rrdtool +(http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html) Round-Robin +Database (RRD). A likely bug-riddled example of doing so can be found +in `doc/examples/netperf_interim_to_rrd.sh'. The time is reported out +to milliseconds rather than microseconds because that is the most +rrdtool understands as of the time of this writing. + + As of this writing, a `make install' will not actually update the +files `/etc/services' and/or `/etc/inetd.conf' or their +platform-specific equivalents. It remains necessary to perform that +bit of installation magic by hand. Patches to the makefile sources to +effect an automagic editing of the necessary files to have netperf +installed as a child of inetd would be most welcome. + + Starting the netserver as a standalone daemon should be as easy as: + $ netserver + Starting netserver at port 12865 + Starting netserver at hostname 0.0.0.0 port 12865 and family 0 + + Over time the specifics of the messages netserver prints to the +screen may change but the gist will remain the same. + + If the compilation of netperf or netserver happens to fail, feel free +to contact or join and ask in +. However, it is quite important that you +include the actual compilation errors and perhaps even the configure +log in your email. Otherwise, it will be that much more difficult for +someone to assist you. + +2.3 Verifying Installation +========================== + +Basically, once netperf is installed and netserver is configured as a +child of inetd, or launched as a standalone daemon, simply typing: + netperf + should result in output similar to the following: + $ netperf + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 2997.84 + +3 The Design of Netperf +*********************** + +Netperf is designed around a basic client-server model. There are two +executables - netperf and netserver. Generally you will only execute +the netperf program, with the netserver program being invoked by the +remote system's inetd or having been previously started as its own +standalone daemon. + + When you execute netperf it will establish a "control connection" to +the remote system. This connection will be used to pass test +configuration information and results to and from the remote system. +Regardless of the type of test to be run, the control connection will +be a TCP connection using BSD sockets. The control connection can use +either IPv4 or IPv6. + + Once the control connection is up and the configuration information +has been passed, a separate "data" connection will be opened for the +measurement itself using the API's and protocols appropriate for the +specified test. When the test is completed, the data connection will +be torn-down and results from the netserver will be passed-back via the +control connection and combined with netperf's result for display to +the user. + + Netperf places no traffic on the control connection while a test is +in progress. Certain TCP options, such as SO_KEEPALIVE, if set as your +systems' default, may put packets out on the control connection while a +test is in progress. Generally speaking this will have no effect on +the results. + +3.1 CPU Utilization +=================== + +CPU utilization is an important, and alas all-too infrequently reported +component of networking performance. Unfortunately, it can be one of +the most difficult metrics to measure accurately and portably. Netperf +will do its level best to report accurate CPU utilization figures, but +some combinations of processor, OS and configuration may make that +difficult. + + CPU utilization in netperf is reported as a value between 0 and 100% +regardless of the number of CPUs involved. In addition to CPU +utilization, netperf will report a metric called a "service demand". +The service demand is the normalization of CPU utilization and work +performed. For a _STREAM test it is the microseconds of CPU time +consumed to transfer on KB (K == 1024) of data. For a _RR test it is +the microseconds of CPU time consumed processing a single transaction. +For both CPU utilization and service demand, lower is better. + + Service demand can be particularly useful when trying to gauge the +effect of a performance change. It is essentially a measure of +efficiency, with smaller values being more efficient and thus "better." + + Netperf is coded to be able to use one of several, generally +platform-specific CPU utilization measurement mechanisms. Single +letter codes will be included in the CPU portion of the test banner to +indicate which mechanism was used on each of the local (netperf) and +remote (netserver) system. + + As of this writing those codes are: + +`U' + The CPU utilization measurement mechanism was unknown to netperf or + netperf/netserver was not compiled to include CPU utilization + measurements. The code for the null CPU utilization mechanism can + be found in `src/netcpu_none.c'. + +`I' + An HP-UX-specific CPU utilization mechanism whereby the kernel + incremented a per-CPU counter by one for each trip through the idle + loop. This mechanism was only available on specially-compiled HP-UX + kernels prior to HP-UX 10 and is mentioned here only for the sake + of historical completeness and perhaps as a suggestion to those + who might be altering other operating systems. While rather + simple, perhaps even simplistic, this mechanism was quite robust + and was not affected by the concerns of statistical methods, or + methods attempting to track time in each of user, kernel, + interrupt and idle modes which require quite careful accounting. + It can be thought-of as the in-kernel version of the looper `L' + mechanism without the context switch overhead. This mechanism + required calibration. + +`P' + An HP-UX-specific CPU utilization mechanism whereby the kernel + keeps-track of time (in the form of CPU cycles) spent in the kernel + idle loop (HP-UX 10.0 to 11.31 inclusive), or where the kernel + keeps track of time spent in idle, user, kernel and interrupt + processing (HP-UX 11.23 and later). The former requires + calibration, the latter does not. Values in either case are + retrieved via one of the pstat(2) family of calls, hence the use + of the letter `P'. The code for these mechanisms is found in + `src/netcpu_pstat.c' and `src/netcpu_pstatnew.c' respectively. + +`K' + A Solaris-specific CPU utilization mechanism whereby the kernel + keeps track of ticks (eg HZ) spent in the idle loop. This method + is statistical and is known to be inaccurate when the interrupt + rate is above epsilon as time spent processing interrupts is not + subtracted from idle. The value is retrieved via a kstat() call - + hence the use of the letter `K'. Since this mechanism uses units + of ticks (HZ) the calibration value should invariably match HZ. + (Eg 100) The code for this mechanism is implemented in + `src/netcpu_kstat.c'. + +`M' + A Solaris-specific mechanism available on Solaris 10 and latter + which uses the new microstate accounting mechanisms. There are + two, alas, overlapping, mechanisms. The first tracks nanoseconds + spent in user, kernel, and idle modes. The second mechanism tracks + nanoseconds spent in interrupt. Since the mechanisms overlap, + netperf goes through some hand-waving to try to "fix" the problem. + Since the accuracy of the handwaving cannot be completely + determined, one must presume that while better than the `K' + mechanism, this mechanism too is not without issues. The values + are retrieved via kstat() calls, but the letter code is set to `M' + to distinguish this mechanism from the even less accurate `K' + mechanism. The code for this mechanism is implemented in + `src/netcpu_kstat10.c'. + +`L' + A mechanism based on "looper"or "soaker" processes which sit in + tight loops counting as fast as they possibly can. This mechanism + starts a looper process for each known CPU on the system. The + effect of processor hyperthreading on the mechanism is not yet + known. This mechanism definitely requires calibration. The code + for the "looper"mechanism can be found in `src/netcpu_looper.c' + +`N' + A Microsoft Windows-specific mechanism, the code for which can be + found in `src/netcpu_ntperf.c'. This mechanism too is based on + what appears to be a form of micro-state accounting and requires no + calibration. On laptops, or other systems which may dynamically + alter the CPU frequency to minimize power consumption, it has been + suggested that this mechanism may become slightly confused, in + which case using BIOS/uEFI settings to disable the power saving + would be indicated. + +`S' + This mechanism uses `/proc/stat' on Linux to retrieve time (ticks) + spent in idle mode. It is thought but not known to be reasonably + accurate. The code for this mechanism can be found in + `src/netcpu_procstat.c'. + +`C' + A mechanism somewhat similar to `S' but using the sysctl() call on + BSD-like Operating systems (*BSD and MacOS X). The code for this + mechanism can be found in `src/netcpu_sysctl.c'. + +`Others' + Other mechanisms included in netperf in the past have included + using the times() and getrusage() calls. These calls are actually + rather poorly suited to the task of measuring CPU overhead for + networking as they tend to be process-specific and much + network-related processing can happen outside the context of a + process, in places where it is not a given it will be charged to + the correct, or even a process. They are mentioned here as a + warning to anyone seeing those mechanisms used in other networking + benchmarks. These mechanisms are not available in netperf 2.4.0 + and later. + + For many platforms, the configure script will chose the best +available CPU utilization mechanism. However, some platforms have no +particularly good mechanisms. On those platforms, it is probably best +to use the "LOOPER" mechanism which is basically some number of +processes (as many as there are processors) sitting in tight little +loops counting as fast as they can. The rate at which the loopers +count when the system is believed to be idle is compared with the rate +when the system is running netperf and the ratio is used to compute CPU +utilization. + + In the past, netperf included some mechanisms that only reported CPU +time charged to the calling process. Those mechanisms have been +removed from netperf versions 2.4.0 and later because they are +hopelessly inaccurate. Networking can and often results in CPU time +being spent in places - such as interrupt contexts - that do not get +charged to a or the correct process. + + In fact, time spent in the processing of interrupts is a common issue +for many CPU utilization mechanisms. In particular, the "PSTAT" +mechanism was eventually known to have problems accounting for certain +interrupt time prior to HP-UX 11.11 (11iv1). HP-UX 11iv2 and later are +known/presumed to be good. The "KSTAT" mechanism is known to have +problems on all versions of Solaris up to and including Solaris 10. +Even the microstate accounting available via kstat in Solaris 10 has +issues, though perhaps not as bad as those of prior versions. + + The /proc/stat mechanism under Linux is in what the author would +consider an "uncertain" category as it appears to be statistical, which +may also have issues with time spent processing interrupts. + + In summary, be sure to "sanity-check" the CPU utilization figures +with other mechanisms. However, platform tools such as top, vmstat or +mpstat are often based on the same mechanisms used by netperf. + +3.1.1 CPU Utilization in a Virtual Guest +---------------------------------------- + +The CPU utilization mechanisms used by netperf are "inline" in that +they are run by the same netperf or netserver process as is running the +test itself. This works just fine for "bare iron" tests but runs into +a problem when using virtual machines. + + The relationship between virtual guest and hypervisor can be thought +of as being similar to that between a process and kernel in a bare iron +system. As such, (m)any CPU utilization mechanisms used in the virtual +guest are similar to "process-local" mechanisms in a bare iron +situation. However, just as with bare iron and process-local +mechanisms, much networking processing happens outside the context of +the virtual guest. It takes place in the hypervisor, and is not +visible to mechanisms running in the guest(s). For this reason, one +should not really trust CPU utilization figures reported by netperf or +netserver when running in a virtual guest. + + If one is looking to measure the added overhead of a virtualization +mechanism, rather than rely on CPU utilization, one can rely instead on +netperf _RR tests - path-lengths and overheads can be a significant +fraction of the latency, so increases in overhead should appear as +decreases in transaction rate. Whatever you do, DO NOT rely on the +throughput of a _STREAM test. Achieving link-rate can be done via a +multitude of options that mask overhead rather than eliminate it. + +4 Global Command-line Options +***************************** + +This section describes each of the global command-line options +available in the netperf and netserver binaries. Essentially, it is an +expanded version of the usage information displayed by netperf or +netserver when invoked with the `-h' global command-line option. + +4.1 Command-line Options Syntax +=============================== + +Revision 1.8 of netperf introduced enough new functionality to overrun +the English alphabet for mnemonic command-line option names, and the +author was not and is not quite ready to switch to the contemporary +`--mumble' style of command-line options. (Call him a Luddite if you +wish :). + + For this reason, the command-line options were split into two parts - +the first are the global command-line options. They are options that +affect nearly any and every test type of netperf. The second type are +the test-specific command-line options. Both are entered on the same +command line, but they must be separated from one another by a `--' for +correct parsing. Global command-line options come first, followed by +the `--' and then test-specific command-line options. If there are no +test-specific options to be set, the `--' may be omitted. If there are +no global command-line options to be set, test-specific options must +still be preceded by a `--'. For example: + netperf -- + sets both global and test-specific options: + netperf + sets just global options and: + netperf -- + sets just test-specific options. + +4.2 Global Options +================== + +`-a ' + This option allows you to alter the alignment of the buffers used + in the sending and receiving calls on the local system.. Changing + the alignment of the buffers can force the system to use different + copy schemes, which can have a measurable effect on performance. + If the page size for the system were 4096 bytes, and you want to + pass page-aligned buffers beginning on page boundaries, you could + use `-a 4096'. By default the units are bytes, but suffix of "G," + "M," or "K" will specify the units to be 2^30 (GB), 2^20 (MB) or + 2^10 (KB) respectively. A suffix of "g," "m" or "k" will specify + units of 10^9, 10^6 or 10^3 bytes respectively. [Default: 8 bytes] + +`-A ' + This option is identical to the `-a' option with the difference + being it affects alignments for the remote system. + +`-b ' + This option is only present when netperf has been configure with + -enable-intervals=yes prior to compilation. It sets the size of + the burst of send calls in a _STREAM test. When used in + conjunction with the `-w' option it can cause the rate at which + data is sent to be "paced." + +`-B ' + This option will cause `' to be appended to the brief (see + -P) output of netperf. + +`-c [rate]' + This option will ask that CPU utilization and service demand be + calculated for the local system. For those CPU utilization + mechanisms requiring calibration, the options rate parameter may + be specified to preclude running another calibration step, saving + 40 seconds of time. For those CPU utilization mechanisms + requiring no calibration, the optional rate parameter will be + utterly and completely ignored. [Default: no CPU measurements] + +`-C [rate]' + This option requests CPU utilization and service demand + calculations for the remote system. It is otherwise identical to + the `-c' option. + +`-d' + Each instance of this option will increase the quantity of + debugging output displayed during a test. If the debugging output + level is set high enough, it may have a measurable effect on + performance. Debugging information for the local system is + printed to stdout. Debugging information for the remote system is + sent by default to the file `/tmp/netperf.debug'. [Default: no + debugging output] + +`-D [interval,units]' + This option is only available when netperf is configured with + -enable-demo=yes. When set, it will cause netperf to emit periodic + reports of performance during the run. [INTERVAL,UNITS] follow + the semantics of an optionspec. If specified, INTERVAL gives the + minimum interval in real seconds, it does not have to be whole + seconds. The UNITS value can be used for the first guess as to + how many units of work (bytes or transactions) must be done to + take at least INTERVAL seconds. If omitted, INTERVAL defaults to + one second and UNITS to values specific to each test type. + +`-f G|M|K|g|m|k|x' + This option can be used to change the reporting units for _STREAM + tests. Arguments of "G," "M," or "K" will set the units to 2^30, + 2^20 or 2^10 bytes/s respectively (EG power of two GB, MB or KB). + Arguments of "g," ",m" or "k" will set the units to 10^9, 10^6 or + 10^3 bits/s respectively. An argument of "x" requests the units + be transactions per second and is only meaningful for a + request-response test. [Default: "m" or 10^6 bits/s] + +`-F ' + This option specified the file from which send which buffers will + be pre-filled . While the buffers will contain data from the + specified file, the file is not fully transferred to the remote + system as the receiving end of the test will not write the + contents of what it receives to a file. This can be used to + pre-fill the send buffers with data having different + compressibility and so is useful when measuring performance over + mechanisms which perform compression. + + While previously required for a TCP_SENDFILE test, later versions + of netperf removed that restriction, creating a temporary file as + needed. While the author cannot recall exactly when that took + place, it is known to be unnecessary in version 2.5.0 and later. + +`-h' + This option causes netperf to display its "global" usage string and + exit to the exclusion of all else. + +`-H ' + This option will set the name of the remote system and or the + address family used for the control connection. For example: + -H linger,4 + will set the name of the remote system to "linger" and tells + netperf to use IPv4 addressing only. + -H ,6 + will leave the name of the remote system at its default, and + request that only IPv6 addresses be used for the control + connection. + -H lag + will set the name of the remote system to "lag" and leave the + address family to AF_UNSPEC which means selection of IPv4 vs IPv6 + is left to the system's address resolution. + + A value of "inet" can be used in place of "4" to request IPv4 only + addressing. Similarly, a value of "inet6" can be used in place of + "6" to request IPv6 only addressing. A value of "0" can be used + to request either IPv4 or IPv6 addressing as name resolution + dictates. + + By default, the options set with the global `-H' option are + inherited by the test for its data connection, unless a + test-specific `-H' option is specified. + + If a `-H' option follows either the `-4' or `-6' options, the + family setting specified with the -H option will override the `-4' + or `-6' options for the remote address family. If no address + family is specified, settings from a previous `-4' or `-6' option + will remain. In a nutshell, the last explicit global command-line + option wins. + + [Default: "localhost" for the remote name/IP address and "0" (eg + AF_UNSPEC) for the remote address family.] + +`-I ' + This option enables the calculation of confidence intervals and + sets the confidence and width parameters with the first half of the + optionspec being either 99 or 95 for 99% or 95% confidence + respectively. The second value of the optionspec specifies the + width of the desired confidence interval. For example + -I 99,5 + asks netperf to be 99% confident that the measured mean values for + throughput and CPU utilization are within +/- 2.5% of the "real" + mean values. If the `-i' option is specified and the `-I' option + is omitted, the confidence defaults to 99% and the width to 5% + (giving +/- 2.5%) + + If classic netperf test calculates that the desired confidence + intervals have not been met, it emits a noticeable warning that + cannot be suppressed with the `-P' or `-v' options: + + netperf -H tardy.cup -i 3 -I 99,5 + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.cup.hp.com (15.244.44.58) port 0 AF_INET : +/-2.5% 99% conf. + !!! WARNING + !!! Desired confidence was not achieved within the specified iterations. + !!! This implies that there was variability in the test environment that + !!! must be investigated before going further. + !!! Confidence intervals: Throughput : 6.8% + !!! Local CPU util : 0.0% + !!! Remote CPU util : 0.0% + + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.01 40.23 + + In the example above we see that netperf did not meet the desired + confidence intervals. Instead of being 99% confident it was within + +/- 2.5% of the real mean value of throughput it is only confident + it was within +/-3.4%. In this example, increasing the `-i' + option (described below) and/or increasing the iteration length + with the `-l' option might resolve the situation. + + In an explicit "omni" test, failure to meet the confidence + intervals will not result in netperf emitting a warning. To + verify the hitting, or not, of the confidence intervals one will + need to include them as part of an *note output selection: Omni + Output Selection. in the test-specific `-o', `-O' or `k' output + selection options. The warning about not hitting the confidence + intervals will remain in a "migrated" classic netperf test. + +`-i ' + This option enables the calculation of confidence intervals and + sets the minimum and maximum number of iterations to run in + attempting to achieve the desired confidence interval. The first + value sets the maximum number of iterations to run, the second, + the minimum. The maximum number of iterations is silently capped + at 30 and the minimum is silently floored at 3. Netperf repeats + the measurement the minimum number of iterations and continues + until it reaches either the desired confidence interval, or the + maximum number of iterations, whichever comes first. A classic or + migrated netperf test will not display the actual number of + iterations run. An *note omni test: The Omni Tests. will emit the + number of iterations run if the `CONFIDENCE_ITERATION' output + selector is included in the *note output selection: Omni Output + Selection. + + If the `-I' option is specified and the `-i' option omitted the + maximum number of iterations is set to 10 and the minimum to three. + + Output of a warning upon not hitting the desired confidence + intervals follows the description provided for the `-I' option. + + The total test time will be somewhere between the minimum and + maximum number of iterations multiplied by the test length + supplied by the `-l' option. + +`-j' + This option instructs netperf to keep additional timing statistics + when explicitly running an *note omni test: The Omni Tests. These + can be output when the test-specific `-o', `-O' or `-k' *note + output selectors: Omni Output Selectors. include one or more of: + + * MIN_LATENCY + + * MAX_LATENCY + + * P50_LATENCY + + * P90_LATENCY + + * P99_LATENCY + + * MEAN_LATENCY + + * STDDEV_LATENCY + + These statistics will be based on an expanded (100 buckets per row + rather than 10) histogram of times rather than a terribly long + list of individual times. As such, there will be some slight + error thanks to the bucketing. However, the reduction in storage + and processing overheads is well worth it. When running a + request/response test, one might get some idea of the error by + comparing the *note `MEAN_LATENCY': Omni Output Selectors. + calculated from the histogram with the `RT_LATENCY' calculated + from the number of request/response transactions and the test run + time. + + In the case of a request/response test the latencies will be + transaction latencies. In the case of a receive-only test they + will be time spent in the receive call. In the case of a + send-only test they will be time spent in the send call. The units + will be microseconds. Added in netperf 2.5.0. + +`-l testlen' + This option controls the length of any one iteration of the + requested test. A positive value for TESTLEN will run each + iteration of the test for at least TESTLEN seconds. A negative + value for TESTLEN will run each iteration for the absolute value of + TESTLEN transactions for a _RR test or bytes for a _STREAM test. + Certain tests, notably those using UDP can only be timed, they + cannot be limited by transaction or byte count. This limitation + may be relaxed in an *note omni: The Omni Tests. test. + + In some situations, individual iterations of a test may run for + longer for the number of seconds specified by the `-l' option. In + particular, this may occur for those tests where the socket buffer + size(s) are significantly longer than the bandwidthXdelay product + of the link(s) over which the data connection passes, or those + tests where there may be non-trivial numbers of retransmissions. + + If confidence intervals are enabled via either `-I' or `-i' the + total length of the netperf test will be somewhere between the + minimum and maximum iteration count multiplied by TESTLEN. + +`-L ' + This option is identical to the `-H' option with the difference + being it sets the _local_ hostname/IP and/or address family + information. This option is generally unnecessary, but can be + useful when you wish to make sure that the netperf control and data + connections go via different paths. It can also come-in handy if + one is trying to run netperf through those evil, end-to-end + breaking things known as firewalls. + + [Default: 0.0.0.0 (eg INADDR_ANY) for IPv4 and ::0 for IPv6 for the + local name. AF_UNSPEC for the local address family.] + +`-n numcpus' + This option tells netperf how many CPUs it should ass-u-me are + active on the system running netperf. In particular, this is used + for the *note CPU utilization: CPU Utilization. and service demand + calculations. On certain systems, netperf is able to determine + the number of CPU's automagically. This option will override any + number netperf might be able to determine on its own. + + Note that this option does _not_ set the number of CPUs on the + system running netserver. When netperf/netserver cannot + automagically determine the number of CPUs that can only be set + for netserver via a netserver `-n' command-line option. + + As it is almost universally possible for netperf/netserver to + determine the number of CPUs on the system automagically, 99 times + out of 10 this option should not be necessary and may be removed + in a future release of netperf. + +`-N' + This option tells netperf to forgo establishing a control + connection. This makes it is possible to run some limited netperf + tests without a corresponding netserver on the remote system. + + With this option set, the test to be run is to get all the + addressing information it needs to establish its data connection + from the command line or internal defaults. If not otherwise + specified by test-specific command line options, the data + connection for a "STREAM" or "SENDFILE" test will be to the + "discard" port, an "RR" test will be to the "echo" port, and a + "MEARTS" test will be to the chargen port. + + The response size of an "RR" test will be silently set to be the + same as the request size. Otherwise the test would hang if the + response size was larger than the request size, or would report an + incorrect, inflated transaction rate if the response size was less + than the request size. + + Since there is no control connection when this option is + specified, it is not possible to set "remote" properties such as + socket buffer size and the like via the netperf command line. Nor + is it possible to retrieve such interesting remote information as + CPU utilization. These items will be displayed as values which + should make it immediately obvious that was the case. + + The only way to change remote characteristics such as socket buffer + size or to obtain information such as CPU utilization is to employ + platform-specific methods on the remote system. Frankly, if one + has access to the remote system to employ those methods one aught + to be able to run a netserver there. However, that ability may + not be present in certain "support" situations, hence the addition + of this option. + + Added in netperf 2.4.3. + +`-o ' + The value(s) passed-in with this option will be used as an offset + added to the alignment specified with the `-a' option. For + example: + -o 3 -a 4096 + will cause the buffers passed to the local (netperf) send and + receive calls to begin three bytes past an address aligned to 4096 + bytes. [Default: 0 bytes] + +`-O ' + This option behaves just as the `-o' option but on the remote + (netserver) system and in conjunction with the `-A' option. + [Default: 0 bytes] + +`-p ' + The first value of the optionspec passed-in with this option tells + netperf the port number at which it should expect the remote + netserver to be listening for control connections. The second + value of the optionspec will request netperf to bind to that local + port number before establishing the control connection. For + example + -p 12345 + tells netperf that the remote netserver is listening on port 12345 + and leaves selection of the local port number for the control + connection up to the local TCP/IP stack whereas + -p ,32109 + leaves the remote netserver port at the default value of 12865 and + causes netperf to bind to the local port number 32109 before + connecting to the remote netserver. + + In general, setting the local port number is only necessary when + one is looking to run netperf through those evil, end-to-end + breaking things known as firewalls. + +`-P 0|1' + A value of "1" for the `-P' option will enable display of the test + banner. A value of "0" will disable display of the test banner. + One might want to disable display of the test banner when running + the same basic test type (eg TCP_STREAM) multiple times in + succession where the test banners would then simply be redundant + and unnecessarily clutter the output. [Default: 1 - display test + banners] + +`-s ' + This option will cause netperf to sleep `' before + actually transferring data over the data connection. This may be + useful in situations where one wishes to start a great many netperf + instances and do not want the earlier ones affecting the ability of + the later ones to get established. + + Added somewhere between versions 2.4.3 and 2.5.0. + +`-S' + This option will cause an attempt to be made to set SO_KEEPALIVE on + the data socket of a test using the BSD sockets interface. The + attempt will be made on the netperf side of all tests, and will be + made on the netserver side of an *note omni: The Omni Tests. or + *note migrated: Migrated Tests. test. No indication of failure is + given unless debug output is enabled with the global `-d' option. + + Added in version 2.5.0. + +`-t testname' + This option is used to tell netperf which test you wish to run. + As of this writing, valid values for TESTNAME include: + * *note TCP_STREAM::, *note TCP_MAERTS::, *note TCP_SENDFILE::, + *note TCP_RR::, *note TCP_CRR::, *note TCP_CC:: + + * *note UDP_STREAM::, *note UDP_RR:: + + * *note XTI_TCP_STREAM::, *note XTI_TCP_RR::, *note + XTI_TCP_CRR::, *note XTI_TCP_CC:: + + * *note XTI_UDP_STREAM::, *note XTI_UDP_RR:: + + * *note SCTP_STREAM::, *note SCTP_RR:: + + * *note DLCO_STREAM::, *note DLCO_RR::, *note DLCL_STREAM::, + *note DLCL_RR:: + + * *note LOC_CPU: Other Netperf Tests, *note REM_CPU: Other + Netperf Tests. + + * *note OMNI: The Omni Tests. + Not all tests are always compiled into netperf. In particular, the + "XTI," "SCTP," "UNIXDOMAIN," and "DL*" tests are only included in + netperf when configured with + `--enable-[xti|sctp|unixdomain|dlpi]=yes'. + + Netperf only runs one type of test no matter how many `-t' options + may be present on the command-line. The last `-t' global + command-line option will determine the test to be run. [Default: + TCP_STREAM] + +`-T ' + This option controls the CPU, and probably by extension memory, + affinity of netperf and/or netserver. + netperf -T 1 + will bind both netperf and netserver to "CPU 1" on their respective + systems. + netperf -T 1, + will bind just netperf to "CPU 1" and will leave netserver unbound. + netperf -T ,2 + will leave netperf unbound and will bind netserver to "CPU 2." + netperf -T 1,2 + will bind netperf to "CPU 1" and netserver to "CPU 2." + + This can be particularly useful when investigating performance + issues involving where processes run relative to where NIC + interrupts are processed or where NICs allocate their DMA buffers. + +`-v verbosity' + This option controls how verbose netperf will be in its output, + and is often used in conjunction with the `-P' option. If the + verbosity is set to a value of "0" then only the test's SFM (Single + Figure of Merit) is displayed. If local *note CPU utilization: + CPU Utilization. is requested via the `-c' option then the SFM is + the local service demand. Othersise, if remote CPU utilization is + requested via the `-C' option then the SFM is the remote service + demand. If neither local nor remote CPU utilization are requested + the SFM will be the measured throughput or transaction rate as + implied by the test specified with the `-t' option. + + If the verbosity level is set to "1" then the "normal" netperf + result output for each test is displayed. + + If the verbosity level is set to "2" then "extra" information will + be displayed. This may include, but is not limited to the number + of send or recv calls made and the average number of bytes per + send or recv call, or a histogram of the time spent in each send() + call or for each transaction if netperf was configured with + `--enable-histogram=yes'. [Default: 1 - normal verbosity] + + In an *note omni: The Omni Tests. test the verbosity setting is + largely ignored, save for when asking for the time histogram to be + displayed. In version 2.5.0 and later there is no *note output + selector: Omni Output Selectors. for the histogram and so it + remains displayed only when the verbosity level is set to 2. + +`-V' + This option displays the netperf version and then exits. + + Added in netperf 2.4.4. + +`-w time' + If netperf was configured with `--enable-intervals=yes' then this + value will set the inter-burst time to time milliseconds, and the + `-b' option will set the number of sends per burst. The actual + inter-burst time may vary depending on the system's timer + resolution. + +`-W ' + This option controls the number of buffers in the send (first or + only value) and or receive (second or only value) buffer rings. + Unlike some benchmarks, netperf does not continuously send or + receive from a single buffer. Instead it rotates through a ring of + buffers. [Default: One more than the size of the send or receive + socket buffer sizes (`-s' and/or `-S' options) divided by the send + `-m' or receive `-M' buffer size respectively] + +`-4' + Specifying this option will set both the local and remote address + families to AF_INET - that is use only IPv4 addresses on the + control connection. This can be overridden by a subsequent `-6', + `-H' or `-L' option. Basically, the last option explicitly + specifying an address family wins. Unless overridden by a + test-specific option, this will be inherited for the data + connection as well. + +`-6' + Specifying this option will set both local and and remote address + families to AF_INET6 - that is use only IPv6 addresses on the + control connection. This can be overridden by a subsequent `-4', + `-H' or `-L' option. Basically, the last address family + explicitly specified wins. Unless overridden by a test-specific + option, this will be inherited for the data connection as well. + + +5 Using Netperf to Measure Bulk Data Transfer +********************************************* + +The most commonly measured aspect of networked system performance is +that of bulk or unidirectional transfer performance. Everyone wants to +know how many bits or bytes per second they can push across the +network. The classic netperf convention for a bulk data transfer test +name is to tack a "_STREAM" suffix to a test name. + +5.1 Issues in Bulk Transfer +=========================== + +There are any number of things which can affect the performance of a +bulk transfer test. + + Certainly, absent compression, bulk-transfer tests can be limited by +the speed of the slowest link in the path from the source to the +destination. If testing over a gigabit link, you will not see more +than a gigabit :) Such situations can be described as being +"network-limited" or "NIC-limited". + + CPU utilization can also affect the results of a bulk-transfer test. +If the networking stack requires a certain number of instructions or +CPU cycles per KB of data transferred, and the CPU is limited in the +number of instructions or cycles it can provide, then the transfer can +be described as being "CPU-bound". + + A bulk-transfer test can be CPU bound even when netperf reports less +than 100% CPU utilization. This can happen on an MP system where one +or more of the CPUs saturate at 100% but other CPU's remain idle. +Typically, a single flow of data, such as that from a single instance +of a netperf _STREAM test cannot make use of much more than the power +of one CPU. Exceptions to this generally occur when netperf and/or +netserver run on CPU(s) other than the CPU(s) taking interrupts from +the NIC(s). In that case, one might see as much as two CPUs' worth of +processing being used to service the flow of data. + + Distance and the speed-of-light can affect performance for a +bulk-transfer; often this can be mitigated by using larger windows. +One common limit to the performance of a transport using window-based +flow-control is: + Throughput <= WindowSize/RoundTripTime + As the sender can only have a window's-worth of data outstanding on +the network at any one time, and the soonest the sender can receive a +window update from the receiver is one RoundTripTime (RTT). TCP and +SCTP are examples of such protocols. + + Packet losses and their effects can be particularly bad for +performance. This is especially true if the packet losses result in +retransmission timeouts for the protocol(s) involved. By the time a +retransmission timeout has happened, the flow or connection has sat +idle for a considerable length of time. + + On many platforms, some variant on the `netstat' command can be used +to retrieve statistics about packet loss and retransmission. For +example: + netstat -p tcp + will retrieve TCP statistics on the HP-UX Operating System. On other +platforms, it may not be possible to retrieve statistics for a specific +protocol and something like: + netstat -s + would be used instead. + + Many times, such network statistics are keep since the time the stack +started, and we are only really interested in statistics from when +netperf was running. In such situations something along the lines of: + netstat -p tcp > before + netperf -t TCP_mumble... + netstat -p tcp > after + is indicated. The beforeafter +(ftp://ftp.cup.hp.com/dist/networking/tools/) utility can be used to +subtract the statistics in `before' from the statistics in `after': + beforeafter before after > delta + and then one can look at the statistics in `delta'. Beforeafter is +distributed in source form so one can compile it on the platform(s) of +interest. + + If running a version 2.5.0 or later "omni" test under Linux one can +include either or both of: + * LOCAL_TRANSPORT_RETRANS + + * REMOTE_TRANSPORT_RETRANS + + in the values provided via a test-specific `-o', `-O', or `-k' +output selction option and netperf will report the retransmissions +experienced on the data connection, as reported via a +`getsockopt(TCP_INFO)' call. If confidence intervals have been +requested via the global `-I' or `-i' options, the reported value(s) +will be for the last iteration. If the test is over a protocol other +than TCP, or on a platform other than Linux, the results are undefined. + + While it was written with HP-UX's netstat in mind, the annotated +netstat +(ftp://ftp.cup.hp.com/dist/networking/briefs/annotated_netstat.txt) +writeup may be helpful with other platforms as well. + +5.2 Options common to TCP UDP and SCTP tests +============================================ + +Many "test-specific" options are actually common across the different +tests. For those tests involving TCP, UDP and SCTP, whether using the +BSD Sockets or the XTI interface those common options include: + +`-h' + Display the test-suite-specific usage string and exit. For a TCP_ + or UDP_ test this will be the usage string from the source file + nettest_bsd.c. For an XTI_ test, this will be the usage string + from the source file nettest_xti.c. For an SCTP test, this will + be the usage string from the source file nettest_sctp.c. + +`-H ' + Normally, the remote hostname|IP and address family information is + inherited from the settings for the control connection (eg global + command-line `-H', `-4' and/or `-6' options). The test-specific + `-H' will override those settings for the data (aka test) + connection only. Settings for the control connection are left + unchanged. + +`-L ' + The test-specific `-L' option is identical to the test-specific + `-H' option except it affects the local hostname|IP and address + family information. As with its global command-line counterpart, + this is generally only useful when measuring though those evil, + end-to-end breaking things called firewalls. + +`-m bytes' + Set the size of the buffer passed-in to the "send" calls of a + _STREAM test. Note that this may have only an indirect effect on + the size of the packets sent over the network, and certain Layer 4 + protocols do _not_ preserve or enforce message boundaries, so + setting `-m' for the send size does not necessarily mean the + receiver will receive that many bytes at any one time. By default + the units are bytes, but suffix of "G," "M," or "K" will specify + the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-m 32K' + will set the size to 32KB or 32768 bytes. [Default: the local send + socket buffer size for the connection - either the system's + default or the value set via the `-s' option.] + +`-M bytes' + Set the size of the buffer passed-in to the "recv" calls of a + _STREAM test. This will be an upper bound on the number of bytes + received per receive call. By default the units are bytes, but + suffix of "G," "M," or "K" will specify the units to be 2^30 (GB), + 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," "m" or "k" + will specify units of 10^9, 10^6 or 10^3 bytes respectively. For + example: + `-M 32K' + will set the size to 32KB or 32768 bytes. [Default: the remote + receive socket buffer size for the data connection - either the + system's default or the value set via the `-S' option.] + +`-P ' + Set the local and/or remote port numbers for the data connection. + +`-s ' + This option sets the local (netperf) send and receive socket buffer + sizes for the data connection to the value(s) specified. Often, + this will affect the advertised and/or effective TCP or other + window, but on some platforms it may not. By default the units are + bytes, but suffix of "G," "M," or "K" will specify the units to be + 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," + "m" or "k" will specify units of 10^9, 10^6 or 10^3 bytes + respectively. For example: + `-s 128K' + Will request the local send and receive socket buffer sizes to be + 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. Further, while the historic expectation + is that the value specified in a `setsockopt()' call will be the + value returned via a `getsockopt()' call, at least one stack is + known to deliberately ignore history. When running under Windows + a value of 0 may be used which will be an indication to the stack + the user wants to enable a form of copy avoidance. [Default: -1 - + use the system's default socket buffer sizes] + +`-S ' + This option sets the remote (netserver) send and/or receive socket + buffer sizes for the data connection to the value(s) specified. + Often, this will affect the advertised and/or effective TCP or + other window, but on some platforms it may not. By default the + units are bytes, but suffix of "G," "M," or "K" will specify the + units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-S 128K' + Will request the remote send and receive socket buffer sizes to be + 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. Further, while the historic expectation + is that the value specified in a `setsockopt()' call will be the + value returned via a `getsockopt()' call, at least one stack is + known to deliberately ignore history. When running under Windows + a value of 0 may be used which will be an indication to the stack + the user wants to enable a form of copy avoidance. [Default: -1 - + use the system's default socket buffer sizes] + +`-4' + Set the local and remote address family for the data connection to + AF_INET - ie use IPv4 addressing only. Just as with their global + command-line counterparts the last of the `-4', `-6', `-H' or `-L' + option wins for their respective address families. + +`-6' + This option is identical to its `-4' cousin, but requests IPv6 + addresses for the local and remote ends of the data connection. + + +5.2.1 TCP_STREAM +---------------- + +The TCP_STREAM test is the default test in netperf. It is quite +simple, transferring some quantity of data from the system running +netperf to the system running netserver. While time spent establishing +the connection is not included in the throughput calculation, time +spent flushing the last of the data to the remote at the end of the +test is. This is how netperf knows that all the data it sent was +received by the remote. In addition to the *note options common to +STREAM tests: Options common to TCP UDP and SCTP tests, the following +test-specific options can be included to possibly alter the behavior of +the test: + +`-C' + This option will set TCP_CORK mode on the data connection on those + systems where TCP_CORK is defined (typically Linux). A full + description of TCP_CORK is beyond the scope of this manual, but in + a nutshell it forces sub-MSS sends to be buffered so every segment + sent is Maximum Segment Size (MSS) unless the application performs + an explicit flush operation or the connection is closed. At + present netperf does not perform any explicit flush operations. + Setting TCP_CORK may improve the bitrate of tests where the "send + size" (`-m' option) is smaller than the MSS. It should also + improve (make smaller) the service demand. + + The Linux tcp(7) manpage states that TCP_CORK cannot be used in + conjunction with TCP_NODELAY (set via the `-d' option), however + netperf does not validate command-line options to enforce that. + +`-D' + This option will set TCP_NODELAY on the data connection on those + systems where TCP_NODELAY is defined. This disables something + known as the Nagle Algorithm, which is intended to make the + segments TCP sends as large as reasonably possible. Setting + TCP_NODELAY for a TCP_STREAM test should either have no effect + when the send size (`-m' option) is larger than the MSS or will + decrease reported bitrate and increase service demand when the + send size is smaller than the MSS. This stems from TCP_NODELAY + causing each sub-MSS send to be its own TCP segment rather than + being aggregated with other small sends. This means more trips up + and down the protocol stack per KB of data transferred, which + means greater CPU utilization. + + If setting TCP_NODELAY with `-D' affects throughput and/or service + demand for tests where the send size (`-m') is larger than the MSS + it suggests the TCP/IP stack's implementation of the Nagle + Algorithm _may_ be broken, perhaps interpreting the Nagle + Algorithm on a segment by segment basis rather than the proper user + send by user send basis. However, a better test of this can be + achieved with the *note TCP_RR:: test. + + + Here is an example of a basic TCP_STREAM test, in this case from a +Debian Linux (2.6 kernel) system to an HP-UX 11iv2 (HP-UX 11.23) system: + + $ netperf -H lag + TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.00 80.42 + + We see that the default receive socket buffer size for the receiver +(lag - HP-UX 11.23) is 32768 bytes, and the default socket send buffer +size for the sender (Debian 2.6 kernel) is 16384 bytes, however Linux +does "auto tuning" of socket buffer and TCP window sizes, which means +the send socket buffer size may be different at the end of the test +than it was at the beginning. This is addressed in the *note omni +tests: The Omni Tests. added in version 2.5.0 and *note output +selection: Omni Output Selection. Throughput is expressed as 10^6 (aka +Mega) bits per second, and the test ran for 10 seconds. IPv4 addresses +(AF_INET) were used. + +5.2.2 TCP_MAERTS +---------------- + +A TCP_MAERTS (MAERTS is STREAM backwards) test is "just like" a *note +TCP_STREAM:: test except the data flows from the netserver to the +netperf. The global command-line `-F' option is ignored for this test +type. The test-specific command-line `-C' option is ignored for this +test type. + + Here is an example of a TCP_MAERTS test between the same two systems +as in the example for the *note TCP_STREAM:: test. This time we request +larger socket buffers with `-s' and `-S' options: + + $ netperf -H lag -t TCP_MAERTS -- -s 128K -S 128K + TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 221184 131072 131072 10.03 81.14 + + Where we see that Linux, unlike HP-UX, may not return the same value +in a `getsockopt()' as was requested in the prior `setsockopt()'. + + This test is included more for benchmarking convenience than anything +else. + +5.2.3 TCP_SENDFILE +------------------ + +The TCP_SENDFILE test is "just like" a *note TCP_STREAM:: test except +netperf the platform's `sendfile()' call instead of calling `send()'. +Often this results in a "zero-copy" operation where data is sent +directly from the filesystem buffer cache. This _should_ result in +lower CPU utilization and possibly higher throughput. If it does not, +then you may want to contact your vendor(s) because they have a problem +on their hands. + + Zero-copy mechanisms may also alter the characteristics (size and +number of buffers per) of packets passed to the NIC. In many stacks, +when a copy is performed, the stack can "reserve" space at the +beginning of the destination buffer for things like TCP, IP and Link +headers. This then has the packet contained in a single buffer which +can be easier to DMA to the NIC. When no copy is performed, there is +no opportunity to reserve space for headers and so a packet will be +contained in two or more buffers. + + As of some time before version 2.5.0, the *note global `-F' option: +Global Options. is no longer required for this test. If it is not +specified, netperf will create a temporary file, which it will delete +at the end of the test. If the `-F' option is specified it must +reference a file of at least the size of the send ring (*Note the +global `-W' option: Global Options.) multiplied by the send size (*Note +the test-specific `-m' option: Options common to TCP UDP and SCTP +tests.). All other TCP-specific options remain available and optional. + + In this first example: + $ netperf -H lag -F ../src/netperf -t TCP_SENDFILE -- -s 128K -S 128K + TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + alloc_sendfile_buf_ring: specified file too small. + file must be larger than send_width * send_size + + we see what happens when the file is too small. Here: + + $ netperf -H lag -F /boot/vmlinuz-2.6.8-1-686 -t TCP_SENDFILE -- -s 128K -S 128K + TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 131072 221184 221184 10.02 81.83 + + we resolve that issue by selecting a larger file. + +5.2.4 UDP_STREAM +---------------- + +A UDP_STREAM test is similar to a *note TCP_STREAM:: test except UDP is +used as the transport rather than TCP. + + A UDP_STREAM test has no end-to-end flow control - UDP provides none +and neither does netperf. However, if you wish, you can configure +netperf with `--enable-intervals=yes' to enable the global command-line +`-b' and `-w' options to pace bursts of traffic onto the network. + + This has a number of implications. + + The biggest of these implications is the data which is sent might not +be received by the remote. For this reason, the output of a UDP_STREAM +test shows both the sending and receiving throughput. On some +platforms, it may be possible for the sending throughput to be reported +as a value greater than the maximum rate of the link. This is common +when the CPU(s) are faster than the network and there is no +"intra-stack" flow-control. + + Here is an example of a UDP_STREAM test between two systems connected +by a 10 Gigabit Ethernet link: + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 32768 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Socket Message Elapsed Messages + Size Size Time Okay Errors Throughput + bytes bytes secs # # 10^6bits/sec + + 124928 32768 10.00 105672 0 2770.20 + 135168 10.00 104844 2748.50 + + The first line of numbers are statistics from the sending (netperf) +side. The second line of numbers are from the receiving (netserver) +side. In this case, 105672 - 104844 or 828 messages did not make it +all the way to the remote netserver process. + + If the value of the `-m' option is larger than the local send socket +buffer size (`-s' option) netperf will likely abort with an error +message about how the send call failed: + + netperf -t UDP_STREAM -H 192.168.2.125 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + udp_send: data send error: Message too long + + If the value of the `-m' option is larger than the remote socket +receive buffer, the reported receive throughput will likely be zero as +the remote UDP will discard the messages as being too large to fit into +the socket buffer. + + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 65000 -S 32768 + UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Socket Message Elapsed Messages + Size Size Time Okay Errors Throughput + bytes bytes secs # # 10^6bits/sec + + 124928 65000 10.00 53595 0 2786.99 + 65536 10.00 0 0.00 + + The example above was between a pair of systems running a "Linux" +kernel. Notice that the remote Linux system returned a value larger +than that passed-in to the `-S' option. In fact, this value was larger +than the message size set with the `-m' option. That the remote socket +buffer size is reported as 65536 bytes would suggest to any sane person +that a message of 65000 bytes would fit, but the socket isn't _really_ +65536 bytes, even though Linux is telling us so. Go figure. + +5.2.5 XTI_TCP_STREAM +-------------------- + +An XTI_TCP_STREAM test is simply a *note TCP_STREAM:: test using the XTI +rather than BSD Sockets interface. The test-specific `-X ' +option can be used to specify the name of the local and/or remote XTI +device files, which is required by the `t_open()' call made by netperf +XTI tests. + + The XTI_TCP_STREAM test is only present if netperf was configured +with `--enable-xti=yes'. The remote netserver must have also been +configured with `--enable-xti=yes'. + +5.2.6 XTI_UDP_STREAM +-------------------- + +An XTI_UDP_STREAM test is simply a *note UDP_STREAM:: test using the XTI +rather than BSD Sockets Interface. The test-specific `-X ' +option can be used to specify the name of the local and/or remote XTI +device files, which is required by the `t_open()' call made by netperf +XTI tests. + + The XTI_UDP_STREAM test is only present if netperf was configured +with `--enable-xti=yes'. The remote netserver must have also been +configured with `--enable-xti=yes'. + +5.2.7 SCTP_STREAM +----------------- + +An SCTP_STREAM test is essentially a *note TCP_STREAM:: test using the +SCTP rather than TCP. The `-D' option will set SCTP_NODELAY, which is +much like the TCP_NODELAY option for TCP. The `-C' option is not +applicable to an SCTP test as there is no corresponding SCTP_CORK +option. The author is still figuring-out what the test-specific `-N' +option does :) + + The SCTP_STREAM test is only present if netperf was configured with +`--enable-sctp=yes'. The remote netserver must have also been +configured with `--enable-sctp=yes'. + +5.2.8 DLCO_STREAM +----------------- + +A DLPI Connection Oriented Stream (DLCO_STREAM) test is very similar in +concept to a *note TCP_STREAM:: test. Both use reliable, +connection-oriented protocols. The DLPI test differs from the TCP test +in that its protocol operates only at the link-level and does not +include TCP-style segmentation and reassembly. This last difference +means that the value passed-in with the `-m' option must be less than +the interface MTU. Otherwise, the `-m' and `-M' options are just like +their TCP/UDP/SCTP counterparts. + + Other DLPI-specific options include: + +`-D ' + This option is used to provide the fully-qualified names for the + local and/or remote DLPI device files. The syntax is otherwise + identical to that of a "sizespec". + +`-p ' + This option is used to specify the local and/or remote DLPI PPA(s). + The PPA is used to identify the interface over which traffic is to + be sent/received. The syntax of a "ppaspec" is otherwise the same + as a "sizespec". + +`-s sap' + This option specifies the 802.2 SAP for the test. A SAP is + somewhat like either the port field of a TCP or UDP header or the + protocol field of an IP header. The specified SAP should not + conflict with any other active SAPs on the specified PPA's (`-p' + option). + +`-w ' + This option specifies the local send and receive window sizes in + units of frames on those platforms which support setting such + things. + +`-W ' + This option specifies the remote send and receive window sizes in + units of frames on those platforms which support setting such + things. + + The DLCO_STREAM test is only present if netperf was configured with +`--enable-dlpi=yes'. The remote netserver must have also been +configured with `--enable-dlpi=yes'. + +5.2.9 DLCL_STREAM +----------------- + +A DLPI ConnectionLess Stream (DLCL_STREAM) test is analogous to a *note +UDP_STREAM:: test in that both make use of unreliable/best-effort, +connection-less transports. The DLCL_STREAM test differs from the +*note UDP_STREAM:: test in that the message size (`-m' option) must +always be less than the link MTU as there is no IP-like fragmentation +and reassembly available and netperf does not presume to provide one. + + The test-specific command-line options for a DLCL_STREAM test are the +same as those for a *note DLCO_STREAM:: test. + + The DLCL_STREAM test is only present if netperf was configured with +`--enable-dlpi=yes'. The remote netserver must have also been +configured with `--enable-dlpi=yes'. + +5.2.10 STREAM_STREAM +-------------------- + +A Unix Domain Stream Socket Stream test (STREAM_STREAM) is similar in +concept to a *note TCP_STREAM:: test, but using Unix Domain sockets. +It is, naturally, limited to intra-machine traffic. A STREAM_STREAM +test shares the `-m', `-M', `-s' and `-S' options of the other _STREAM +tests. In a STREAM_STREAM test the `-p' option sets the directory in +which the pipes will be created rather than setting a port number. The +default is to create the pipes in the system default for the +`tempnam()' call. + + The STREAM_STREAM test is only present if netperf was configured with +`--enable-unixdomain=yes'. The remote netserver must have also been +configured with `--enable-unixdomain=yes'. + +5.2.11 DG_STREAM +---------------- + +A Unix Domain Datagram Socket Stream test (SG_STREAM) is very much like +a *note TCP_STREAM:: test except that message boundaries are preserved. +In this way, it may also be considered similar to certain flavors of +SCTP test which can also preserve message boundaries. + + All the options of a *note STREAM_STREAM:: test are applicable to a +DG_STREAM test. + + The DG_STREAM test is only present if netperf was configured with +`--enable-unixdomain=yes'. The remote netserver must have also been +configured with `--enable-unixdomain=yes'. + +6 Using Netperf to Measure Request/Response +******************************************* + +Request/response performance is often overlooked, yet it is just as +important as bulk-transfer performance. While things like larger +socket buffers and TCP windows, and stateless offloads like TSO and LRO +can cover a multitude of latency and even path-length sins, those sins +cannot easily hide from a request/response test. The convention for a +request/response test is to have a _RR suffix. There are however a few +"request/response" tests that have other suffixes. + + A request/response test, particularly synchronous, one transaction at +a time test such as those found by default in netperf, is particularly +sensitive to the path-length of the networking stack. An _RR test can +also uncover those platforms where the NICs are strapped by default +with overbearing interrupt avoidance settings in an attempt to increase +the bulk-transfer performance (or rather, decrease the CPU utilization +of a bulk-transfer test). This sensitivity is most acute for small +request and response sizes, such as the single-byte default for a +netperf _RR test. + + While a bulk-transfer test reports its results in units of bits or +bytes transferred per second, by default a mumble_RR test reports +transactions per second where a transaction is defined as the completed +exchange of a request and a response. One can invert the transaction +rate to arrive at the average round-trip latency. If one is confident +about the symmetry of the connection, the average one-way latency can +be taken as one-half the average round-trip latency. As of version +2.5.0 (actually slightly before) netperf still does not do the latter, +but will do the former if one sets the verbosity to 2 for a classic +netperf test, or includes the appropriate *note output selector: Omni +Output Selectors. in an *note omni test: The Omni Tests. It will also +allow the user to switch the throughput units from transactions per +second to bits or bytes per second with the global `-f' option. + +6.1 Issues in Request/Response +============================== + +Most if not all the *note Issues in Bulk Transfer:: apply to +request/response. The issue of round-trip latency is even more +important as netperf generally only has one transaction outstanding at +a time. + + A single instance of a one transaction outstanding _RR test should +_never_ completely saturate the CPU of a system. If testing between +otherwise evenly matched systems, the symmetric nature of a _RR test +with equal request and response sizes should result in equal CPU +loading on both systems. However, this may not hold true on MP systems, +particularly if one CPU binds the netperf and netserver differently via +the global `-T' option. + + For smaller request and response sizes packet loss is a bigger issue +as there is no opportunity for a "fast retransmit" or retransmission +prior to a retransmission timer expiring. + + Virtualization may considerably increase the effective path length of +a networking stack. While this may not preclude achieving link-rate on +a comparatively slow link (eg 1 Gigabit Ethernet) on a _STREAM test, it +can show-up as measurably fewer transactions per second on an _RR test. +However, this may still be masked by interrupt coalescing in the +NIC/driver. + + Certain NICs have ways to minimize the number of interrupts sent to +the host. If these are strapped badly they can significantly reduce +the performance of something like a single-byte request/response test. +Such setups are distinguished by seriously low reported CPU utilization +and what seems like a low (even if in the thousands) transaction per +second rate. Also, if you run such an OS/driver combination on faster +or slower hardware and do not see a corresponding change in the +transaction rate, chances are good that the driver is strapping the NIC +with aggressive interrupt avoidance settings. Good for bulk +throughput, but bad for latency. + + Some drivers may try to automagically adjust the interrupt avoidance +settings. If they are not terribly good at it, you will see +considerable run-to-run variation in reported transaction rates. +Particularly if you "mix-up" _STREAM and _RR tests. + +6.2 Options Common to TCP UDP and SCTP _RR tests +================================================ + +Many "test-specific" options are actually common across the different +tests. For those tests involving TCP, UDP and SCTP, whether using the +BSD Sockets or the XTI interface those common options include: + +`-h' + Display the test-suite-specific usage string and exit. For a TCP_ + or UDP_ test this will be the usage string from the source file + `nettest_bsd.c'. For an XTI_ test, this will be the usage string + from the source file `src/nettest_xti.c'. For an SCTP test, this + will be the usage string from the source file `src/nettest_sctp.c'. + +`-H ' + Normally, the remote hostname|IP and address family information is + inherited from the settings for the control connection (eg global + command-line `-H', `-4' and/or `-6' options. The test-specific + `-H' will override those settings for the data (aka test) + connection only. Settings for the control connection are left + unchanged. This might be used to cause the control and data + connections to take different paths through the network. + +`-L ' + The test-specific `-L' option is identical to the test-specific + `-H' option except it affects the local hostname|IP and address + family information. As with its global command-line counterpart, + this is generally only useful when measuring though those evil, + end-to-end breaking things called firewalls. + +`-P ' + Set the local and/or remote port numbers for the data connection. + +`-r ' + This option sets the request (first value) and/or response (second + value) sizes for an _RR test. By default the units are bytes, but a + suffix of "G," "M," or "K" will specify the units to be 2^30 (GB), + 2^20 (MB) or 2^10 (KB) respectively. A suffix of "g," "m" or "k" + will specify units of 10^9, 10^6 or 10^3 bytes respectively. For + example: + `-r 128,16K' + Will set the request size to 128 bytes and the response size to 16 + KB or 16384 bytes. [Default: 1 - a single-byte request and + response ] + +`-s ' + This option sets the local (netperf) send and receive socket buffer + sizes for the data connection to the value(s) specified. Often, + this will affect the advertised and/or effective TCP or other + window, but on some platforms it may not. By default the units are + bytes, but a suffix of "G," "M," or "K" will specify the units to + be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of + "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 bytes + respectively. For example: + `-s 128K' + Will request the local send (netperf) and receive socket buffer + sizes to be 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. When running under Windows a value of 0 + may be used which will be an indication to the stack the user + wants to enable a form of copy avoidance. [Default: -1 - use the + system's default socket buffer sizes] + +`-S ' + This option sets the remote (netserver) send and/or receive socket + buffer sizes for the data connection to the value(s) specified. + Often, this will affect the advertised and/or effective TCP or + other window, but on some platforms it may not. By default the + units are bytes, but a suffix of "G," "M," or "K" will specify the + units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A + suffix of "g," "m" or "k" will specify units of 10^9, 10^6 or 10^3 + bytes respectively. For example: + `-S 128K' + Will request the remote (netserver) send and receive socket buffer + sizes to be 128KB or 131072 bytes. + + While the historic expectation is that setting the socket buffer + size has a direct effect on say the TCP window, today that may not + hold true for all stacks. When running under Windows a value of 0 + may be used which will be an indication to the stack the user + wants to enable a form of copy avoidance. [Default: -1 - use the + system's default socket buffer sizes] + +`-4' + Set the local and remote address family for the data connection to + AF_INET - ie use IPv4 addressing only. Just as with their global + command-line counterparts the last of the `-4', `-6', `-H' or `-L' + option wins for their respective address families. + +`-6' + This option is identical to its `-4' cousin, but requests IPv6 + addresses for the local and remote ends of the data connection. + + +6.2.1 TCP_RR +------------ + +A TCP_RR (TCP Request/Response) test is requested by passing a value of +"TCP_RR" to the global `-t' command-line option. A TCP_RR test can be +thought-of as a user-space to user-space `ping' with no think time - it +is by default a synchronous, one transaction at a time, +request/response test. + + The transaction rate is the number of complete transactions exchanged +divided by the length of time it took to perform those transactions. + + If the two Systems Under Test are otherwise identical, a TCP_RR test +with the same request and response size should be symmetric - it should +not matter which way the test is run, and the CPU utilization measured +should be virtually the same on each system. If not, it suggests that +the CPU utilization mechanism being used may have some, well, issues +measuring CPU utilization completely and accurately. + + Time to establish the TCP connection is not counted in the result. +If you want connection setup overheads included, you should consider the +*note TPC_CC: TCP_CC. or *note TCP_CRR: TCP_CRR. tests. + + If specifying the `-D' option to set TCP_NODELAY and disable the +Nagle Algorithm increases the transaction rate reported by a TCP_RR +test, it implies the stack(s) over which the TCP_RR test is running +have a broken implementation of the Nagle Algorithm. Likely as not +they are interpreting Nagle on a segment by segment basis rather than a +user send by user send basis. You should contact your stack vendor(s) +to report the problem to them. + + Here is an example of two systems running a basic TCP_RR test over a +10 Gigabit Ethernet link: + + netperf -t TCP_RR -H 192.168.2.125 + TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 29150.15 + 16384 87380 + + In this example the request and response sizes were one byte, the +socket buffers were left at their defaults, and the test ran for all of +10 seconds. The transaction per second rate was rather good for the +time :) + +6.2.2 TCP_CC +------------ + +A TCP_CC (TCP Connect/Close) test is requested by passing a value of +"TCP_CC" to the global `-t' option. A TCP_CC test simply measures how +fast the pair of systems can open and close connections between one +another in a synchronous (one at a time) manner. While this is +considered an _RR test, no request or response is exchanged over the +connection. + + The issue of TIME_WAIT reuse is an important one for a TCP_CC test. +Basically, TIME_WAIT reuse is when a pair of systems churn through +connections fast enough that they wrap the 16-bit port number space in +less time than the length of the TIME_WAIT state. While it is indeed +theoretically possible to "reuse" a connection in TIME_WAIT, the +conditions under which such reuse is possible are rather rare. An +attempt to reuse a connection in TIME_WAIT can result in a non-trivial +delay in connection establishment. + + Basically, any time the connection churn rate approaches: + + Sizeof(clientportspace) / Lengthof(TIME_WAIT) + + there is the risk of TIME_WAIT reuse. To minimize the chances of +this happening, netperf will by default select its own client port +numbers from the range of 5000 to 65535. On systems with a 60 second +TIME_WAIT state, this should allow roughly 1000 transactions per +second. The size of the client port space used by netperf can be +controlled via the test-specific `-p' option, which takes a "sizespec" +as a value setting the minimum (first value) and maximum (second value) +port numbers used by netperf at the client end. + + Since no requests or responses are exchanged during a TCP_CC test, +only the `-H', `-L', `-4' and `-6' of the "common" test-specific +options are likely to have an effect, if any, on the results. The `-s' +and `-S' options _may_ have some effect if they alter the number and/or +type of options carried in the TCP SYNchronize segments, such as Window +Scaling or Timestamps. The `-P' and `-r' options are utterly ignored. + + Since connection establishment and tear-down for TCP is not +symmetric, a TCP_CC test is not symmetric in its loading of the two +systems under test. + +6.2.3 TCP_CRR +------------- + +The TCP Connect/Request/Response (TCP_CRR) test is requested by passing +a value of "TCP_CRR" to the global `-t' command-line option. A TCP_CRR +test is like a merger of a *note TCP_RR:: and *note TCP_CC:: test which +measures the performance of establishing a connection, exchanging a +single request/response transaction, and tearing-down that connection. +This is very much like what happens in an HTTP 1.0 or HTTP 1.1 +connection when HTTP Keepalives are not used. In fact, the TCP_CRR +test was added to netperf to simulate just that. + + Since a request and response are exchanged the `-r', `-s' and `-S' +options can have an effect on the performance. + + The issue of TIME_WAIT reuse exists for the TCP_CRR test just as it +does for the TCP_CC test. Similarly, since connection establishment +and tear-down is not symmetric, a TCP_CRR test is not symmetric even +when the request and response sizes are the same. + +6.2.4 UDP_RR +------------ + +A UDP Request/Response (UDP_RR) test is requested by passing a value of +"UDP_RR" to a global `-t' option. It is very much the same as a TCP_RR +test except UDP is used rather than TCP. + + UDP does not provide for retransmission of lost UDP datagrams, and +netperf does not add anything for that either. This means that if +_any_ request or response is lost, the exchange of requests and +responses will stop from that point until the test timer expires. +Netperf will not really "know" this has happened - the only symptom +will be a low transaction per second rate. If `--enable-burst' was +included in the `configure' command and a test-specific `-b' option +used, the UDP_RR test will "survive" the loss of requests and responses +until the sum is one more than the value passed via the `-b' option. It +will though almost certainly run more slowly. + + The netperf side of a UDP_RR test will call `connect()' on its data +socket and thenceforth use the `send()' and `recv()' socket calls. The +netserver side of a UDP_RR test will not call `connect()' and will use +`recvfrom()' and `sendto()' calls. This means that even if the request +and response sizes are the same, a UDP_RR test is _not_ symmetric in +its loading of the two systems under test. + + Here is an example of a UDP_RR test between two otherwise identical +two-CPU systems joined via a 1 Gigabit Ethernet network: + + $ netperf -T 1 -H 192.168.1.213 -t UDP_RR -c -C + UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.213 (192.168.1.213) port 0 AF_INET + Local /Remote + Socket Size Request Resp. Elapsed Trans. CPU CPU S.dem S.dem + Send Recv Size Size Time Rate local remote local remote + bytes bytes bytes bytes secs. per sec % I % I us/Tr us/Tr + + 65535 65535 1 1 10.01 15262.48 13.90 16.11 18.221 21.116 + 65535 65535 + + This example includes the `-c' and `-C' options to enable CPU +utilization reporting and shows the asymmetry in CPU loading. The `-T' +option was used to make sure netperf and netserver ran on a given CPU +and did not move around during the test. + +6.2.5 XTI_TCP_RR +---------------- + +An XTI_TCP_RR test is essentially the same as a *note TCP_RR:: test only +using the XTI rather than BSD Sockets interface. It is requested by +passing a value of "XTI_TCP_RR" to the `-t' global command-line option. + + The test-specific options for an XTI_TCP_RR test are the same as +those for a TCP_RR test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + +6.2.6 XTI_TCP_CC +---------------- + +An XTI_TCP_CC test is essentially the same as a *note TCP_CC: TCP_CC. +test, only using the XTI rather than BSD Sockets interface. + + The test-specific options for an XTI_TCP_CC test are the same as +those for a TCP_CC test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + +6.2.7 XTI_TCP_CRR +----------------- + +The XTI_TCP_CRR test is essentially the same as a *note TCP_CRR: +TCP_CRR. test, only using the XTI rather than BSD Sockets interface. + + The test-specific options for an XTI_TCP_CRR test are the same as +those for a TCP_RR test with the addition of the `-X ' option +to specify the names of the local and/or remote XTI device file(s). + +6.2.8 XTI_UDP_RR +---------------- + +An XTI_UDP_RR test is essentially the same as a UDP_RR test only using +the XTI rather than BSD Sockets interface. It is requested by passing +a value of "XTI_UDP_RR" to the `-t' global command-line option. + + The test-specific options for an XTI_UDP_RR test are the same as +those for a UDP_RR test with the addition of the `-X ' option +to specify the name of the local and/or remote XTI device file(s). + +6.2.9 DLCL_RR +------------- + +6.2.10 DLCO_RR +-------------- + +6.2.11 SCTP_RR +-------------- + +7 Using Netperf to Measure Aggregate Performance +************************************************ + +Ultimately, *note Netperf4: Netperf4. will be the preferred benchmark to +use when one wants to measure aggregate performance because netperf has +no support for explicit synchronization of concurrent tests. Until +netperf4 is ready for prime time, one can make use of the heuristics +and procedures mentioned here for the 85% solution. + + There are a few ways to measure aggregate performance with netperf. +The first is to run multiple, concurrent netperf tests and can be +applied to any of the netperf tests. The second is to configure +netperf with `--enable-burst' and is applicable to the TCP_RR test. The +third is a variation on the first. + +7.1 Running Concurrent Netperf Tests +==================================== + +*note Netperf4: Netperf4. is the preferred benchmark to use when one +wants to measure aggregate performance because netperf has no support +for explicit synchronization of concurrent tests. This leaves netperf2 +results vulnerable to "skew" errors. + + However, since there are times when netperf4 is unavailable it may be +necessary to run netperf. The skew error can be minimized by making use +of the confidence interval functionality. Then one simply launches +multiple tests from the shell using a `for' loop or the like: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 & + done + + which will run four, concurrent *note TCP_STREAM: TCP_STREAM. tests +from the system on which it is executed to tardy.cup.hp.com. Each +concurrent netperf will iterate 10 times thanks to the `-i' option and +will omit the test banners (option `-P') for brevity. The output looks +something like this: + + 87380 16384 16384 10.03 235.15 + 87380 16384 16384 10.03 235.09 + 87380 16384 16384 10.03 235.38 + 87380 16384 16384 10.03 233.96 + + We can take the sum of the results and be reasonably confident that +the aggregate performance was 940 Mbits/s. This method does not need +to be limited to one system speaking to one other system. It can be +extended to one system talking to N other systems. It could be as +simple as: + for host in 'foo bar baz bing' + do + netperf -t TCP_STREAM -H $hosts -i 10 -P 0 & + done + A more complicated/sophisticated example can be found in +`doc/examples/runemomniagg2.sh' where. + + If you see warnings about netperf not achieving the confidence +intervals, the best thing to do is to increase the number of iterations +with `-i' and/or increase the run length of each iteration with `-l'. + + You can also enable local (`-c') and/or remote (`-C') CPU +utilization: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 -c -C & + done + + 87380 16384 16384 10.03 235.47 3.67 5.09 10.226 14.180 + 87380 16384 16384 10.03 234.73 3.67 5.09 10.260 14.225 + 87380 16384 16384 10.03 234.64 3.67 5.10 10.263 14.231 + 87380 16384 16384 10.03 234.87 3.67 5.09 10.253 14.215 + + If the CPU utilizations reported for the same system are the same or +very very close you can be reasonably confident that skew error is +minimized. Presumably one could then omit `-i' but that is not +advised, particularly when/if the CPU utilization approaches 100 +percent. In the example above we see that the CPU utilization on the +local system remains the same for all four tests, and is only off by +0.01 out of 5.09 on the remote system. As the number of CPUs in the +system increases, and so too the odds of saturating a single CPU, the +accuracy of similar CPU utilization implying little skew error is +diminished. This is also the case for those increasingly rare single +CPU systems if the utilization is reported as 100% or very close to it. + + NOTE: It is very important to remember that netperf is calculating + system-wide CPU utilization. When calculating the service demand + (those last two columns in the output above) each netperf assumes + it is the only thing running on the system. This means that for + concurrent tests the service demands reported by netperf will be + wrong. One has to compute service demands for concurrent tests by + hand. + + If you wish you can add a unique, global `-B' option to each command +line to append the given string to the output: + + for i in 1 2 3 4 + do + netperf -t TCP_STREAM -H tardy.cup.hp.com -B "this is test $i" -i 10 -P 0 & + done + + 87380 16384 16384 10.03 234.90 this is test 4 + 87380 16384 16384 10.03 234.41 this is test 2 + 87380 16384 16384 10.03 235.26 this is test 1 + 87380 16384 16384 10.03 235.09 this is test 3 + + You will notice that the tests completed in an order other than they +were started from the shell. This underscores why there is a threat of +skew error and why netperf4 will eventually be the preferred tool for +aggregate tests. Even if you see the Netperf Contributing Editor +acting to the contrary!-) + +7.1.1 Issues in Running Concurrent Tests +---------------------------------------- + +In addition to the aforementioned issue of skew error, there can be +other issues to consider when running concurrent netperf tests. + + For example, when running concurrent tests over multiple interfaces, +one is not always assured that the traffic one thinks went over a given +interface actually did so. In particular, the Linux networking stack +takes a particularly strong stance on its following the so called `weak +end system model'. As such, it is willing to answer ARP requests for +any of its local IP addresses on any of its interfaces. If multiple +interfaces are connected to the same broadcast domain, then even if +they are configured into separate IP subnets there is no a priori way +of knowing which interface was actually used for which connection(s). +This can be addressed by setting the `arp_ignore' sysctl before +configuring interfaces. + + As it is quite important, we will repeat that it is very important to +remember that each concurrent netperf instance is calculating +system-wide CPU utilization. When calculating the service demand each +netperf assumes it is the only thing running on the system. This means +that for concurrent tests the service demands reported by netperf will +be wrong. One has to compute service demands for concurrent tests by +hand + + Running concurrent tests can also become difficult when there is no +one "central" node. Running tests between pairs of systems may be more +difficult, calling for remote shell commands in the for loop rather +than netperf commands. This introduces more skew error, which the +confidence intervals may not be able to sufficiently mitigate. One +possibility is to actually run three consecutive netperf tests on each +node - the first being a warm-up, the last being a cool-down. The idea +then is to ensure that the time it takes to get all the netperfs +started is less than the length of the first netperf command in the +sequence of three. Similarly, it assumes that all "middle" netperfs +will complete before the first of the "last" netperfs complete. + +7.2 Using - -enable-burst +========================= + +Starting in version 2.5.0 `--enable-burst=yes' is the default, which +means one no longer must: + + configure --enable-burst + + To have burst-mode functionality present in netperf. This enables a +test-specific `-b num' option in *note TCP_RR: TCP_RR, *note UDP_RR: +UDP_RR. and *note omni: The Omni Tests. tests. + + Normally, netperf will attempt to ramp-up the number of outstanding +requests to `num' plus one transactions in flight at one time. The +ramp-up is to avoid transactions being smashed together into a smaller +number of segments when the transport's congestion window (if any) is +smaller at the time than what netperf wants to have outstanding at one +time. If, however, the user specifies a negative value for `num' this +ramp-up is bypassed and the burst of sends is made without +consideration of transport congestion window. + + This burst-mode is used as an alternative to or even in conjunction +with multiple-concurrent _RR tests and as a way to implement a +single-connection, bidirectional bulk-transfer test. When run with +just a single instance of netperf, increasing the burst size can +determine the maximum number of transactions per second which can be +serviced by a single process: + + for b in 0 1 2 4 8 16 32 + do + netperf -v 0 -t TCP_RR -B "-b $b" -H hpcpc108 -P 0 -- -b $b + done + + 9457.59 -b 0 + 9975.37 -b 1 + 10000.61 -b 2 + 20084.47 -b 4 + 29965.31 -b 8 + 71929.27 -b 16 + 109718.17 -b 32 + + The global `-v' and `-P' options were used to minimize the output to +the single figure of merit which in this case the transaction rate. +The global `-B' option was used to more clearly label the output, and +the test-specific `-b' option enabled by `--enable-burst' increase the +number of transactions in flight at one time. + + Now, since the test-specific `-D' option was not specified to set +TCP_NODELAY, the stack was free to "bundle" requests and/or responses +into TCP segments as it saw fit, and since the default request and +response size is one byte, there could have been some considerable +bundling even in the absence of transport congestion window issues. If +one wants to try to achieve a closer to one-to-one correspondence +between a request and response and a TCP segment, add the test-specific +`-D' option: + + for b in 0 1 2 4 8 16 32 + do + netperf -v 0 -t TCP_RR -B "-b $b -D" -H hpcpc108 -P 0 -- -b $b -D + done + + 8695.12 -b 0 -D + 19966.48 -b 1 -D + 20691.07 -b 2 -D + 49893.58 -b 4 -D + 62057.31 -b 8 -D + 108416.88 -b 16 -D + 114411.66 -b 32 -D + + You can see that this has a rather large effect on the reported +transaction rate. In this particular instance, the author believes it +relates to interactions between the test and interrupt coalescing +settings in the driver for the NICs used. + + NOTE: Even if you set the `-D' option that is still not a + guarantee that each transaction is in its own TCP segments. You + should get into the habit of verifying the relationship between the + transaction rate and the packet rate via other means. + + You can also combine `--enable-burst' functionality with concurrent +netperf tests. This would then be an "aggregate of aggregates" if you +like: + + + for i in 1 2 3 4 + do + netperf -H hpcpc108 -v 0 -P 0 -i 10 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & + done + + 46668.38 aggregate 4 -b 8 -D + 44890.64 aggregate 2 -b 8 -D + 45702.04 aggregate 1 -b 8 -D + 46352.48 aggregate 3 -b 8 -D + + Since each netperf did hit the confidence intervals, we can be +reasonably certain that the aggregate transaction per second rate was +the sum of all four concurrent tests, or something just shy of 184,000 +transactions per second. To get some idea if that was also the packet +per second rate, we could bracket that `for' loop with something to +gather statistics and run the results through beforeafter +(ftp://ftp.cup.hp.com/dist/networking/tools): + + /usr/sbin/ethtool -S eth2 > before + for i in 1 2 3 4 + do + netperf -H 192.168.2.108 -l 60 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & + done + wait + /usr/sbin/ethtool -S eth2 > after + + 52312.62 aggregate 2 -b 8 -D + 50105.65 aggregate 4 -b 8 -D + 50890.82 aggregate 1 -b 8 -D + 50869.20 aggregate 3 -b 8 -D + + beforeafter before after > delta + + grep packets delta + rx_packets: 12251544 + tx_packets: 12251550 + + This example uses `ethtool' because the system being used is running +Linux. Other platforms have other tools - for example HP-UX has +lanadmin: + + lanadmin -g mibstats + + and of course one could instead use `netstat'. + + The `wait' is important because we are launching concurrent netperfs +in the background. Without it, the second ethtool command would be run +before the tests finished and perhaps even before the last of them got +started! + + The sum of the reported transaction rates is 204178 over 60 seconds, +which is a total of 12250680 transactions. Each transaction is the +exchange of a request and a response, so we multiply that by 2 to +arrive at 24501360. + + The sum of the ethtool stats is 24503094 packets which matches what +netperf was reporting very well. + + Had the request or response size differed, we would need to know how +it compared with the "MSS" for the connection. + + Just for grins, here is the exercise repeated, using `netstat' +instead of `ethtool' + + netstat -s -t > before + for i in 1 2 3 4 + do + netperf -l 60 -H 192.168.2.108 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & done + wait + netstat -s -t > after + + 51305.88 aggregate 4 -b 8 -D + 51847.73 aggregate 2 -b 8 -D + 50648.19 aggregate 3 -b 8 -D + 53605.86 aggregate 1 -b 8 -D + + beforeafter before after > delta + + grep segments delta + 12445708 segments received + 12445730 segments send out + 1 segments retransmited + 0 bad segments received. + + The sums are left as an exercise to the reader :) + + Things become considerably more complicated if there are non-trvial +packet losses and/or retransmissions. + + Of course all this checking is unnecessary if the test is a UDP_RR +test because UDP "never" aggregates multiple sends into the same UDP +datagram, and there are no ACKnowledgements in UDP. The loss of a +single request or response will not bring a "burst" UDP_RR test to a +screeching halt, but it will reduce the number of transactions +outstanding at any one time. A "burst" UDP_RR test will come to a halt +if the sum of the lost requests and responses reaches the value +specified in the test-specific `-b' option. + +7.3 Using - -enable-demo +======================== + +One can + configure --enable-demo + and compile netperf to enable netperf to emit "interim results" at +semi-regular intervals. This enables a global `-D' option which takes +a reporting interval as an argument. With that specified, the output +of netperf will then look something like + + $ src/netperf -D 1.25 + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain () port 0 AF_INET : demo + Interim result: 25425.52 10^6bits/s over 1.25 seconds ending at 1327962078.405 + Interim result: 25486.82 10^6bits/s over 1.25 seconds ending at 1327962079.655 + Interim result: 25474.96 10^6bits/s over 1.25 seconds ending at 1327962080.905 + Interim result: 25523.49 10^6bits/s over 1.25 seconds ending at 1327962082.155 + Interim result: 25053.57 10^6bits/s over 1.27 seconds ending at 1327962083.429 + Interim result: 25349.64 10^6bits/s over 1.25 seconds ending at 1327962084.679 + Interim result: 25292.84 10^6bits/s over 1.25 seconds ending at 1327962085.932 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 25375.66 + The units of the "Interim result" lines will follow the units +selected via the global `-f' option. If the test-specific `-o' option +is specified on the command line, the format will be CSV: + ... + 2978.81,MBytes/s,1.25,1327962298.035 + ... + If the test-specific `-k' option is used the format will be keyval +with each keyval being given an index: + ... + NETPERF_INTERIM_RESULT[2]=25.00 + NETPERF_UNITS[2]=10^9bits/s + NETPERF_INTERVAL[2]=1.25 + NETPERF_ENDING[2]=1327962357.249 + ... + The expectation is it may be easier to utilize the keyvals if they +have indices. + + But how does this help with aggregate tests? Well, what one can do +is start the netperfs via a script, giving each a Very Long (tm) run +time. Direct the output to a file per instance. Then, once all the +netperfs have been started, take a timestamp and wait for some desired +test interval. Once that interval expires take another timestamp and +then start terminating the netperfs by sending them a SIGALRM signal +via the likes of the `kill' or `pkill' command. The netperfs will +terminate and emit the rest of the "usual" output, and you can then +bring the files to a central location for post processing to find the +aggregate performance over the "test interval." + + This method has the advantage that it does not require advance +knowledge of how long it takes to get netperf tests started and/or +stopped. It does though require sufficiently synchronized clocks on +all the test systems. + + While calls to get the current time can be inexpensive, that neither +has been nor is universally true. For that reason netperf tries to +minimize the number of such "timestamping" calls (eg `gettimeofday') +calls it makes when in demo mode. Rather than take a timestamp after +each `send' or `recv' call completes netperf tries to guess how many +units of work will be performed over the desired interval. Only once +that many units of work have been completed will netperf check the +time. If the reporting interval has passed, netperf will emit an +"interim result." If the interval has not passed, netperf will update +its estimate for units and continue. + + After a bit of thought one can see that if things "speed-up" netperf +will still honor the interval. However, if things "slow-down" netperf +may be late with an "interim result." Here is an example of both of +those happening during a test - with the interval being honored while +throughput increases, and then about half-way through when another +netperf (not shown) is started we see things slowing down and netperf +not hitting the interval as desired. + $ src/netperf -D 2 -H tardy.hpl.hp.com -l 20 + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com () port 0 AF_INET : demo + Interim result: 36.46 10^6bits/s over 2.01 seconds ending at 1327963880.565 + Interim result: 59.19 10^6bits/s over 2.00 seconds ending at 1327963882.569 + Interim result: 73.39 10^6bits/s over 2.01 seconds ending at 1327963884.576 + Interim result: 84.01 10^6bits/s over 2.03 seconds ending at 1327963886.603 + Interim result: 75.63 10^6bits/s over 2.21 seconds ending at 1327963888.814 + Interim result: 55.52 10^6bits/s over 2.72 seconds ending at 1327963891.538 + Interim result: 70.94 10^6bits/s over 2.11 seconds ending at 1327963893.650 + Interim result: 80.66 10^6bits/s over 2.13 seconds ending at 1327963895.777 + Interim result: 86.42 10^6bits/s over 2.12 seconds ending at 1327963897.901 + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 20.34 68.87 + So long as your post-processing mechanism can account for that, there +should be no problem. As time passes there may be changes to try to +improve the netperf's honoring the interval but one should not ass-u-me +it will always do so. One should not assume the precision will remain +fixed - future versions may change it - perhaps going beyond tenths of +seconds in reporting the interval length etc. + +8 Using Netperf to Measure Bidirectional Transfer +************************************************* + +There are two ways to use netperf to measure the performance of +bidirectional transfer. The first is to run concurrent netperf tests +from the command line. The second is to configure netperf with +`--enable-burst' and use a single instance of the *note TCP_RR: TCP_RR. +test. + + While neither method is more "correct" than the other, each is doing +so in different ways, and that has possible implications. For +instance, using the concurrent netperf test mechanism means that +multiple TCP connections and multiple processes are involved, whereas +using the single instance of TCP_RR there is only one TCP connection +and one process on each end. They may behave differently, especially +on an MP system. + +8.1 Bidirectional Transfer with Concurrent Tests +================================================ + +If we had two hosts Fred and Ethel, we could simply run a netperf *note +TCP_STREAM: TCP_STREAM. test on Fred pointing at Ethel, and a +concurrent netperf TCP_STREAM test on Ethel pointing at Fred, but since +there are no mechanisms to synchronize netperf tests and we would be +starting tests from two different systems, there is a considerable risk +of skew error. + + Far better would be to run simultaneous TCP_STREAM and *note +TCP_MAERTS: TCP_MAERTS. tests from just one system, using the concepts +and procedures outlined in *note Running Concurrent Netperf Tests: +Running Concurrent Netperf Tests. Here then is an example: + + for i in 1 + do + netperf -H 192.168.2.108 -t TCP_STREAM -B "outbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & + netperf -H 192.168.2.108 -t TCP_MAERTS -B "inbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & + done + + 892.66 outbound + 891.34 inbound + + We have used a `for' loop in the shell with just one iteration +because that will be much easier to get both tests started at more or +less the same time than doing it by hand. The global `-P' and `-v' +options are used because we aren't interested in anything other than +the throughput, and the global `-B' option is used to tag each output +so we know which was inbound and which outbound relative to the system +on which we were running netperf. Of course that sense is switched on +the system running netserver :) The use of the global `-i' option is +explained in *note Running Concurrent Netperf Tests: Running Concurrent +Netperf Tests. + + Beginning with version 2.5.0 we can accomplish a similar result with +the *note the omni tests: The Omni Tests. and *note output selectors: +Omni Output Selectors.: + + for i in 1 + do + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d stream -s 256K -S 256K -o throughput,direction & + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d maerts -s 256K -S 256K -o throughput,direction & + done + + 805.26,Receive + 828.54,Send + +8.2 Bidirectional Transfer with TCP_RR +====================================== + +Starting with version 2.5.0 the `--enable-burst' configure option +defaults to `yes', and starting some time before version 2.5.0 but +after 2.4.0 the global `-f' option would affect the "throughput" +reported by request/response tests. If one uses the test-specific `-b' +option to have several "transactions" in flight at one time and the +test-specific `-r' option to increase their size, the test looks more +and more like a single-connection bidirectional transfer than a simple +request/response test. + + So, putting it all together one can do something like: + + netperf -f m -t TCP_RR -H 192.168.1.3 -v 2 -- -b 6 -r 32K -S 256K -S 256K + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.3 (192.168.1.3) port 0 AF_INET : interval : first burst 6 + Local /Remote + Socket Size Request Resp. Elapsed + Send Recv Size Size Time Throughput + bytes Bytes bytes bytes secs. 10^6bits/sec + + 16384 87380 32768 32768 10.00 1821.30 + 524288 524288 + Alignment Offset RoundTrip Trans Throughput + Local Remote Local Remote Latency Rate 10^6bits/s + Send Recv Send Recv usec/Tran per sec Outbound Inbound + 8 0 0 0 2015.402 3473.252 910.492 910.492 + + to get a bidirectional bulk-throughput result. As one can see, the -v +2 output will include a number of interesting, related values. + + NOTE: The logic behind `--enable-burst' is very simple, and there + are no calls to `poll()' or `select()' which means we want to make + sure that the `send()' calls will never block, or we run the risk + of deadlock with each side stuck trying to call `send()' and + neither calling `recv()'. + + Fortunately, this is easily accomplished by setting a "large enough" +socket buffer size with the test-specific `-s' and `-S' options. +Presently this must be performed by the user. Future versions of +netperf might attempt to do this automagically, but there are some +issues to be worked-out. + +8.3 Implications of Concurrent Tests vs Burst Request/Response +============================================================== + +There are perhaps subtle but important differences between using +concurrent unidirectional tests vs a burst-mode request to measure +bidirectional performance. + + Broadly speaking, a single "connection" or "flow" of traffic cannot +make use of the services of more than one or two CPUs at either end. +Whether one or two CPUs will be used processing a flow will depend on +the specifics of the stack(s) involved and whether or not the global +`-T' option has been used to bind netperf/netserver to specific CPUs. + + When using concurrent tests there will be two concurrent connections +or flows, which means that upwards of four CPUs will be employed +processing the packets (global `-T' used, no more than two if not), +however, with just a single, bidirectional request/response test no +more than two CPUs will be employed (only one if the global `-T' is not +used). + + If there is a CPU bottleneck on either system this may result in +rather different results between the two methods. + + Also, with a bidirectional request/response test there is something +of a natural balance or synchronization between inbound and outbound - a +response will not be sent until a request is received, and (once the +burst level is reached) a subsequent request will not be sent until a +response is received. This may mask favoritism in the NIC between +inbound and outbound processing. + + With two concurrent unidirectional tests there is no such +synchronization or balance and any favoritism in the NIC may be exposed. + +9 The Omni Tests +**************** + +Beginning with version 2.5.0, netperf begins a migration to the `omni' +tests or "Two routines to measure them all." The code for the omni +tests can be found in `src/nettest_omni.c' and the goal is to make it +easier for netperf to support multiple protocols and report a great +many additional things about the systems under test. Additionally, a +flexible output selection mechanism is present which allows the user to +chose specifically what values she wishes to have reported and in what +format. + + The omni tests are included by default in version 2.5.0. To disable +them, one must: + ./configure --enable-omni=no ... + + and remake netperf. Remaking netserver is optional because even in +2.5.0 it has "unmigrated" netserver side routines for the classic (eg +`src/nettest_bsd.c') tests. + +9.1 Native Omni Tests +===================== + +One access the omni tests "natively" by using a value of "OMNI" with +the global `-t' test-selection option. This will then cause netperf to +use the code in `src/nettest_omni.c' and in particular the +test-specific options parser for the omni tests. The test-specific +options for the omni tests are a superset of those for "classic" tests. +The options added by the omni tests are: + +`-c' + This explicitly declares that the test is to include connection + establishment and tear-down as in either a TCP_CRR or TCP_CC test. + +`-d ' + This option sets the direction of the test relative to the netperf + process. As of version 2.5.0 one can use the following in a + case-insensitive manner: + + `send, stream, transmit, xmit or 2' + Any of which will cause netperf to send to the netserver. + + `recv, receive, maerts or 4' + Any of which will cause netserver to send to netperf. + + `rr or 6' + Either of which will cause a request/response test. + + Additionally, one can specify two directions separated by a '|' + character and they will be OR'ed together. In this way one can use + the "Send|Recv" that will be emitted by the *note DIRECTION: Omni + Output Selectors. *note output selector: Omni Output Selection. + when used with a request/response test. + +`-k [*note output selector: Omni Output Selection.]' + This option sets the style of output to "keyval" where each line of + output has the form: + key=value + For example: + $ netperf -t omni -- -d rr -k "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + THROUGHPUT=59092.65 + THROUGHPUT_UNITS=Trans/s + + Using the `-k' option will override any previous, test-specific + `-o' or `-O' option. + +`-o [*note output selector: Omni Output Selection.]' + This option sets the style of output to "CSV" where there will be + one line of comma-separated values, preceded by one line of column + names unless the global `-P' option is used with a value of 0: + $ netperf -t omni -- -d rr -o "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Throughput,Throughput Units + 60999.07,Trans/s + + Using the `-o' option will override any previous, test-specific + `-k' or `-O' option. + +`-O [*note output selector: Omni Output Selection.]' + This option sets the style of output to "human readable" which will + look quite similar to classic netperf output: + $ netperf -t omni -- -d rr -O "THROUGHPUT,THROUGHPUT_UNITS" + OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Throughput Throughput + Units + + + 60492.57 Trans/s + + Using the `-O' option will override any previous, test-specific + `-k' or `-o' option. + +`-t' + This option explicitly sets the socket type for the test's data + connection. As of version 2.5.0 the known socket types include + "stream" and "dgram" for SOCK_STREAM and SOCK_DGRAM respectively. + +`-T ' + This option is used to explicitly set the protocol used for the + test. It is case-insensitive. As of version 2.5.0 the protocols + known to netperf include: + `TCP' + Select the Transmission Control Protocol + + `UDP' + Select the User Datagram Protocol + + `SDP' + Select the Sockets Direct Protocol + + `DCCP' + Select the Datagram Congestion Control Protocol + + `SCTP' + Select the Stream Control Transport Protocol + + `udplite' + Select UDP Lite + + The default is implicit based on other settings. + + The omni tests also extend the interpretation of some of the classic, +test-specific options for the BSD Sockets tests: + +`-m ' + This can set the send size for either or both of the netperf and + netserver sides of the test: + -m 32K + sets only the netperf-side send size to 32768 bytes, and or's-in + transmit for the direction. This is effectively the same behaviour + as for the classic tests. + -m ,32K + sets only the netserver side send size to 32768 bytes and or's-in + receive for the direction. + -m 16K,32K + sets the netperf side send size to 16284 bytes, the netserver side + send size to 32768 bytes and the direction will be "Send|Recv." + +`-M ' + This can set the receive size for either or both of the netperf and + netserver sides of the test: + -M 32K + sets only the netserver side receive size to 32768 bytes and + or's-in send for the test direction. + -M ,32K + sets only the netperf side receive size to 32768 bytes and or's-in + receive for the test direction. + -M 16K,32K + sets the netserver side receive size to 16384 bytes and the netperf + side receive size to 32768 bytes and the direction will be + "Send|Recv." + +9.2 Migrated Tests +================== + +As of version 2.5.0 several tests have been migrated to use the omni +code in `src/nettest_omni.c' for the core of their testing. A migrated +test retains all its previous output code and so should still "look and +feel" just like a pre-2.5.0 test with one exception - the first line of +the test banners will include the word "MIGRATED" at the beginning as +in: + + $ netperf + MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Recv Send Send + Socket Socket Message Elapsed + Size Size Size Time Throughput + bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 27175.27 + + The tests migrated in version 2.5.0 are: + * TCP_STREAM + + * TCP_MAERTS + + * TCP_RR + + * TCP_CRR + + * UDP_STREAM + + * UDP_RR + + It is expected that future releases will have additional tests +migrated to use the "omni" functionality. + + If one uses "omni-specific" test-specific options in conjunction +with a migrated test, instead of using the classic output code, the new +omni output code will be used. For example if one uses the `-k' +test-specific option with a value of "MIN_LATENCY,MAX_LATENCY" with a +migrated TCP_RR test one will see: + + $ netperf -t tcp_rr -- -k THROUGHPUT,THROUGHPUT_UNITS + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + THROUGHPUT=60074.74 + THROUGHPUT_UNITS=Trans/s + rather than: + $ netperf -t tcp_rr + MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo + Local /Remote + Socket Size Request Resp. Elapsed Trans. + Send Recv Size Size Time Rate + bytes Bytes bytes bytes secs. per sec + + 16384 87380 1 1 10.00 59421.52 + 16384 87380 + +9.3 Omni Output Selection +========================= + +The omni test-specific `-k', `-o' and `-O' options take an optional +`output selector' by which the user can configure what values are +reported. The output selector can take several forms: + +``filename'' + The output selections will be read from the named file. Within the + file there can be up to four lines of comma-separated output + selectors. This controls how many multi-line blocks of output are + emitted when the `-O' option is used. This output, while not + identical to "classic" netperf output, is inspired by it. + Multiple lines have no effect for `-k' and `-o' options. Putting + output selections in a file can be useful when the list of + selections is long. + +`comma and/or semi-colon-separated list' + The output selections will be parsed from a comma and/or + semi-colon-separated list of output selectors. When the list is + given to a `-O' option a semi-colon specifies a new output block + should be started. Semi-colons have the same meaning as commas + when used with the `-k' or `-o' options. Depending on the command + interpreter being used, the semi-colon may have to be escaped + somehow to keep it from being interpreted by the command + interpreter. This can often be done by enclosing the entire list + in quotes. + +`all' + If the keyword all is specified it means that all known output + values should be displayed at the end of the test. This can be a + great deal of output. As of version 2.5.0 there are 157 different + output selectors. + +`?' + If a "?" is given as the output selection, the list of all known + output selectors will be displayed and no test actually run. When + passed to the `-O' option they will be listed one per line. + Otherwise they will be listed as a comma-separated list. It may + be necessary to protect the "?" from the command interpreter by + escaping it or enclosing it in quotes. + +`no selector' + If nothing is given to the `-k', `-o' or `-O' option then the code + selects a default set of output selectors inspired by classic + netperf output. The format will be the `human readable' format + emitted by the test-specific `-O' option. + + The order of evaluation will first check for an output selection. If +none is specified with the `-k', `-o' or `-O' option netperf will +select a default based on the characteristics of the test. If there is +an output selection, the code will first check for `?', then check to +see if it is the magic `all' keyword. After that it will check for +either `,' or `;' in the selection and take that to mean it is a comma +and/or semi-colon-separated list. If none of those checks match, +netperf will then assume the output specification is a filename and +attempt to open and parse the file. + +9.3.1 Omni Output Selectors +--------------------------- + +As of version 2.5.0 the output selectors are: + +`OUTPUT_NONE' + This is essentially a null output. For `-k' output it will simply + add a line that reads "OUTPUT_NONE=" to the output. For `-o' it + will cause an empty "column" to be included. For `-O' output it + will cause extra spaces to separate "real" output. + +`SOCKET_TYPE' + This will cause the socket type (eg SOCK_STREAM, SOCK_DGRAM) for + the data connection to be output. + +`PROTOCOL' + This will cause the protocol used for the data connection to be + displayed. + +`DIRECTION' + This will display the data flow direction relative to the netperf + process. Units: Send or Recv for a unidirectional bulk-transfer + test, or Send|Recv for a request/response test. + +`ELAPSED_TIME' + This will display the elapsed time in seconds for the test. + +`THROUGHPUT' + This will display the throughput for the test. Units: As requested + via the global `-f' option and displayed by the THROUGHPUT_UNITS + output selector. + +`THROUGHPUT_UNITS' + This will display the units for what is displayed by the + `THROUGHPUT' output selector. + +`LSS_SIZE_REQ' + This will display the local (netperf) send socket buffer size (aka + SO_SNDBUF) requested via the command line. Units: Bytes. + +`LSS_SIZE' + This will display the local (netperf) send socket buffer size + (SO_SNDBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`LSS_SIZE_END' + This will display the local (netperf) send socket buffer size + (SO_SNDBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`LSR_SIZE_REQ' + This will display the local (netperf) receive socket buffer size + (aka SO_RCVBUF) requested via the command line. Units: Bytes. + +`LSR_SIZE' + This will display the local (netperf) receive socket buffer size + (SO_RCVBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`LSR_SIZE_END' + This will display the local (netperf) receive socket buffer size + (SO_RCVBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`RSS_SIZE_REQ' + This will display the remote (netserver) send socket buffer size + (aka SO_SNDBUF) requested via the command line. Units: Bytes. + +`RSS_SIZE' + This will display the remote (netserver) send socket buffer size + (SO_SNDBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`RSS_SIZE_END' + This will display the remote (netserver) send socket buffer size + (SO_SNDBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`RSR_SIZE_REQ' + This will display the remote (netserver) receive socket buffer + size (aka SO_RCVBUF) requested via the command line. Units: Bytes. + +`RSR_SIZE' + This will display the remote (netserver) receive socket buffer size + (SO_RCVBUF) immediately after the data connection socket was + created. Peculiarities of different networking stacks may lead to + this differing from the size requested via the command line. + Units: Bytes. + +`RSR_SIZE_END' + This will display the remote (netserver) receive socket buffer size + (SO_RCVBUF) immediately before the data connection socket is + closed. Peculiarities of different networking stacks may lead + this to differ from the size requested via the command line and/or + the size immediately after the data connection socket was created. + Units: Bytes. + +`LOCAL_SEND_SIZE' + This will display the size of the buffers netperf passed in any + "send" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`LOCAL_RECV_SIZE' + This will display the size of the buffers netperf passed in any + "receive" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REMOTE_SEND_SIZE' + This will display the size of the buffers netserver passed in any + "send" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REMOTE_RECV_SIZE' + This will display the size of the buffers netserver passed in any + "receive" calls it made on the data connection for a + non-request/response test. Units: Bytes. + +`REQUEST_SIZE' + This will display the size of the requests netperf sent in a + request-response test. Units: Bytes. + +`RESPONSE_SIZE' + This will display the size of the responses netserver sent in a + request-response test. Units: Bytes. + +`LOCAL_CPU_UTIL' + This will display the overall CPU utilization during the test as + measured by netperf. Units: 0 to 100 percent. + +`LOCAL_CPU_METHOD' + This will display the method used by netperf to measure CPU + utilization. Units: single character denoting method. + +`LOCAL_SD' + This will display the service demand, or units of CPU consumed per + unit of work, as measured by netperf. Units: microseconds of CPU + consumed per either KB (K==1024) of data transferred or + request/response transaction. + +`REMOTE_CPU_UTIL' + This will display the overall CPU utilization during the test as + measured by netserver. Units 0 to 100 percent. + +`REMOTE_CPU_METHOD' + This will display the method used by netserver to measure CPU + utilization. Units: single character denoting method. + +`REMOTE_SD' + This will display the service demand, or units of CPU consumed per + unit of work, as measured by netserver. Units: microseconds of CPU + consumed per either KB (K==1024) of data transferred or + request/response transaction. + +`SD_UNITS' + This will display the units for LOCAL_SD and REMOTE_SD + +`CONFIDENCE_LEVEL' + This will display the confidence level requested by the user either + explicitly via the global `-I' option, or implicitly via the + global `-i' option. The value will be either 95 or 99 if + confidence intervals have been requested or 0 if they were not. + Units: Percent + +`CONFIDENCE_INTERVAL' + This will display the width of the confidence interval requested + either explicitly via the global `-I' option or implicitly via the + global `-i' option. Units: Width in percent of mean value + computed. A value of -1.0 means that confidence intervals were not + requested. + +`CONFIDENCE_ITERATION' + This will display the number of test iterations netperf undertook, + perhaps while attempting to achieve the requested confidence + interval and level. If confidence intervals were requested via the + command line then the value will be between 3 and 30. If + confidence intervals were not requested the value will be 1. + Units: Iterations + +`THROUGHPUT_CONFID' + This will display the width of the confidence interval actually + achieved for `THROUGHPUT' during the test. Units: Width of + interval as percentage of reported throughput value. + +`LOCAL_CPU_CONFID' + This will display the width of the confidence interval actually + achieved for overall CPU utilization on the system running netperf + (`LOCAL_CPU_UTIL') during the test, if CPU utilization measurement + was enabled. Units: Width of interval as percentage of reported + CPU utilization. + +`REMOTE_CPU_CONFID' + This will display the width of the confidence interval actually + achieved for overall CPU utilization on the system running + netserver (`REMOTE_CPU_UTIL') during the test, if CPU utilization + measurement was enabled. Units: Width of interval as percentage of + reported CPU utilization. + +`TRANSACTION_RATE' + This will display the transaction rate in transactions per second + for a request/response test even if the user has requested a + throughput in units of bits or bytes per second via the global `-f' + option. It is undefined for a non-request/response test. Units: + Transactions per second. + +`RT_LATENCY' + This will display the average round-trip latency for a + request/response test, accounting for number of transactions in + flight at one time. It is undefined for a non-request/response + test. Units: Microseconds per transaction + +`BURST_SIZE' + This will display the "burst size" or added transactions in flight + in a request/response test as requested via a test-specific `-b' + option. The number of transactions in flight at one time will be + one greater than this value. It is undefined for a + non-request/response test. Units: added Transactions in flight. + +`LOCAL_TRANSPORT_RETRANS' + This will display the number of retransmissions experienced on the + data connection during the test as determined by netperf. A value + of -1 means the attempt to determine the number of retransmissions + failed or the concept was not valid for the given protocol or the + mechanism is not known for the platform. A value of -2 means it + was not attempted. As of version 2.5.0 the meaning of values are + in flux and subject to change. Units: number of retransmissions. + +`REMOTE_TRANSPORT_RETRANS' + This will display the number of retransmissions experienced on the + data connection during the test as determined by netserver. A + value of -1 means the attempt to determine the number of + retransmissions failed or the concept was not valid for the given + protocol or the mechanism is not known for the platform. A value + of -2 means it was not attempted. As of version 2.5.0 the meaning + of values are in flux and subject to change. Units: number of + retransmissions. + +`TRANSPORT_MSS' + This will display the Maximum Segment Size (aka MSS) or its + equivalent for the protocol being used during the test. A value + of -1 means either the concept of an MSS did not apply to the + protocol being used, or there was an error in retrieving it. + Units: Bytes. + +`LOCAL_SEND_THROUGHPUT' + The throughput as measured by netperf for the successful "send" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`LOCAL_RECV_THROUGHPUT' + The throughput as measured by netperf for the successful "receive" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`REMOTE_SEND_THROUGHPUT' + The throughput as measured by netserver for the successful "send" + calls it made on the data connection. Units: as requested via the + global `-f' option and displayed via the `THROUGHPUT_UNITS' output + selector. + +`REMOTE_RECV_THROUGHPUT' + The throughput as measured by netserver for the successful + "receive" calls it made on the data connection. Units: as + requested via the global `-f' option and displayed via the + `THROUGHPUT_UNITS' output selector. + +`LOCAL_CPU_BIND' + The CPU to which netperf was bound, if at all, during the test. A + value of -1 means that netperf was not explicitly bound to a CPU + during the test. Units: CPU ID + +`LOCAL_CPU_COUNT' + The number of CPUs (cores, threads) detected by netperf. Units: + CPU count. + +`LOCAL_CPU_PEAK_UTIL' + The utilization of the CPU most heavily utilized during the test, + as measured by netperf. This can be used to see if any one CPU of a + multi-CPU system was saturated even though the overall CPU + utilization as reported by `LOCAL_CPU_UTIL' was low. Units: 0 to + 100% + +`LOCAL_CPU_PEAK_ID' + The id of the CPU most heavily utilized during the test as + determined by netperf. Units: CPU ID. + +`LOCAL_CPU_MODEL' + Model information for the processor(s) present on the system + running netperf. Assumes all processors in the system (as + perceived by netperf) on which netperf is running are the same + model. Units: Text + +`LOCAL_CPU_FREQUENCY' + The frequency of the processor(s) on the system running netperf, at + the time netperf made the call. Assumes that all processors + present in the system running netperf are running at the same + frequency. Units: MHz + +`REMOTE_CPU_BIND' + The CPU to which netserver was bound, if at all, during the test. A + value of -1 means that netperf was not explicitly bound to a CPU + during the test. Units: CPU ID + +`REMOTE_CPU_COUNT' + The number of CPUs (cores, threads) detected by netserver. Units: + CPU count. + +`REMOTE_CPU_PEAK_UTIL' + The utilization of the CPU most heavily utilized during the test, + as measured by netserver. This can be used to see if any one CPU + of a multi-CPU system was saturated even though the overall CPU + utilization as reported by `REMOTE_CPU_UTIL' was low. Units: 0 to + 100% + +`REMOTE_CPU_PEAK_ID' + The id of the CPU most heavily utilized during the test as + determined by netserver. Units: CPU ID. + +`REMOTE_CPU_MODEL' + Model information for the processor(s) present on the system + running netserver. Assumes all processors in the system (as + perceived by netserver) on which netserver is running are the same + model. Units: Text + +`REMOTE_CPU_FREQUENCY' + The frequency of the processor(s) on the system running netserver, + at the time netserver made the call. Assumes that all processors + present in the system running netserver are running at the same + frequency. Units: MHz + +`SOURCE_PORT' + The port ID/service name to which the data socket created by + netperf was bound. A value of 0 means the data socket was not + explicitly bound to a port number. Units: ASCII text. + +`SOURCE_ADDR' + The name/address to which the data socket created by netperf was + bound. A value of 0.0.0.0 means the data socket was not explicitly + bound to an address. Units: ASCII text. + +`SOURCE_FAMILY' + The address family to which the data socket created by netperf was + bound. A value of 0 means the data socket was not explicitly + bound to a given address family. Units: ASCII text. + +`DEST_PORT' + The port ID to which the data socket created by netserver was + bound. A value of 0 means the data socket was not explicitly bound + to a port number. Units: ASCII text. + +`DEST_ADDR' + The name/address of the data socket created by netserver. Units: + ASCII text. + +`DEST_FAMILY' + The address family to which the data socket created by netserver + was bound. A value of 0 means the data socket was not explicitly + bound to a given address family. Units: ASCII text. + +`LOCAL_SEND_CALLS' + The number of successful "send" calls made by netperf against its + data socket. Units: Calls. + +`LOCAL_RECV_CALLS' + The number of successful "receive" calls made by netperf against + its data socket. Units: Calls. + +`LOCAL_BYTES_PER_RECV' + The average number of bytes per "receive" call made by netperf + against its data socket. Units: Bytes. + +`LOCAL_BYTES_PER_SEND' + The average number of bytes per "send" call made by netperf against + its data socket. Units: Bytes. + +`LOCAL_BYTES_SENT' + The number of bytes successfully sent by netperf through its data + socket. Units: Bytes. + +`LOCAL_BYTES_RECVD' + The number of bytes successfully received by netperf through its + data socket. Units: Bytes. + +`LOCAL_BYTES_XFERD' + The sum of bytes sent and received by netperf through its data + socket. Units: Bytes. + +`LOCAL_SEND_OFFSET' + The offset from the alignment of the buffers passed by netperf in + its "send" calls. Specified via the global `-o' option and + defaults to 0. Units: Bytes. + +`LOCAL_RECV_OFFSET' + The offset from the alignment of the buffers passed by netperf in + its "receive" calls. Specified via the global `-o' option and + defaults to 0. Units: Bytes. + +`LOCAL_SEND_ALIGN' + The alignment of the buffers passed by netperf in its "send" calls + as specified via the global `-a' option. Defaults to 8. Units: + Bytes. + +`LOCAL_RECV_ALIGN' + The alignment of the buffers passed by netperf in its "receive" + calls as specified via the global `-a' option. Defaults to 8. + Units: Bytes. + +`LOCAL_SEND_WIDTH' + The "width" of the ring of buffers through which netperf cycles as + it makes its "send" calls. Defaults to one more than the local + send socket buffer size divided by the send size as determined at + the time the data socket is created. Can be used to make netperf + more processor data cache unfriendly. Units: number of buffers. + +`LOCAL_RECV_WIDTH' + The "width" of the ring of buffers through which netperf cycles as + it makes its "receive" calls. Defaults to one more than the local + receive socket buffer size divided by the receive size as + determined at the time the data socket is created. Can be used to + make netperf more processor data cache unfriendly. Units: number + of buffers. + +`LOCAL_SEND_DIRTY_COUNT' + The number of bytes to "dirty" (write to) before netperf makes a + "send" call. Specified via the global `-k' option, which requires + that -enable-dirty=yes was specified with the configure command + prior to building netperf. Units: Bytes. + +`LOCAL_RECV_DIRTY_COUNT' + The number of bytes to "dirty" (write to) before netperf makes a + "recv" call. Specified via the global `-k' option which requires + that -enable-dirty was specified with the configure command prior + to building netperf. Units: Bytes. + +`LOCAL_RECV_CLEAN_COUNT' + The number of bytes netperf should read "cleanly" before making a + "receive" call. Specified via the global `-k' option which + requires that -enable-dirty was specified with configure command + prior to building netperf. Clean reads start were dirty writes + ended. Units: Bytes. + +`LOCAL_NODELAY' + Indicates whether or not setting the test protocol-specific "no + delay" (eg TCP_NODELAY) option on the data socket used by netperf + was requested by the test-specific `-D' option and successful. + Units: 0 means no, 1 means yes. + +`LOCAL_CORK' + Indicates whether or not TCP_CORK was set on the data socket used + by netperf as requested via the test-specific `-C' option. 1 means + yes, 0 means no/not applicable. + +`REMOTE_SEND_CALLS' + +`REMOTE_RECV_CALLS' + +`REMOTE_BYTES_PER_RECV' + +`REMOTE_BYTES_PER_SEND' + +`REMOTE_BYTES_SENT' + +`REMOTE_BYTES_RECVD' + +`REMOTE_BYTES_XFERD' + +`REMOTE_SEND_OFFSET' + +`REMOTE_RECV_OFFSET' + +`REMOTE_SEND_ALIGN' + +`REMOTE_RECV_ALIGN' + +`REMOTE_SEND_WIDTH' + +`REMOTE_RECV_WIDTH' + +`REMOTE_SEND_DIRTY_COUNT' + +`REMOTE_RECV_DIRTY_COUNT' + +`REMOTE_RECV_CLEAN_COUNT' + +`REMOTE_NODELAY' + +`REMOTE_CORK' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. + +`LOCAL_SYSNAME' + The name of the OS (eg "Linux") running on the system on which + netperf was running. Units: ASCII Text + +`LOCAL_SYSTEM_MODEL' + The model name of the system on which netperf was running. Units: + ASCII Text. + +`LOCAL_RELEASE' + The release name/number of the OS running on the system on which + netperf was running. Units: ASCII Text + +`LOCAL_VERSION' + The version number of the OS running on the system on which netperf + was running. Units: ASCII Text + +`LOCAL_MACHINE' + The machine architecture of the machine on which netperf was + running. Units: ASCII Text. + +`REMOTE_SYSNAME' + +`REMOTE_SYSTEM_MODEL' + +`REMOTE_RELEASE' + +`REMOTE_VERSION' + +`REMOTE_MACHINE' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. + +`LOCAL_INTERFACE_NAME' + The name of the probable egress interface through which the data + connection went on the system running netperf. Example: eth0. + Units: ASCII Text. + +`LOCAL_INTERFACE_VENDOR' + The vendor ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). + +`LOCAL_INTERFACE_DEVICE' + The device ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). + +`LOCAL_INTERFACE_SUBVENDOR' + The sub-vendor ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). + +`LOCAL_INTERFACE_SUBDEVICE' + The sub-device ID of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: Hexadecimal IDs as might be found in a `pci.ids' file or at + the PCI ID Repository (http://pciids.sourceforge.net/). + +`LOCAL_DRIVER_NAME' + The name of the driver used for the probable egress interface + through which traffic on the data connection went on the system + running netperf. Units: ASCII Text. + +`LOCAL_DRIVER_VERSION' + The version string for the driver used for the probable egress + interface through which traffic on the data connection went on the + system running netperf. Units: ASCII Text. + +`LOCAL_DRIVER_FIRMWARE' + The firmware version for the driver used for the probable egress + interface through which traffic on the data connection went on the + system running netperf. Units: ASCII Text. + +`LOCAL_DRIVER_BUS' + The bus address of the probable egress interface through which + traffic on the data connection went on the system running netperf. + Units: ASCII Text. + +`LOCAL_INTERFACE_SLOT' + The slot ID of the probable egress interface through which traffic + on the data connection went on the system running netperf. Units: + ASCII Text. + +`REMOTE_INTERFACE_NAME' + +`REMOTE_INTERFACE_VENDOR' + +`REMOTE_INTERFACE_DEVICE' + +`REMOTE_INTERFACE_SUBVENDOR' + +`REMOTE_INTERFACE_SUBDEVICE' + +`REMOTE_DRIVER_NAME' + +`REMOTE_DRIVER_VERSION' + +`REMOTE_DRIVER_FIRMWARE' + +`REMOTE_DRIVER_BUS' + +`REMOTE_INTERFACE_SLOT' + These are all like their "LOCAL_" counterparts only for the + netserver rather than netperf. + +`LOCAL_INTERVAL_USECS' + The interval at which bursts of operations (sends, receives, + transactions) were attempted by netperf. Specified by the global + `-w' option which requires -enable-intervals to have been + specified with the configure command prior to building netperf. + Units: Microseconds (though specified by default in milliseconds + on the command line) + +`LOCAL_INTERVAL_BURST' + The number of operations (sends, receives, transactions depending + on the test) which were attempted by netperf each + LOCAL_INTERVAL_USECS units of time. Specified by the global `-b' + option which requires -enable-intervals to have been specified + with the configure command prior to building netperf. Units: + number of operations per burst. + +`REMOTE_INTERVAL_USECS' + The interval at which bursts of operations (sends, receives, + transactions) were attempted by netserver. Specified by the + global `-w' option which requires -enable-intervals to have been + specified with the configure command prior to building netperf. + Units: Microseconds (though specified by default in milliseconds + on the command line) + +`REMOTE_INTERVAL_BURST' + The number of operations (sends, receives, transactions depending + on the test) which were attempted by netperf each + LOCAL_INTERVAL_USECS units of time. Specified by the global `-b' + option which requires -enable-intervals to have been specified + with the configure command prior to building netperf. Units: + number of operations per burst. + +`LOCAL_SECURITY_TYPE_ID' + +`LOCAL_SECURITY_TYPE' + +`LOCAL_SECURITY_ENABLED_NUM' + +`LOCAL_SECURITY_ENABLED' + +`LOCAL_SECURITY_SPECIFIC' + +`REMOTE_SECURITY_TYPE_ID' + +`REMOTE_SECURITY_TYPE' + +`REMOTE_SECURITY_ENABLED_NUM' + +`REMOTE_SECURITY_ENABLED' + +`REMOTE_SECURITY_SPECIFIC' + A bunch of stuff related to what sort of security mechanisms (eg + SELINUX) were enabled on the systems during the test. + +`RESULT_BRAND' + The string specified by the user with the global `-B' option. + Units: ASCII Text. + +`UUID' + The universally unique identifier associated with this test, either + generated automagically by netperf, or passed to netperf via an + omni test-specific `-u' option. Note: Future versions may make this + a global command-line option. Units: ASCII Text. + +`MIN_LATENCY' + The minimum "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`MAX_LATENCY' + The maximum "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`P50_LATENCY' + The 50th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`P90_LATENCY' + The 90th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`P99_LATENCY' + The 99th percentile value of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`MEAN_LATENCY' + The average "latency" or operation time (send, receive or + request/response exchange depending on the test) as measured on the + netperf side when the global `-j' option was specified. Units: + Microseconds. + +`STDDEV_LATENCY' + The standard deviation of "latency" or operation time (send, + receive or request/response exchange depending on the test) as + measured on the netperf side when the global `-j' option was + specified. Units: Microseconds. + +`COMMAND_LINE' + The full command line used when invoking netperf. Units: ASCII + Text. + +`OUTPUT_END' + While emitted with the list of output selectors, it is ignored when + specified as an output selector. + +10 Other Netperf Tests +********************** + +Apart from the typical performance tests, netperf contains some tests +which can be used to streamline measurements and reporting. These +include CPU rate calibration (present) and host identification (future +enhancement). + +10.1 CPU rate calibration +========================= + +Some of the CPU utilization measurement mechanisms of netperf work by +comparing the rate at which some counter increments when the system is +idle with the rate at which that same counter increments when the +system is running a netperf test. The ratio of those rates is used to +arrive at a CPU utilization percentage. + + This means that netperf must know the rate at which the counter +increments when the system is presumed to be "idle." If it does not +know the rate, netperf will measure it before starting a data transfer +test. This calibration step takes 40 seconds for each of the local or +remote systems, and if repeated for each netperf test would make taking +repeated measurements rather slow. + + Thus, the netperf CPU utilization options `-c' and and `-C' can take +an optional calibration value. This value is used as the "idle rate" +and the calibration step is not performed. To determine the idle rate, +netperf can be used to run special tests which only report the value of +the calibration - they are the LOC_CPU and REM_CPU tests. These return +the calibration value for the local and remote system respectively. A +common way to use these tests is to store their results into an +environment variable and use that in subsequent netperf commands: + + LOC_RATE=`netperf -t LOC_CPU` + REM_RATE=`netperf -H -t REM_CPU` + netperf -H -c $LOC_RATE -C $REM_RATE ... -- ... + ... + netperf -H -c $LOC_RATE -C $REM_RATE ... -- ... + + If you are going to use netperf to measure aggregate results, it is +important to use the LOC_CPU and REM_CPU tests to get the calibration +values first to avoid issues with some of the aggregate netperf tests +transferring data while others are "idle" and getting bogus calibration +values. When running aggregate tests, it is very important to remember +that any one instance of netperf does not know about the other +instances of netperf. It will report global CPU utilization and will +calculate service demand believing it was the only thing causing that +CPU utilization. So, you can use the CPU utilization reported by +netperf in an aggregate test, but you have to calculate service demands +by hand. + +10.2 UUID Generation +==================== + +Beginning with version 2.5.0 netperf can generate Universally Unique +IDentifiers (UUIDs). This can be done explicitly via the "UUID" test: + $ netperf -t UUID + 2c8561ae-9ebd-11e0-a297-0f5bfa0349d0 + + In and of itself, this is not terribly useful, but used in +conjunction with the test-specific `-u' option of an "omni" test to set +the UUID emitted by the *note UUID: Omni Output Selectors. output +selector, it can be used to tie-together the separate instances of an +aggregate netperf test. Say, for instance if they were inserted into a +database of some sort. + +11 Address Resolution +********************* + +Netperf versions 2.4.0 and later have merged IPv4 and IPv6 tests so the +functionality of the tests in `src/nettest_ipv6.c' has been subsumed +into the tests in `src/nettest_bsd.c' This has been accomplished in +part by switching from `gethostbyname()'to `getaddrinfo()' exclusively. +While it was theoretically possible to get multiple results for a +hostname from `gethostbyname()' it was generally unlikely and netperf's +ignoring of the second and later results was not much of an issue. + + Now with `getaddrinfo' and particularly with AF_UNSPEC it is +increasingly likely that a given hostname will have multiple associated +addresses. The `establish_control()' routine of `src/netlib.c' will +indeed attempt to chose from among all the matching IP addresses when +establishing the control connection. Netperf does not _really_ care if +the control connection is IPv4 or IPv6 or even mixed on either end. + + However, the individual tests still ass-u-me that the first result in +the address list is the one to be used. Whether or not this will +turn-out to be an issue has yet to be determined. + + If you do run into problems with this, the easiest workaround is to +specify IP addresses for the data connection explicitly in the +test-specific `-H' and `-L' options. At some point, the netperf tests +_may_ try to be more sophisticated in their parsing of returns from +`getaddrinfo()' - straw-man patches to +would of course be most welcome :) + + Netperf has leveraged code from other open-source projects with +amenable licensing to provide a replacement `getaddrinfo()' call on +those platforms where the `configure' script believes there is no +native getaddrinfo call. As of this writing, the replacement +`getaddrinfo()' as been tested on HP-UX 11.0 and then presumed to run +elsewhere. + +12 Enhancing Netperf +******************** + +Netperf is constantly evolving. If you find you want to make +enhancements to netperf, by all means do so. If you wish to add a new +"suite" of tests to netperf the general idea is to: + + 1. Add files `src/nettest_mumble.c' and `src/nettest_mumble.h' where + mumble is replaced with something meaningful for the test-suite. + + 2. Add support for an appropriate `--enable-mumble' option in + `configure.ac'. + + 3. Edit `src/netperf.c', `netsh.c', and `netserver.c' as required, + using #ifdef WANT_MUMBLE. + + 4. Compile and test + + However, with the addition of the "omni" tests in version 2.5.0 it +is preferred that one attempt to make the necessary changes to +`src/nettest_omni.c' rather than adding new source files, unless this +would make the omni tests entirely too complicated. + + If you wish to submit your changes for possible inclusion into the +mainline sources, please try to base your changes on the latest +available sources. (*Note Getting Netperf Bits::.) and then send email +describing the changes at a high level to + or perhaps . +If the consensus is positive, then sending context `diff' results to + is the next step. From that point, it +is a matter of pestering the Netperf Contributing Editor until he gets +the changes incorporated :) + +13 Netperf4 +*********** + +Netperf4 is the shorthand name given to version 4.X.X of netperf. This +is really a separate benchmark more than a newer version of netperf, +but it is a descendant of netperf so the netperf name is kept. The +facetious way to describe netperf4 is to say it is the +egg-laying-woolly-milk-pig version of netperf :) The more respectful +way to describe it is to say it is the version of netperf with support +for synchronized, multiple-thread, multiple-test, multiple-system, +network-oriented benchmarking. + + Netperf4 is still undergoing evolution. Those wishing to work with or +on netperf4 are encouraged to join the netperf-dev +(http://www.netperf.org/cgi-bin/mailman/listinfo/netperf-dev) mailing +list and/or peruse the current sources +(http://www.netperf.org/svn/netperf4/trunk). + +Concept Index +************* + +Aggregate Performance: See 7. (line 2142) +Bandwidth Limitation: See 2.2. (line 317) +Connection Latency: See 6.2.2. (line 1985) +CPU Utilization: See 3.1. (line 466) +Design of Netperf: See 3. (line 436) +Installation: See 2. (line 198) +Introduction: See 1. (line 85) +Latency, Connection Establishment <1>: See 6.2.7. (line 2112) +Latency, Connection Establishment <2>: See 6.2.6. (line 2102) +Latency, Connection Establishment <3>: See 6.2.3. (line 2028) +Latency, Connection Establishment: See 6.2.2. (line 1985) +Latency, Request-Response <1>: See 6.2.11. (line 2139) +Latency, Request-Response <2>: See 6.2.10. (line 2136) +Latency, Request-Response <3>: See 6.2.9. (line 2133) +Latency, Request-Response <4>: See 6.2.8. (line 2122) +Latency, Request-Response <5>: See 6.2.7. (line 2112) +Latency, Request-Response <6>: See 6.2.5. (line 2091) +Latency, Request-Response <7>: See 6.2.4. (line 2048) +Latency, Request-Response <8>: See 6.2.3. (line 2028) +Latency, Request-Response: See 6.2.1. (line 1936) +Limiting Bandwidth <1>: See 5.2.4. (line 1564) +Limiting Bandwidth: See 2.2. (line 317) +Measuring Latency: See 6.2.1. (line 1936) +Packet Loss: See 6.2.4. (line 2048) +Port Reuse: See 6.2.2. (line 1992) +TIME_WAIT: See 6.2.2. (line 1992) +Option Index +************ + +--enable-burst, Configure: See 7. (line 2142) +--enable-cpuutil, Configure: See 2.2. (line 277) +--enable-dlpi, Configure: See 2.2. (line 283) +--enable-histogram, Configure: See 2.2. (line 317) +--enable-intervals, Configure: See 2.2. (line 317) +--enable-omni, Configure: See 2.2. (line 289) +--enable-sctp, Configure: See 2.2. (line 283) +--enable-unixdomain, Configure: See 2.2. (line 283) +--enable-xti, Configure: See 2.2. (line 283) +-4, Global: See 4.2. (line 1174) +-4, Test-specific <1>: See 6.2. (line 1922) +-4, Test-specific: See 5.2. (line 1395) +-6 Test-specific: See 6.2. (line 1928) +-6, Global: See 4.2. (line 1183) +-6, Test-specific: See 5.2. (line 1401) +-A, Global: See 4.2. (line 703) +-a, Global: See 4.2. (line 691) +-B, Global: See 4.2. (line 714) +-b, Global: See 4.2. (line 707) +-C, Global: See 4.2. (line 727) +-c, Global: See 4.2. (line 718) +-c, Test-specific: See 9.1. (line 2746) +-D, Global: See 4.2. (line 741) +-d, Global: See 4.2. (line 732) +-d, Test-specific: See 9.1. (line 2750) +-F, Global: See 4.2. (line 761) +-f, Global: See 4.2. (line 752) +-H, Global: See 4.2. (line 780) +-h, Global: See 4.2. (line 776) +-H, Test-specific: See 6.2. (line 1851) +-h, Test-specific <1>: See 6.2. (line 1844) +-h, Test-specific: See 5.2. (line 1295) +-i, Global: See 4.2. (line 864) +-I, Global: See 4.2. (line 815) +-j, Global: See 4.2. (line 890) +-k, Test-specific: See 9.1. (line 2770) +-L, Global: See 4.2. (line 948) +-l, Global: See 4.2. (line 927) +-L, Test-specific <1>: See 6.2. (line 1860) +-L, Test-specific: See 5.2. (line 1310) +-M, Test-specific: See 5.2. (line 1333) +-m, Test-specific: See 5.2. (line 1317) +-N, Global: See 4.2. (line 978) +-n, Global: See 4.2. (line 960) +-O, Global: See 4.2. (line 1023) +-o, Global: See 4.2. (line 1014) +-O, Test-specific: See 9.1. (line 2795) +-o, Test-specific: See 9.1. (line 2783) +-P, Global: See 4.2. (line 1048) +-p, Global: See 4.2. (line 1028) +-P, Test-specific <1>: See 6.2. (line 1867) +-P, Test-specific: See 5.2. (line 1346) +-r, Test-specific: See 6.2. (line 1870) +-S Test-specific: See 5.2. (line 1372) +-S, Global: See 4.2. (line 1066) +-s, Global: See 4.2. (line 1057) +-S, Test-specific: See 6.2. (line 1902) +-s, Test-specific <1>: See 6.2. (line 1882) +-s, Test-specific: See 5.2. (line 1349) +-T, Global: See 4.2. (line 1108) +-t, Global: See 4.2. (line 1076) +-T, Test-specific: See 9.1. (line 2814) +-t, Test-specific: See 9.1. (line 2809) +-V, Global: See 4.2. (line 1153) +-v, Global: See 4.2. (line 1125) +-W, Global: See 4.2. (line 1165) +-w, Global: See 4.2. (line 1158) diff --git a/doc/netperf.xml b/doc/netperf.xml new file mode 100644 index 0000000..10a17f1 --- /dev/null +++ b/doc/netperf.xml @@ -0,0 +1,3196 @@ + + + + netperf.xml + Care and Feeding of Netperf 2.5.X + + This is Rick Jones' feeble attempt at a Texinfo-based manual for the netperf benchmark. + Copyright ©right; 2005-2011 Hewlett-Packard Company + + Permission is granted to copy, distribute and/or modify this document per the terms of the netperf source license, a copy of which can be found in the file COPYING of the basic netperf distribution. + + + Care and Feeding of Netperf + Versions 2.5.0 and Later + Rick Jones <email><emailaddress>rick.jones2@hp.com</emailaddress></email> + + This is Rick Jones' feeble attempt at a Texinfo-based manual for the netperf benchmark. + Copyright ©right; 2005-2011 Hewlett-Packard Company + + Permission is granted to copy, distribute and/or modify this document per the terms of the netperf source license, a copy of which can be found in the file COPYING of the basic netperf distribution. + + + + + + Top + Introduction + (dir) + (dir) + + Netperf Manual + This is Rick Jones' feeble attempt at a Texinfo-based manual for the netperf benchmark. + Copyright ©right; 2005-2011 Hewlett-Packard Company + + Permission is granted to copy, distribute and/or modify this document per the terms of the netperf source license, a copy of which can be found in the file COPYING of the basic netperf distribution. + +

+ + Introduction + Introduction + An introduction to netperf - what itis and what it is not. + + + Installing Netperf + Installing Netperf + How to go about installing netperf. + + + The Design of Netperf + The Design of Netperf + + + + Global Command-line Options + Global Command-line Options + + + + Using Netperf to Measure Bulk Data Transfer + Using Netperf to Measure Bulk Data Transfer + + + + Using Netperf to Measure Request/Response + Using Netperf to Measure Request/Response + + + + Using Netperf to Measure Aggregate Performance + Using Netperf to Measure Aggregate Performance + + + + Using Netperf to Measure Bidirectional Transfer + Using Netperf to Measure Bidirectional Transfer + + + + The Omni Tests + The Omni Tests + + + + Other Netperf Tests + Other Netperf Tests + + + + Address Resolution + Address Resolution + + + + Enhancing Netperf + Enhancing Netperf + + + + Netperf4 + Netperf4 + + + + Concept Index + Concept Index + + + + Option Index + Option Index + + + + + + + Introduction + Installing Netperf + Top + Top + + Introduction + Introduction Netperf is a benchmark that can be use to measure various aspect of networking performance. The primary foci are bulk (aka unidirectional) data transfer and request/response performance using either TCP or UDP and the Berkeley Sockets interface. As of this writing, the tests available either unconditionally or conditionally include: + + + + TCP and UDP unidirectional transfer and request/response over IPv4 and IPv6 using the Sockets interface. + + + TCP and UDP unidirectional transfer and request/response over IPv4 using the XTI interface. + + + Link-level unidirectional transfer and request/response using the DLPI interface. + + + Unix domain sockets + + + SCTP unidirectional transfer and request/response over IPv4 and IPv6 using the sockets interface. + + + While not every revision of netperf will work on every platform listed, the intention is that at least some version of netperf will work on the following platforms: + + + + Unix - at least all the major variants. + + + Linux + + + Windows + + + Others + + + Netperf is maintained and informally supported primarily by Rick Jones, who can perhaps be best described as Netperf Contributing Editor. Non-trivial and very appreciated assistance comes from others in the network performance community, who are too numerous to mention here. While it is often used by them, netperf is NOT supported via any of the formal Hewlett-Packard support channels. You should feel free to make enhancements and modifications to netperf to suit your nefarious porpoises, so long as you stay within the guidelines of the netperf copyright. If you feel so inclined, you can send your changes to netperf-feedback@netperf.orgnetperf-feedback for possible inclusion into subsequent versions of netperf. + It is the Contributing Editor's belief that the netperf license walks like open source and talks like open source. However, the license was never submitted for “certification” as an open source license. If you would prefer to make contributions to a networking benchmark using a certified open source license, please consider netperf4, which is distributed under the terms of the GPLv2. + The netperf-talk@netperf.orgnetperf-talk mailing list is available to discuss the care and feeding of netperf with others who share your interest in network performance benchmarking. The netperf-talk mailing list is a closed list (to deal with spam) and you must first subscribe by sending email to netperf-talk-request@netperf.orgnetperf-talk-request. + + + Conventions + Conventions + + + + + + + Conventions + Introduction + Introduction +
+ Conventions + A sizespec is a one or two item, comma-separated list used as an argument to a command-line option that can set one or two, related netperf parameters. If you wish to set both parameters to separate values, items should be separated by a comma: + parameter1,parameter2 + If you wish to set the first parameter without altering the value of the second from its default, you should follow the first item with a comma: + parameter1, + Likewise, precede the item with a comma if you wish to set only the second parameter: + ,parameter2 + An item with no commas: + parameter1and2 + will set both parameters to the same value. This last mode is one of the most frequently used. + There is another variant of the comma-separated, two-item list called a optionspec which is like a sizespec with the exception that a single item with no comma: + parameter1 + will only set the value of the first parameter and will leave the second parameter at its default value. + Netperf has two types of command-line options. The first are global command line options. They are essentially any option not tied to a particular test or group of tests. An example of a global command-line option is the one which sets the test type - . + The second type of options are test-specific options. These are options which are only applicable to a particular test or set of tests. An example of a test-specific option would be the send socket buffer size for a TCP_STREAM test. + Global command-line options are specified first with test-specific options following after a -- as in: + netperf <global> -- <test-specific> +
+
+ + Installing Netperf + The Design of Netperf + Introduction + Top + + Installing Netperf + Installation Netperf's primary form of distribution is source code. This allows installation on systems other than those to which the authors have ready access and thus the ability to create binaries. There are two styles of netperf installation. The first runs the netperf server program - netserver - as a child of inetd. This requires the installer to have sufficient privileges to edit the files /etc/services and /etc/inetd.conf or their platform-specific equivalents. + The second style is to run netserver as a standalone daemon. This second method does not require edit privileges on /etc/services and /etc/inetd.conf but does mean you must remember to run the netserver program explicitly after every system reboot. + This manual assumes that those wishing to measure networking performance already know how to use anonymous FTP and/or a web browser. It is also expected that you have at least a passing familiarity with the networking protocols and interfaces involved. In all honesty, if you do not have such familiarity, likely as not you have some experience to gain before attempting network performance measurements. The excellent texts by authors such as Stevens, Fenner and Rudoff and/or Stallings would be good starting points. There are likely other excellent sources out there as well. + + + Getting Netperf Bits + Getting Netperf Bits + + + + Installing Netperf Bits + Installing Netperf Bits + + + + Verifying Installation + Verifying Installation + + + + + + + Getting Netperf Bits + Installing Netperf Bits + Installing Netperf + Installing Netperf +
+ Getting Netperf Bits + Gzipped tar files of netperf sources can be retrieved via ftp://ftp.netperf.org/netperfanonymous FTP for “released” versions of the bits. Pre-release versions of the bits can be retrieved via anonymous FTP from the ftp://ftp.netperf.org/netperf/experimentalexperimental subdirectory. + For convenience and ease of remembering, a link to the download site is provided via the http://www.netperf.org/NetperfPage + The bits corresponding to each discrete release of netperf are http://www.netperf.org/svn/netperf2/tagstagged for retrieval via subversion. For example, there is a tag for the first version corresponding to this version of the manual - http://www.netperf.org/svn/netperf2/tags/netperf-2.5.0netperf 2.5.0. Those wishing to be on the bleeding edge of netperf development can use subversion to grab the http://www.netperf.org/svn/netperf2/trunktop of trunk. When fixing bugs or making enhancements, patches against the top-of-trunk are preferred. + There are likely other places around the Internet from which one can download netperf bits. These may be simple mirrors of the main netperf site, or they may be local variants on netperf. As with anything one downloads from the Internet, take care to make sure it is what you really wanted and isn't some malicious Trojan or whatnot. Caveat downloader. + As a general rule, binaries of netperf and netserver are not distributed from ftp.netperf.org. From time to time a kind soul or souls has packaged netperf as a Debian package available via the apt-get mechanism or as an RPM. I would be most interested in learning how to enhance the makefiles to make that easier for people. +
+
+ + Installing Netperf Bits + Verifying Installation + Getting Netperf Bits + Installing Netperf +
+ Installing Netperf + Once you have downloaded the tar file of netperf sources onto your system(s), it is necessary to unpack the tar file, cd to the netperf directory, run configure and then make. Most of the time it should be sufficient to just: + gzcat netperf-<version>.tar.gz | tar xf - +cd netperf-<version> +./configure +make +make install + Most of the “usual” configure script options should be present dealing with where to install binaries and whatnot. + ./configure --help + should list all of those and more. You may find the --prefix option helpful in deciding where the binaries and such will be put during the make install. + –enable-cpuutil, ConfigureIf the netperf configure script does not know how to automagically detect which CPU utilization mechanism to use on your platform you may want to add a --enable-cpuutil=mumble option to the configure command. If you have knowledge and/or experience to contribute to that area, feel free to contact netperf-feedback@netperf.org. + –enable-xti, Configure–enable-unixdomain, Configure–enable-dlpi, Configure–enable-sctp, ConfigureSimilarly, if you want tests using the XTI interface, Unix Domain Sockets, DLPI or SCTP it will be necessary to add one or more --enable-[xti|unixdomain|dlpi|sctp]=yes options to the configure command. As of this writing, the configure script will not include those tests automagically. + –enable-omni, ConfigureStarting with version 2.5.0, netperf is migrating most of the “classic” netperf tests found in src/nettest_bsd.c to the so-called “omni” tests (aka “two routines to run them all”) found in src/nettest_omni.c. This migration enables a number of new features such as greater control over what output is included, and new things to output. The “omni” test is enabled by default in 2.5.0 and a number of the classic tests are migrated - you can tell if a test has been migrated from the presence of MIGRATED in the test banner. If you encounter problems with either the omni or migrated tests, please first attempt to obtain resolution via netperf-talk@netperf.org or netperf-feedback@netperf.org. If that is unsuccessful, you can add a --enable-omni=no to the configure command and the omni tests will not be compiled-in and the classic tests will not be migrated. + Starting with version 2.5.0, netperf will include the “burst mode” functionality in a default compilation of the bits. If you encounter problems with this, please first attempt to obtain help via netperf-talk@netperf.org or netperf-feedback@netperf.org. If that is unsuccessful, you can add a --enable-burst=no to the configure command and the burst mode functionality will not be compiled-in. + On some platforms, it may be necessary to precede the configure command with a CFLAGS and/or LIBS variable as the netperf configure script is not yet smart enough to set them itself. Whenever possible, these requirements will be found in README.platform files. Expertise and assistance in making that more automagic in the configure script would be most welcome. + Limiting BandwidthBandwidth Limitation–enable-intervals, Configure–enable-histogram, ConfigureOther optional configure-time settings include --enable-intervals=yes to give netperf the ability to “pace” its _STREAM tests and --enable-histogram=yes to have netperf keep a histogram of interesting times. Each of these will have some effect on the measured result. If your system supports gethrtime() the effect of the histogram measurement should be minimized but probably still measurable. For example, the histogram of a netperf TCP_RR test will be of the individual transaction times: + netperf -t TCP_RR -H lag -v 2 +TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET : histogram +Local /Remote +Socket Size Request Resp. Elapsed Trans. +Send Recv Size Size Time Rate +bytes Bytes bytes bytes secs. per sec + +16384 87380 1 1 10.00 3538.82 +32768 32768 +Alignment Offset +Local Remote Local Remote +Send Recv Send Recv + 8 0 0 0 +Histogram of request/response times +UNIT_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 +TEN_USEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 +HUNDRED_USEC : 0: 34480: 111: 13: 12: 6: 9: 3: 4: 7 +UNIT_MSEC : 0: 60: 50: 51: 44: 44: 72: 119: 100: 101 +TEN_MSEC : 0: 105: 0: 0: 0: 0: 0: 0: 0: 0 +HUNDRED_MSEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 +UNIT_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 +TEN_SEC : 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 +>100_SECS: 0 +HIST_TOTAL: 35391 + The histogram you see above is basically a base-10 log histogram where we can see that most of the transaction times were on the order of one hundred to one-hundred, ninety-nine microseconds, but they were occasionally as long as ten to nineteen milliseconds + The configure option will cause code to be included to report interim results during a test run. The rate at which interim results are reported can then be controlled via the global option. Here is an example of output: + $ src/netperf -D 1.35 -H tardy.hpl.hp.com -f M +MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com (15.9.116.144) port 0 AF_INET : demo +Interim result: 5.41 MBytes/s over 1.35 seconds ending at 1308789765.848 +Interim result: 11.07 MBytes/s over 1.36 seconds ending at 1308789767.206 +Interim result: 16.00 MBytes/s over 1.36 seconds ending at 1308789768.566 +Interim result: 20.66 MBytes/s over 1.36 seconds ending at 1308789769.922 +Interim result: 22.74 MBytes/s over 1.36 seconds ending at 1308789771.285 +Interim result: 23.07 MBytes/s over 1.36 seconds ending at 1308789772.647 +Interim result: 23.77 MBytes/s over 1.37 seconds ending at 1308789774.016 +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. MBytes/sec + + 87380 16384 16384 10.06 17.81 + Notice how the units of the interim result track that requested by the option. Also notice that sometimes the interval will be longer than the value specified in the option. This is normal and stems from how demo mode is implemented not by relying on interval timers or frequent calls to get the current time, but by calculating how many units of work must be performed to take at least the desired interval. + Those familiar with this option in earlier versions of netperf will note the addition of the “ending at” text. This is the time as reported by a gettimeofday() call (or its emulation) with a NULL timezone pointer. This addition is intended to make it easier to insert interim results into an http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.htmlrrdtool Round-Robin Database (RRD). A likely bug-riddled example of doing so can be found in doc/examples/netperf_interim_to_rrd.sh. The time is reported out to milliseconds rather than microseconds because that is the most rrdtool understands as of the time of this writing. + As of this writing, a make install will not actually update the files /etc/services and/or /etc/inetd.conf or their platform-specific equivalents. It remains necessary to perform that bit of installation magic by hand. Patches to the makefile sources to effect an automagic editing of the necessary files to have netperf installed as a child of inetd would be most welcome. + Starting the netserver as a standalone daemon should be as easy as: + $ netserver +Starting netserver at port 12865 +Starting netserver at hostname 0.0.0.0 port 12865 and family 0 + Over time the specifics of the messages netserver prints to the screen may change but the gist will remain the same. + If the compilation of netperf or netserver happens to fail, feel free to contact netperf-feedback@netperf.org or join and ask in netperf-talk@netperf.org. However, it is quite important that you include the actual compilation errors and perhaps even the configure log in your email. Otherwise, it will be that much more difficult for someone to assist you. +
+
+ + Verifying Installation + Installing Netperf Bits + Installing Netperf +
+ Verifying Installation + Basically, once netperf is installed and netserver is configured as a child of inetd, or launched as a standalone daemon, simply typing: + netperf + should result in output similar to the following: + $ netperf +TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 2997.84 +
+
+ + The Design of Netperf + Global Command-line Options + Installing Netperf + Top + + The Design of Netperf + Design of Netperf Netperf is designed around a basic client-server model. There are two executables - netperf and netserver. Generally you will only execute the netperf program, with the netserver program being invoked by the remote system's inetd or having been previously started as its own standalone daemon. + When you execute netperf it will establish a “control connection” to the remote system. This connection will be used to pass test configuration information and results to and from the remote system. Regardless of the type of test to be run, the control connection will be a TCP connection using BSD sockets. The control connection can use either IPv4 or IPv6. + Once the control connection is up and the configuration information has been passed, a separate “data” connection will be opened for the measurement itself using the API's and protocols appropriate for the specified test. When the test is completed, the data connection will be torn-down and results from the netserver will be passed-back via the control connection and combined with netperf's result for display to the user. + Netperf places no traffic on the control connection while a test is in progress. Certain TCP options, such as SO_KEEPALIVE, if set as your systems' default, may put packets out on the control connection while a test is in progress. Generally speaking this will have no effect on the results. + + + CPU Utilization + CPU Utilization + + + + + + + CPU Utilization + The Design of Netperf + The Design of Netperf +
+ CPU Utilization + CPU Utilization CPU utilization is an important, and alas all-too infrequently reported component of networking performance. Unfortunately, it can be one of the most difficult metrics to measure accurately and portably. Netperf will do its level best to report accurate CPU utilization figures, but some combinations of processor, OS and configuration may make that difficult. + CPU utilization in netperf is reported as a value between 0 and 100% regardless of the number of CPUs involved. In addition to CPU utilization, netperf will report a metric called a service demand. The service demand is the normalization of CPU utilization and work performed. For a _STREAM test it is the microseconds of CPU time consumed to transfer on KB (K == 1024) of data. For a _RR test it is the microseconds of CPU time consumed processing a single transaction. For both CPU utilization and service demand, lower is better. + Service demand can be particularly useful when trying to gauge the effect of a performance change. It is essentially a measure of efficiency, with smaller values being more efficient and thus “better.” + Netperf is coded to be able to use one of several, generally platform-specific CPU utilization measurement mechanisms. Single letter codes will be included in the CPU portion of the test banner to indicate which mechanism was used on each of the local (netperf) and remote (netserver) system. + As of this writing those codes are: + + + U + + The CPU utilization measurement mechanism was unknown to netperf or netperf/netserver was not compiled to include CPU utilization measurements. The code for the null CPU utilization mechanism can be found in src/netcpu_none.c. + + + + I + + An HP-UX-specific CPU utilization mechanism whereby the kernel incremented a per-CPU counter by one for each trip through the idle loop. This mechanism was only available on specially-compiled HP-UX kernels prior to HP-UX 10 and is mentioned here only for the sake of historical completeness and perhaps as a suggestion to those who might be altering other operating systems. While rather simple, perhaps even simplistic, this mechanism was quite robust and was not affected by the concerns of statistical methods, or methods attempting to track time in each of user, kernel, interrupt and idle modes which require quite careful accounting. It can be thought-of as the in-kernel version of the looper L mechanism without the context switch overhead. This mechanism required calibration. + + + + P + + An HP-UX-specific CPU utilization mechanism whereby the kernel keeps-track of time (in the form of CPU cycles) spent in the kernel idle loop (HP-UX 10.0 to 11.31 inclusive), or where the kernel keeps track of time spent in idle, user, kernel and interrupt processing (HP-UX 11.23 and later). The former requires calibration, the latter does not. Values in either case are retrieved via one of the pstat(2) family of calls, hence the use of the letter P. The code for these mechanisms is found in src/netcpu_pstat.c and src/netcpu_pstatnew.c respectively. + + + + K + + A Solaris-specific CPU utilization mechanism whereby the kernel keeps track of ticks (eg HZ) spent in the idle loop. This method is statistical and is known to be inaccurate when the interrupt rate is above epsilon as time spent processing interrupts is not subtracted from idle. The value is retrieved via a kstat() call - hence the use of the letter K. Since this mechanism uses units of ticks (HZ) the calibration value should invariably match HZ. (Eg 100) The code for this mechanism is implemented in src/netcpu_kstat.c. + + + + M + + A Solaris-specific mechanism available on Solaris 10 and latter which uses the new microstate accounting mechanisms. There are two, alas, overlapping, mechanisms. The first tracks nanoseconds spent in user, kernel, and idle modes. The second mechanism tracks nanoseconds spent in interrupt. Since the mechanisms overlap, netperf goes through some hand-waving to try to “fix” the problem. Since the accuracy of the handwaving cannot be completely determined, one must presume that while better than the K mechanism, this mechanism too is not without issues. The values are retrieved via kstat() calls, but the letter code is set to M to distinguish this mechanism from the even less accurate K mechanism. The code for this mechanism is implemented in src/netcpu_kstat10.c. + + + + L + + A mechanism based on “looper”or “soaker” processes which sit in tight loops counting as fast as they possibly can. This mechanism starts a looper process for each known CPU on the system. The effect of processor hyperthreading on the mechanism is not yet known. This mechanism definitely requires calibration. The code for the “looper”mechanism can be found in src/netcpu_looper.c + + + + N + + A Microsoft Windows-specific mechanism, the code for which can be found in src/netcpu_ntperf.c. This mechanism too is based on what appears to be a form of micro-state accounting and requires no calibration. On laptops, or other systems which may dynamically alter the CPU frequency to minimize power consumption, it has been suggested that this mechanism may become slightly confused, in which case using BIOS/uEFI settings to disable the power saving would be indicated. + + + + S + + This mechanism uses /proc/stat on Linux to retrieve time (ticks) spent in idle mode. It is thought but not known to be reasonably accurate. The code for this mechanism can be found in src/netcpu_procstat.c. + + + + C + + A mechanism somewhat similar to S but using the sysctl() call on BSD-like Operating systems (*BSD and MacOS X). The code for this mechanism can be found in src/netcpu_sysctl.c. + + + + Others + + Other mechanisms included in netperf in the past have included using the times() and getrusage() calls. These calls are actually rather poorly suited to the task of measuring CPU overhead for networking as they tend to be process-specific and much network-related processing can happen outside the context of a process, in places where it is not a given it will be charged to the correct, or even a process. They are mentioned here as a warning to anyone seeing those mechanisms used in other networking benchmarks. These mechanisms are not available in netperf 2.4.0 and later. + + +
+ For many platforms, the configure script will chose the best available CPU utilization mechanism. However, some platforms have no particularly good mechanisms. On those platforms, it is probably best to use the “LOOPER” mechanism which is basically some number of processes (as many as there are processors) sitting in tight little loops counting as fast as they can. The rate at which the loopers count when the system is believed to be idle is compared with the rate when the system is running netperf and the ratio is used to compute CPU utilization. + In the past, netperf included some mechanisms that only reported CPU time charged to the calling process. Those mechanisms have been removed from netperf versions 2.4.0 and later because they are hopelessly inaccurate. Networking can and often results in CPU time being spent in places - such as interrupt contexts - that do not get charged to a or the correct process. + In fact, time spent in the processing of interrupts is a common issue for many CPU utilization mechanisms. In particular, the “PSTAT” mechanism was eventually known to have problems accounting for certain interrupt time prior to HP-UX 11.11 (11iv1). HP-UX 11iv2 and later are known/presumed to be good. The “KSTAT” mechanism is known to have problems on all versions of Solaris up to and including Solaris 10. Even the microstate accounting available via kstat in Solaris 10 has issues, though perhaps not as bad as those of prior versions. + The /proc/stat mechanism under Linux is in what the author would consider an “uncertain” category as it appears to be statistical, which may also have issues with time spent processing interrupts. + In summary, be sure to “sanity-check” the CPU utilization figures with other mechanisms. However, platform tools such as top, vmstat or mpstat are often based on the same mechanisms used by netperf. + + + CPU Utilization in a Virtual Guest + CPU Utilization in a Virtual Guest + + + +
+
+ + CPU Utilization in a Virtual Guest + CPU Utilization + CPU Utilization + + CPU Utilization in a Virtual Guest + The CPU utilization mechanisms used by netperf are “inline” in that they are run by the same netperf or netserver process as is running the test itself. This works just fine for “bare iron” tests but runs into a problem when using virtual machines. + The relationship between virtual guest and hypervisor can be thought of as being similar to that between a process and kernel in a bare iron system. As such, (m)any CPU utilization mechanisms used in the virtual guest are similar to “process-local” mechanisms in a bare iron situation. However, just as with bare iron and process-local mechanisms, much networking processing happens outside the context of the virtual guest. It takes place in the hypervisor, and is not visible to mechanisms running in the guest(s). For this reason, one should not really trust CPU utilization figures reported by netperf or netserver when running in a virtual guest. + If one is looking to measure the added overhead of a virtualization mechanism, rather than rely on CPU utilization, one can rely instead on netperf _RR tests - path-lengths and overheads can be a significant fraction of the latency, so increases in overhead should appear as decreases in transaction rate. Whatever you do, DO NOT rely on the throughput of a _STREAM test. Achieving link-rate can be done via a multitude of options that mask overhead rather than eliminate it. + + + + Global Command-line Options + Using Netperf to Measure Bulk Data Transfer + The Design of Netperf + Top + + Global Command-line Options + This section describes each of the global command-line options available in the netperf and netserver binaries. Essentially, it is an expanded version of the usage information displayed by netperf or netserver when invoked with the global command-line option. + + + Command-line Options Syntax + Command-line Options Syntax + + + + Global Options + Global Options + + + + + + + Command-line Options Syntax + Global Options + Global Command-line Options + Global Command-line Options + +
+ Command-line Options Syntax + Revision 1.8 of netperf introduced enough new functionality to overrun the English alphabet for mnemonic command-line option names, and the author was not and is not quite ready to switch to the contemporary style of command-line options. (Call him a Luddite if you wish :). + For this reason, the command-line options were split into two parts - the first are the global command-line options. They are options that affect nearly any and every test type of netperf. The second type are the test-specific command-line options. Both are entered on the same command line, but they must be separated from one another by a -- for correct parsing. Global command-line options come first, followed by the -- and then test-specific command-line options. If there are no test-specific options to be set, the -- may be omitted. If there are no global command-line options to be set, test-specific options must still be preceded by a --. For example: + netperf <global> -- <test-specific> + sets both global and test-specific options: + netperf <global> + sets just global options and: + netperf -- <test-specific> + sets just test-specific options. +
+
+ + Global Options + Command-line Options Syntax + Global Command-line Options + +
+ Global Options + -a, Global + + -a <sizespec> + + This option allows you to alter the alignment of the buffers used in the sending and receiving calls on the local system.. Changing the alignment of the buffers can force the system to use different copy schemes, which can have a measurable effect on performance. If the page size for the system were 4096 bytes, and you want to pass page-aligned buffers beginning on page boundaries, you could use -a 4096. By default the units are bytes, but suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. [Default: 8 bytes] + -A, Global + + + + -A <sizespec> + + This option is identical to the option with the difference being it affects alignments for the remote system. + -b, Global + + + + -b <size> + + This option is only present when netperf has been configure with –enable-intervals=yes prior to compilation. It sets the size of the burst of send calls in a _STREAM test. When used in conjunction with the option it can cause the rate at which data is sent to be “paced.” + -B, Global + + + + -B <string> + + This option will cause to be appended to the brief (see -P) output of netperf. + -c, Global + + + + -c [rate] + + This option will ask that CPU utilization and service demand be calculated for the local system. For those CPU utilization mechanisms requiring calibration, the options rate parameter may be specified to preclude running another calibration step, saving 40 seconds of time. For those CPU utilization mechanisms requiring no calibration, the optional rate parameter will be utterly and completely ignored. [Default: no CPU measurements] + -C, Global + + + + -C [rate] + + This option requests CPU utilization and service demand calculations for the remote system. It is otherwise identical to the option. + -d, Global + + + + -d + + Each instance of this option will increase the quantity of debugging output displayed during a test. If the debugging output level is set high enough, it may have a measurable effect on performance. Debugging information for the local system is printed to stdout. Debugging information for the remote system is sent by default to the file /tmp/netperf.debug. [Default: no debugging output] + -D, Global + + + + -D [interval,units] + + This option is only available when netperf is configured with –enable-demo=yes. When set, it will cause netperf to emit periodic reports of performance during the run. [interval,units] follow the semantics of an optionspec. If specified, interval gives the minimum interval in real seconds, it does not have to be whole seconds. The units value can be used for the first guess as to how many units of work (bytes or transactions) must be done to take at least interval seconds. If omitted, interval defaults to one second and units to values specific to each test type. + -f, Global + + + + -f G|M|K|g|m|k|x + + This option can be used to change the reporting units for _STREAM tests. Arguments of “G,” “M,” or “K” will set the units to 2^30, 2^20 or 2^10 bytes/s respectively (EG power of two GB, MB or KB). Arguments of “g,” “,m” or “k” will set the units to 10^9, 10^6 or 10^3 bits/s respectively. An argument of “x” requests the units be transactions per second and is only meaningful for a request-response test. [Default: “m” or 10^6 bits/s] + -F, Global + + + + -F <fillfile> + + This option specified the file from which send which buffers will be pre-filled . While the buffers will contain data from the specified file, the file is not fully transferred to the remote system as the receiving end of the test will not write the contents of what it receives to a file. This can be used to pre-fill the send buffers with data having different compressibility and so is useful when measuring performance over mechanisms which perform compression. + While previously required for a TCP_SENDFILE test, later versions of netperf removed that restriction, creating a temporary file as needed. While the author cannot recall exactly when that took place, it is known to be unnecessary in version 2.5.0 and later. + -h, Global + + + + -h + + This option causes netperf to display its “global” usage string and exit to the exclusion of all else. + -H, Global + + + + -H <optionspec> + + This option will set the name of the remote system and or the address family used for the control connection. For example: + -H linger,4 + will set the name of the remote system to “linger” and tells netperf to use IPv4 addressing only. + -H ,6 + will leave the name of the remote system at its default, and request that only IPv6 addresses be used for the control connection. + -H lag + will set the name of the remote system to “lag” and leave the address family to AF_UNSPEC which means selection of IPv4 vs IPv6 is left to the system's address resolution. + A value of “inet” can be used in place of “4” to request IPv4 only addressing. Similarly, a value of “inet6” can be used in place of “6” to request IPv6 only addressing. A value of “0” can be used to request either IPv4 or IPv6 addressing as name resolution dictates. + By default, the options set with the global option are inherited by the test for its data connection, unless a test-specific option is specified. + If a option follows either the or options, the family setting specified with the -H option will override the or options for the remote address family. If no address family is specified, settings from a previous or option will remain. In a nutshell, the last explicit global command-line option wins. + [Default: “localhost” for the remote name/IP address and “0” (eg AF_UNSPEC) for the remote address family.] + -I, Global + + + + -I <optionspec> + + This option enables the calculation of confidence intervals and sets the confidence and width parameters with the first half of the optionspec being either 99 or 95 for 99% or 95% confidence respectively. The second value of the optionspec specifies the width of the desired confidence interval. For example + -I 99,5 + asks netperf to be 99% confident that the measured mean values for throughput and CPU utilization are within +/- 2.5% of the “real” mean values. If the option is specified and the option is omitted, the confidence defaults to 99% and the width to 5% (giving +/- 2.5%) + If classic netperf test calculates that the desired confidence intervals have not been met, it emits a noticeable warning that cannot be suppressed with the or options: + netperf -H tardy.cup -i 3 -I 99,5 +TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.cup.hp.com (15.244.44.58) port 0 AF_INET : +/-2.5% &space;99% conf. +!!! WARNING +!!! Desired confidence was not achieved within the specified iterations. +!!! This implies that there was variability in the test environment that +!!! must be investigated before going further. +!!! Confidence intervals: Throughput : 6.8% +!!! Local CPU util : 0.0% +!!! Remote CPU util : 0.0% + +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.01 40.23 + In the example above we see that netperf did not meet the desired confidence intervals. Instead of being 99% confident it was within +/- 2.5% of the real mean value of throughput it is only confident it was within +/-3.4%. In this example, increasing the option (described below) and/or increasing the iteration length with the option might resolve the situation. + In an explicit “omni” test, failure to meet the confidence intervals will not result in netperf emitting a warning. To verify the hitting, or not, of the confidence intervals one will need to include them as part of an Omni Output Selectionoutput selection in the test-specific , or output selection options. The warning about not hitting the confidence intervals will remain in a “migrated” classic netperf test. + -i, Global + + + + -i <sizespec> + + This option enables the calculation of confidence intervals and sets the minimum and maximum number of iterations to run in attempting to achieve the desired confidence interval. The first value sets the maximum number of iterations to run, the second, the minimum. The maximum number of iterations is silently capped at 30 and the minimum is silently floored at 3. Netperf repeats the measurement the minimum number of iterations and continues until it reaches either the desired confidence interval, or the maximum number of iterations, whichever comes first. A classic or migrated netperf test will not display the actual number of iterations run. An The Omni Testsomni test will emit the number of iterations run if the CONFIDENCE_ITERATION output selector is included in the Omni Output Selectionoutput selection. + If the option is specified and the option omitted the maximum number of iterations is set to 10 and the minimum to three. + Output of a warning upon not hitting the desired confidence intervals follows the description provided for the option. + The total test time will be somewhere between the minimum and maximum number of iterations multiplied by the test length supplied by the option. + -j, Global + + + + -j + + This option instructs netperf to keep additional timing statistics when explicitly running an The Omni Testsomni test. These can be output when the test-specific , or Omni Output Selectorsoutput selectors include one or more of: + + + + MIN_LATENCY + + + MAX_LATENCY + + + P50_LATENCY + + + P90_LATENCY + + + P99_LATENCY + + + MEAN_LATENCY + + + STDDEV_LATENCY + + + These statistics will be based on an expanded (100 buckets per row rather than 10) histogram of times rather than a terribly long list of individual times. As such, there will be some slight error thanks to the bucketing. However, the reduction in storage and processing overheads is well worth it. When running a request/response test, one might get some idea of the error by comparing the Omni Output SelectorsMEAN_LATENCY calculated from the histogram with the RT_LATENCY calculated from the number of request/response transactions and the test run time. + In the case of a request/response test the latencies will be transaction latencies. In the case of a receive-only test they will be time spent in the receive call. In the case of a send-only test they will be time spent in the send call. The units will be microseconds. Added in netperf 2.5.0. + -l, Global + + + + -l testlen + + This option controls the length of any one iteration of the requested test. A positive value for testlen will run each iteration of the test for at least testlen seconds. A negative value for testlen will run each iteration for the absolute value of testlen transactions for a _RR test or bytes for a _STREAM test. Certain tests, notably those using UDP can only be timed, they cannot be limited by transaction or byte count. This limitation may be relaxed in an The Omni Testsomni test. + In some situations, individual iterations of a test may run for longer for the number of seconds specified by the option. In particular, this may occur for those tests where the socket buffer size(s) are significantly longer than the bandwidthXdelay product of the link(s) over which the data connection passes, or those tests where there may be non-trivial numbers of retransmissions. + If confidence intervals are enabled via either or the total length of the netperf test will be somewhere between the minimum and maximum iteration count multiplied by testlen. + -L, Global + + + + -L <optionspec> + + This option is identical to the option with the difference being it sets the _local_ hostname/IP and/or address family information. This option is generally unnecessary, but can be useful when you wish to make sure that the netperf control and data connections go via different paths. It can also come-in handy if one is trying to run netperf through those evil, end-to-end breaking things known as firewalls. + [Default: 0.0.0.0 (eg INADDR_ANY) for IPv4 and ::0 for IPv6 for the local name. AF_UNSPEC for the local address family.] + -n, Global + + + + -n numcpus + + This option tells netperf how many CPUs it should ass-u-me are active on the system running netperf. In particular, this is used for the CPU UtilizationCPU utilization and service demand calculations. On certain systems, netperf is able to determine the number of CPU's automagically. This option will override any number netperf might be able to determine on its own. + Note that this option does _not_ set the number of CPUs on the system running netserver. When netperf/netserver cannot automagically determine the number of CPUs that can only be set for netserver via a netserver command-line option. + As it is almost universally possible for netperf/netserver to determine the number of CPUs on the system automagically, 99 times out of 10 this option should not be necessary and may be removed in a future release of netperf. + -N, Global + + + + -N + + This option tells netperf to forgo establishing a control connection. This makes it is possible to run some limited netperf tests without a corresponding netserver on the remote system. + With this option set, the test to be run is to get all the addressing information it needs to establish its data connection from the command line or internal defaults. If not otherwise specified by test-specific command line options, the data connection for a “STREAM” or “SENDFILE” test will be to the “discard” port, an “RR” test will be to the “echo” port, and a “MEARTS” test will be to the chargen port. + The response size of an “RR” test will be silently set to be the same as the request size. Otherwise the test would hang if the response size was larger than the request size, or would report an incorrect, inflated transaction rate if the response size was less than the request size. + Since there is no control connection when this option is specified, it is not possible to set “remote” properties such as socket buffer size and the like via the netperf command line. Nor is it possible to retrieve such interesting remote information as CPU utilization. These items will be displayed as values which should make it immediately obvious that was the case. + The only way to change remote characteristics such as socket buffer size or to obtain information such as CPU utilization is to employ platform-specific methods on the remote system. Frankly, if one has access to the remote system to employ those methods one aught to be able to run a netserver there. However, that ability may not be present in certain “support” situations, hence the addition of this option. + Added in netperf 2.4.3. + -o, Global + + + + -o <sizespec> + + The value(s) passed-in with this option will be used as an offset added to the alignment specified with the option. For example: + -o 3 -a 4096 + will cause the buffers passed to the local (netperf) send and receive calls to begin three bytes past an address aligned to 4096 bytes. [Default: 0 bytes] + -O, Global + + + + -O <sizespec> + + This option behaves just as the option but on the remote (netserver) system and in conjunction with the option. [Default: 0 bytes] + -p, Global + + + + -p <optionspec> + + The first value of the optionspec passed-in with this option tells netperf the port number at which it should expect the remote netserver to be listening for control connections. The second value of the optionspec will request netperf to bind to that local port number before establishing the control connection. For example + -p 12345 + tells netperf that the remote netserver is listening on port 12345 and leaves selection of the local port number for the control connection up to the local TCP/IP stack whereas + -p ,32109 + leaves the remote netserver port at the default value of 12865 and causes netperf to bind to the local port number 32109 before connecting to the remote netserver. + In general, setting the local port number is only necessary when one is looking to run netperf through those evil, end-to-end breaking things known as firewalls. + -P, Global + + + + -P 0|1 + + A value of “1” for the option will enable display of the test banner. A value of “0” will disable display of the test banner. One might want to disable display of the test banner when running the same basic test type (eg TCP_STREAM) multiple times in succession where the test banners would then simply be redundant and unnecessarily clutter the output. [Default: 1 - display test banners] + -s, Global + + + + -s <seconds> + + This option will cause netperf to sleep <seconds> before actually transferring data over the data connection. This may be useful in situations where one wishes to start a great many netperf instances and do not want the earlier ones affecting the ability of the later ones to get established. + Added somewhere between versions 2.4.3 and 2.5.0. + -S, Global + + + + -S + + This option will cause an attempt to be made to set SO_KEEPALIVE on the data socket of a test using the BSD sockets interface. The attempt will be made on the netperf side of all tests, and will be made on the netserver side of an The Omni Testsomni or Migrated Testsmigrated test. No indication of failure is given unless debug output is enabled with the global option. + Added in version 2.5.0. + -t, Global + + + + -t testname + + This option is used to tell netperf which test you wish to run. As of this writing, valid values for testname include: + + + + TCP_STREAM, TCP_MAERTS, TCP_SENDFILE, TCP_RR, TCP_CRR, TCP_CC + + + UDP_STREAM, UDP_RR + + + XTI_TCP_STREAM, XTI_TCP_RR, XTI_TCP_CRR, XTI_TCP_CC + + + XTI_UDP_STREAM, XTI_UDP_RR + + + SCTP_STREAM, SCTP_RR + + + DLCO_STREAM, DLCO_RR, DLCL_STREAM, DLCL_RR + + + Other Netperf TestsLOC_CPU, Other Netperf TestsREM_CPU + + + The Omni TestsOMNI + + + Not all tests are always compiled into netperf. In particular, the “XTI,” “SCTP,” “UNIXDOMAIN,” and “DL*” tests are only included in netperf when configured with . + Netperf only runs one type of test no matter how many options may be present on the command-line. The last global command-line option will determine the test to be run. [Default: TCP_STREAM] + -T, Global + + + + -T <optionspec> + + This option controls the CPU, and probably by extension memory, affinity of netperf and/or netserver. + netperf -T 1 + will bind both netperf and netserver to “CPU 1” on their respective systems. + netperf -T 1, + will bind just netperf to “CPU 1” and will leave netserver unbound. + netperf -T ,2 + will leave netperf unbound and will bind netserver to “CPU 2.” + netperf -T 1,2 + will bind netperf to “CPU 1” and netserver to “CPU 2.” + This can be particularly useful when investigating performance issues involving where processes run relative to where NIC interrupts are processed or where NICs allocate their DMA buffers. + -v, Global + + + + -v verbosity + + This option controls how verbose netperf will be in its output, and is often used in conjunction with the option. If the verbosity is set to a value of “0” then only the test's SFM (Single Figure of Merit) is displayed. If local CPU UtilizationCPU utilization is requested via the option then the SFM is the local service demand. Othersise, if remote CPU utilization is requested via the option then the SFM is the remote service demand. If neither local nor remote CPU utilization are requested the SFM will be the measured throughput or transaction rate as implied by the test specified with the option. + If the verbosity level is set to “1” then the “normal” netperf result output for each test is displayed. + If the verbosity level is set to “2” then “extra” information will be displayed. This may include, but is not limited to the number of send or recv calls made and the average number of bytes per send or recv call, or a histogram of the time spent in each send() call or for each transaction if netperf was configured with . [Default: 1 - normal verbosity] + In an The Omni Testsomni test the verbosity setting is largely ignored, save for when asking for the time histogram to be displayed. In version 2.5.0 there is no Omni Output Selectorsoutput selector for the histogram and so it remains displayed only when the verbosity level is set to 2. + -V, Global + + + + -V + + This option displays the netperf version and then exits. + Added in netperf 2.4.4. + -w, Global + + + + -w time + + If netperf was configured with then this value will set the inter-burst time to time milliseconds, and the option will set the number of sends per burst. The actual inter-burst time may vary depending on the system's timer resolution. + -W, Global + + + + -W <sizespec> + + This option controls the number of buffers in the send (first or only value) and or receive (second or only value) buffer rings. Unlike some benchmarks, netperf does not continuously send or receive from a single buffer. Instead it rotates through a ring of buffers. [Default: One more than the size of the send or receive socket buffer sizes ( and/or options) divided by the send or receive buffer size respectively] + -4, Global + + + + -4 + + Specifying this option will set both the local and remote address families to AF_INET - that is use only IPv4 addresses on the control connection. This can be overridden by a subsequent , or option. Basically, the last option explicitly specifying an address family wins. Unless overridden by a test-specific option, this will be inherited for the data connection as well. + -6, Global + + + + -6 + + Specifying this option will set both local and and remote address families to AF_INET6 - that is use only IPv6 addresses on the control connection. This can be overridden by a subsequent , or option. Basically, the last address family explicitly specified wins. Unless overridden by a test-specific option, this will be inherited for the data connection as well. + + +
+
+
+ + Using Netperf to Measure Bulk Data Transfer + Using Netperf to Measure Request/Response + Global Command-line Options + Top + + Using Netperf to Measure Bulk Data Transfer + The most commonly measured aspect of networked system performance is that of bulk or unidirectional transfer performance. Everyone wants to know how many bits or bytes per second they can push across the network. The classic netperf convention for a bulk data transfer test name is to tack a “_STREAM” suffix to a test name. + + + Issues in Bulk Transfer + Issues in Bulk Transfer + + + + Options common to TCP UDP and SCTP tests + Options common to TCP UDP and SCTP tests + + + + + + + Issues in Bulk Transfer + Options common to TCP UDP and SCTP tests + Using Netperf to Measure Bulk Data Transfer + Using Netperf to Measure Bulk Data Transfer + +
+ Issues in Bulk Transfer + There are any number of things which can affect the performance of a bulk transfer test. + Certainly, absent compression, bulk-transfer tests can be limited by the speed of the slowest link in the path from the source to the destination. If testing over a gigabit link, you will not see more than a gigabit :) Such situations can be described as being network-limited or NIC-limited. + CPU utilization can also affect the results of a bulk-transfer test. If the networking stack requires a certain number of instructions or CPU cycles per KB of data transferred, and the CPU is limited in the number of instructions or cycles it can provide, then the transfer can be described as being CPU-bound. + A bulk-transfer test can be CPU bound even when netperf reports less than 100% CPU utilization. This can happen on an MP system where one or more of the CPUs saturate at 100% but other CPU's remain idle. Typically, a single flow of data, such as that from a single instance of a netperf _STREAM test cannot make use of much more than the power of one CPU. Exceptions to this generally occur when netperf and/or netserver run on CPU(s) other than the CPU(s) taking interrupts from the NIC(s). In that case, one might see as much as two CPUs' worth of processing being used to service the flow of data. + Distance and the speed-of-light can affect performance for a bulk-transfer; often this can be mitigated by using larger windows. One common limit to the performance of a transport using window-based flow-control is: + Throughput <= WindowSize/RoundTripTime + As the sender can only have a window's-worth of data outstanding on the network at any one time, and the soonest the sender can receive a window update from the receiver is one RoundTripTime (RTT). TCP and SCTP are examples of such protocols. + Packet losses and their effects can be particularly bad for performance. This is especially true if the packet losses result in retransmission timeouts for the protocol(s) involved. By the time a retransmission timeout has happened, the flow or connection has sat idle for a considerable length of time. + On many platforms, some variant on the netstat command can be used to retrieve statistics about packet loss and retransmission. For example: + netstat -p tcp + will retrieve TCP statistics on the HP-UX Operating System. On other platforms, it may not be possible to retrieve statistics for a specific protocol and something like: + netstat -s + would be used instead. + Many times, such network statistics are keep since the time the stack started, and we are only really interested in statistics from when netperf was running. In such situations something along the lines of: + netstat -p tcp > before +netperf -t TCP_mumble... +netstat -p tcp > after + is indicated. The ftp://ftp.cup.hp.com/dist/networking/tools/beforeafter utility can be used to subtract the statistics in before from the statistics in after: + beforeafter before after > delta + and then one can look at the statistics in delta. Beforeafter is distributed in source form so one can compile it on the platform(s) of interest. + If running a version 2.5.0 or later “omni” test under Linux one can include either or both of: + + + + LOCAL_TRANSPORT_RETRANS + + + REMOTE_TRANSPORT_RETRANS + + + in the values provided via a test-specific , , or output selction option and netperf will report the retransmissions experienced on the data connection, as reported via a getsockopt(TCP_INFO) call. If confidence intervals have been requested via the global or options, the reported value(s) will be for the last iteration. If the test is over a protocol other than TCP, or on a platform other than Linux, the results are undefined. + While it was written with HP-UX's netstat in mind, the ftp://ftp.cup.hp.com/dist/networking/briefs/annotated_netstat.txtannotated netstat writeup may be helpful with other platforms as well. +
+
+ + Options common to TCP UDP and SCTP tests + Issues in Bulk Transfer + Using Netperf to Measure Bulk Data Transfer + +
+ Options common to TCP UDP and SCTP tests + Many “test-specific” options are actually common across the different tests. For those tests involving TCP, UDP and SCTP, whether using the BSD Sockets or the XTI interface those common options include: + -h, Test-specific + + -h + + Display the test-suite-specific usage string and exit. For a TCP_ or UDP_ test this will be the usage string from the source file nettest_bsd.c. For an XTI_ test, this will be the usage string from the source file nettest_xti.c. For an SCTP test, this will be the usage string from the source file nettest_sctp.c. + + + + -H <optionspec> + + Normally, the remote hostname|IP and address family information is inherited from the settings for the control connection (eg global command-line , and/or options). The test-specific will override those settings for the data (aka test) connection only. Settings for the control connection are left unchanged. + -L, Test-specific + + + + -L <optionspec> + + The test-specific option is identical to the test-specific option except it affects the local hostname|IP and address family information. As with its global command-line counterpart, this is generally only useful when measuring though those evil, end-to-end breaking things called firewalls. + -m, Test-specific + + + + -m bytes + + Set the size of the buffer passed-in to the “send” calls of a _STREAM test. Note that this may have only an indirect effect on the size of the packets sent over the network, and certain Layer 4 protocols do _not_ preserve or enforce message boundaries, so setting for the send size does not necessarily mean the receiver will receive that many bytes at any one time. By default the units are bytes, but suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -m 32K + will set the size to 32KB or 32768 bytes. [Default: the local send socket buffer size for the connection - either the system's default or the value set via the option.] + -M, Test-specific + + + + -M bytes + + Set the size of the buffer passed-in to the “recv” calls of a _STREAM test. This will be an upper bound on the number of bytes received per receive call. By default the units are bytes, but suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -M 32K + will set the size to 32KB or 32768 bytes. [Default: the remote receive socket buffer size for the data connection - either the system's default or the value set via the option.] + -P, Test-specific + + + + -P <optionspec> + + Set the local and/or remote port numbers for the data connection. + -s, Test-specific + + + + -s <sizespec> + + This option sets the local (netperf) send and receive socket buffer sizes for the data connection to the value(s) specified. Often, this will affect the advertised and/or effective TCP or other window, but on some platforms it may not. By default the units are bytes, but suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -s 128K + Will request the local send and receive socket buffer sizes to be 128KB or 131072 bytes. + While the historic expectation is that setting the socket buffer size has a direct effect on say the TCP window, today that may not hold true for all stacks. Further, while the historic expectation is that the value specified in a setsockopt() call will be the value returned via a getsockopt() call, at least one stack is known to deliberately ignore history. When running under Windows a value of 0 may be used which will be an indication to the stack the user wants to enable a form of copy avoidance. [Default: -1 - use the system's default socket buffer sizes] + -S Test-specific + + + + -S <sizespec> + + This option sets the remote (netserver) send and/or receive socket buffer sizes for the data connection to the value(s) specified. Often, this will affect the advertised and/or effective TCP or other window, but on some platforms it may not. By default the units are bytes, but suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -s 128K + Will request the remote send and receive socket buffer sizes to be 128KB or 131072 bytes. + While the historic expectation is that setting the socket buffer size has a direct effect on say the TCP window, today that may not hold true for all stacks. Further, while the historic expectation is that the value specified in a setsockopt() call will be the value returned via a getsockopt() call, at least one stack is known to deliberately ignore history. When running under Windows a value of 0 may be used which will be an indication to the stack the user wants to enable a form of copy avoidance. [Default: -1 - use the system's default socket buffer sizes] + -4, Test-specific + + + + -4 + + Set the local and remote address family for the data connection to AF_INET - ie use IPv4 addressing only. Just as with their global command-line counterparts the last of the , , or option wins for their respective address families. + -6, Test-specific + + + + -6 + + This option is identical to its cousin, but requests IPv6 addresses for the local and remote ends of the data connection. + + +
+ + + TCP_STREAM + TCP_STREAM + + + + TCP_MAERTS + TCP_MAERTS + + + + TCP_SENDFILE + TCP_SENDFILE + + + + UDP_STREAM + UDP_STREAM + + + + XTI_TCP_STREAM + XTI_TCP_STREAM + + + + XTI_UDP_STREAM + XTI_UDP_STREAM + + + + SCTP_STREAM + SCTP_STREAM + + + + DLCO_STREAM + DLCO_STREAM + + + + DLCL_STREAM + DLCL_STREAM + + + + STREAM_STREAM + STREAM_STREAM + + + + DG_STREAM + DG_STREAM + + + +
+
+ + TCP_STREAM + TCP_MAERTS + Options common to TCP UDP and SCTP tests + Options common to TCP UDP and SCTP tests + + TCP_STREAM + The TCP_STREAM test is the default test in netperf. It is quite simple, transferring some quantity of data from the system running netperf to the system running netserver. While time spent establishing the connection is not included in the throughput calculation, time spent flushing the last of the data to the remote at the end of the test is. This is how netperf knows that all the data it sent was received by the remote. In addition to the Options common to TCP UDP and SCTP testsoptions common to STREAM tests, the following test-specific options can be included to possibly alter the behavior of the test: + + + -C + + This option will set TCP_CORK mode on the data connection on those systems where TCP_CORK is defined (typically Linux). A full description of TCP_CORK is beyond the scope of this manual, but in a nutshell it forces sub-MSS sends to be buffered so every segment sent is Maximum Segment Size (MSS) unless the application performs an explicit flush operation or the connection is closed. At present netperf does not perform any explicit flush operations. Setting TCP_CORK may improve the bitrate of tests where the “send size” ( option) is smaller than the MSS. It should also improve (make smaller) the service demand. + The Linux tcp(7) manpage states that TCP_CORK cannot be used in conjunction with TCP_NODELAY (set via the option), however netperf does not validate command-line options to enforce that. + + + + -D + + This option will set TCP_NODELAY on the data connection on those systems where TCP_NODELAY is defined. This disables something known as the Nagle Algorithm, which is intended to make the segments TCP sends as large as reasonably possible. Setting TCP_NODELAY for a TCP_STREAM test should either have no effect when the send size ( option) is larger than the MSS or will decrease reported bitrate and increase service demand when the send size is smaller than the MSS. This stems from TCP_NODELAY causing each sub-MSS send to be its own TCP segment rather than being aggregated with other small sends. This means more trips up and down the protocol stack per KB of data transferred, which means greater CPU utilization. + If setting TCP_NODELAY with affects throughput and/or service demand for tests where the send size () is larger than the MSS it suggests the TCP/IP stack's implementation of the Nagle Algorithm _may_ be broken, perhaps interpreting the Nagle Algorithm on a segment by segment basis rather than the proper user send by user send basis. However, a better test of this can be achieved with the TCP_RR test. + + +
+ Here is an example of a basic TCP_STREAM test, in this case from a Debian Linux (2.6 kernel) system to an HP-UX 11iv2 (HP-UX 11.23) system: + $ netperf -H lag +TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 32768 16384 16384 10.00 80.42 + We see that the default receive socket buffer size for the receiver (lag - HP-UX 11.23) is 32768 bytes, and the default socket send buffer size for the sender (Debian 2.6 kernel) is 16384 bytes, however Linux does “auto tuning” of socket buffer and TCP window sizes, which means the send socket buffer size may be different at the end of the test than it was at the beginning. This is addressed in the The Omni Testsomni tests added in version 2.5.0 and Omni Output Selectionoutput selection. Throughput is expressed as 10^6 (aka Mega) bits per second, and the test ran for 10 seconds. IPv4 addresses (AF_INET) were used. +
+
+ + TCP_MAERTS + TCP_SENDFILE + TCP_STREAM + Options common to TCP UDP and SCTP tests + + + TCP_MAERTS + A TCP_MAERTS (MAERTS is STREAM backwards) test is “just like” a TCP_STREAM test except the data flows from the netserver to the netperf. The global command-line option is ignored for this test type. The test-specific command-line option is ignored for this test type. + Here is an example of a TCP_MAERTS test between the same two systems as in the example for the TCP_STREAM test. This time we request larger socket buffers with and options: + $ netperf -H lag -t TCP_MAERTS -- -s 128K -S 128K +TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + +221184 131072 131072 10.03 81.14 + Where we see that Linux, unlike HP-UX, may not return the same value in a getsockopt() as was requested in the prior setsockopt(). + This test is included more for benchmarking convenience than anything else. + + + + TCP_SENDFILE + UDP_STREAM + TCP_MAERTS + Options common to TCP UDP and SCTP tests + + + TCP_SENDFILE + The TCP_SENDFILE test is “just like” a TCP_STREAM test except netperf the platform's sendfile() call instead of calling send(). Often this results in a zero-copy operation where data is sent directly from the filesystem buffer cache. This _should_ result in lower CPU utilization and possibly higher throughput. If it does not, then you may want to contact your vendor(s) because they have a problem on their hands. + Zero-copy mechanisms may also alter the characteristics (size and number of buffers per) of packets passed to the NIC. In many stacks, when a copy is performed, the stack can “reserve” space at the beginning of the destination buffer for things like TCP, IP and Link headers. This then has the packet contained in a single buffer which can be easier to DMA to the NIC. When no copy is performed, there is no opportunity to reserve space for headers and so a packet will be contained in two or more buffers. + As of some time before version 2.5.0, the Global Optionsglobal option is no longer required for this test. If it is not specified, netperf will create a temporary file, which it will delete at the end of the test. If the option is specified it must reference a file of at least the size of the send ring (See Global Optionsthe global option.) multiplied by the send size (See Options common to TCP UDP and SCTP teststhe test-specific option.). All other TCP-specific options remain available and optional. + In this first example: + $ netperf -H lag -F ../src/netperf -t TCP_SENDFILE -- -s 128K -S 128K +TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET +alloc_sendfile_buf_ring: specified file too small. +file must be larger than send_width * send_size + we see what happens when the file is too small. Here: + $ netperf -H lag -F /boot/vmlinuz-2.6.8-1-686 -t TCP_SENDFILE -- -s 128K -S 128K +TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to lag.hpl.hp.com (15.4.89.214) port 0 AF_INET +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + +131072 221184 221184 10.02 81.83 + we resolve that issue by selecting a larger file. + + + + UDP_STREAM + XTI_TCP_STREAM + TCP_SENDFILE + Options common to TCP UDP and SCTP tests + + UDP_STREAM + A UDP_STREAM test is similar to a TCP_STREAM test except UDP is used as the transport rather than TCP. + Limiting BandwidthA UDP_STREAM test has no end-to-end flow control - UDP provides none and neither does netperf. However, if you wish, you can configure netperf with --enable-intervals=yes to enable the global command-line and options to pace bursts of traffic onto the network. + This has a number of implications. + The biggest of these implications is the data which is sent might not be received by the remote. For this reason, the output of a UDP_STREAM test shows both the sending and receiving throughput. On some platforms, it may be possible for the sending throughput to be reported as a value greater than the maximum rate of the link. This is common when the CPU(s) are faster than the network and there is no intra-stack flow-control. + Here is an example of a UDP_STREAM test between two systems connected by a 10 Gigabit Ethernet link: + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 32768 +UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET +Socket Message Elapsed Messages +Size Size Time Okay Errors Throughput +bytes bytes secs # # 10^6bits/sec + +124928 32768 10.00 105672 0 2770.20 +135168 10.00 104844 2748.50 + + The first line of numbers are statistics from the sending (netperf) side. The second line of numbers are from the receiving (netserver) side. In this case, 105672 - 104844 or 828 messages did not make it all the way to the remote netserver process. + If the value of the option is larger than the local send socket buffer size ( option) netperf will likely abort with an error message about how the send call failed: + netperf -t UDP_STREAM -H 192.168.2.125 +UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET +udp_send: data send error: Message too long + If the value of the option is larger than the remote socket receive buffer, the reported receive throughput will likely be zero as the remote UDP will discard the messages as being too large to fit into the socket buffer. + $ netperf -t UDP_STREAM -H 192.168.2.125 -- -m 65000 -S 32768 +UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET +Socket Message Elapsed Messages +Size Size Time Okay Errors Throughput +bytes bytes secs # # 10^6bits/sec + +124928 65000 10.00 53595 0 2786.99 + 65536 10.00 0 0.00 + The example above was between a pair of systems running a “Linux” kernel. Notice that the remote Linux system returned a value larger than that passed-in to the option. In fact, this value was larger than the message size set with the option. That the remote socket buffer size is reported as 65536 bytes would suggest to any sane person that a message of 65000 bytes would fit, but the socket isn't _really_ 65536 bytes, even though Linux is telling us so. Go figure. + + + + XTI_TCP_STREAM + XTI_UDP_STREAM + UDP_STREAM + Options common to TCP UDP and SCTP tests + + XTI_TCP_STREAM + An XTI_TCP_STREAM test is simply a TCP_STREAM test using the XTI rather than BSD Sockets interface. The test-specific option can be used to specify the name of the local and/or remote XTI device files, which is required by the t_open() call made by netperf XTI tests. + The XTI_TCP_STREAM test is only present if netperf was configured with --enable-xti=yes. The remote netserver must have also been configured with --enable-xti=yes. + + + + XTI_UDP_STREAM + SCTP_STREAM + XTI_TCP_STREAM + Options common to TCP UDP and SCTP tests + + XTI_UDP_STREAM + An XTI_UDP_STREAM test is simply a UDP_STREAM test using the XTI rather than BSD Sockets Interface. The test-specific option can be used to specify the name of the local and/or remote XTI device files, which is required by the t_open() call made by netperf XTI tests. + The XTI_UDP_STREAM test is only present if netperf was configured with --enable-xti=yes. The remote netserver must have also been configured with --enable-xti=yes. + + + + SCTP_STREAM + DLCO_STREAM + XTI_UDP_STREAM + Options common to TCP UDP and SCTP tests + + SCTP_STREAM + An SCTP_STREAM test is essentially a TCP_STREAM test using the SCTP rather than TCP. The option will set SCTP_NODELAY, which is much like the TCP_NODELAY option for TCP. The option is not applicable to an SCTP test as there is no corresponding SCTP_CORK option. The author is still figuring-out what the test-specific option does :) + The SCTP_STREAM test is only present if netperf was configured with --enable-sctp=yes. The remote netserver must have also been configured with --enable-sctp=yes. + + + + DLCO_STREAM + DLCL_STREAM + SCTP_STREAM + Options common to TCP UDP and SCTP tests + + DLCO_STREAM + A DLPI Connection Oriented Stream (DLCO_STREAM) test is very similar in concept to a TCP_STREAM test. Both use reliable, connection-oriented protocols. The DLPI test differs from the TCP test in that its protocol operates only at the link-level and does not include TCP-style segmentation and reassembly. This last difference means that the value passed-in with the option must be less than the interface MTU. Otherwise, the and options are just like their TCP/UDP/SCTP counterparts. + Other DLPI-specific options include: + + + -D <devspec> + + This option is used to provide the fully-qualified names for the local and/or remote DLPI device files. The syntax is otherwise identical to that of a sizespec. + + + + -p <ppaspec> + + This option is used to specify the local and/or remote DLPI PPA(s). The PPA is used to identify the interface over which traffic is to be sent/received. The syntax of a ppaspec is otherwise the same as a sizespec. + + + + -s sap + + This option specifies the 802.2 SAP for the test. A SAP is somewhat like either the port field of a TCP or UDP header or the protocol field of an IP header. The specified SAP should not conflict with any other active SAPs on the specified PPA's ( option). + + + + -w <sizespec> + + This option specifies the local send and receive window sizes in units of frames on those platforms which support setting such things. + + + + -W <sizespec> + + This option specifies the remote send and receive window sizes in units of frames on those platforms which support setting such things. + + +
+ The DLCO_STREAM test is only present if netperf was configured with --enable-dlpi=yes. The remote netserver must have also been configured with --enable-dlpi=yes. +
+
+ + DLCL_STREAM + STREAM_STREAM + DLCO_STREAM + Options common to TCP UDP and SCTP tests + + DLCL_STREAM + A DLPI ConnectionLess Stream (DLCL_STREAM) test is analogous to a UDP_STREAM test in that both make use of unreliable/best-effort, connection-less transports. The DLCL_STREAM test differs from the UDP_STREAM test in that the message size ( option) must always be less than the link MTU as there is no IP-like fragmentation and reassembly available and netperf does not presume to provide one. + The test-specific command-line options for a DLCL_STREAM test are the same as those for a DLCO_STREAM test. + The DLCL_STREAM test is only present if netperf was configured with --enable-dlpi=yes. The remote netserver must have also been configured with --enable-dlpi=yes. + + + + STREAM_STREAM + DG_STREAM + DLCL_STREAM + Options common to TCP UDP and SCTP tests + + + STREAM_STREAM + A Unix Domain Stream Socket Stream test (STREAM_STREAM) is similar in concept to a TCP_STREAM test, but using Unix Domain sockets. It is, naturally, limited to intra-machine traffic. A STREAM_STREAM test shares the , , and options of the other _STREAM tests. In a STREAM_STREAM test the option sets the directory in which the pipes will be created rather than setting a port number. The default is to create the pipes in the system default for the tempnam() call. + The STREAM_STREAM test is only present if netperf was configured with --enable-unixdomain=yes. The remote netserver must have also been configured with --enable-unixdomain=yes. + + + + DG_STREAM + STREAM_STREAM + Options common to TCP UDP and SCTP tests + + + DG_STREAM + A Unix Domain Datagram Socket Stream test (SG_STREAM) is very much like a TCP_STREAM test except that message boundaries are preserved. In this way, it may also be considered similar to certain flavors of SCTP test which can also preserve message boundaries. + All the options of a STREAM_STREAM test are applicable to a DG_STREAM test. + The DG_STREAM test is only present if netperf was configured with --enable-unixdomain=yes. The remote netserver must have also been configured with --enable-unixdomain=yes. + + + + Using Netperf to Measure Request/Response + Using Netperf to Measure Aggregate Performance + Using Netperf to Measure Bulk Data Transfer + Top + + Using Netperf to Measure Request/Response + Request/response performance is often overlooked, yet it is just as important as bulk-transfer performance. While things like larger socket buffers and TCP windows, and stateless offloads like TSO and LRO can cover a multitude of latency and even path-length sins, those sins cannot easily hide from a request/response test. The convention for a request/response test is to have a _RR suffix. There are however a few “request/response” tests that have other suffixes. + A request/response test, particularly synchronous, one transaction at a time test such as those found by default in netperf, is particularly sensitive to the path-length of the networking stack. An _RR test can also uncover those platforms where the NICs are strapped by default with overbearing interrupt avoidance settings in an attempt to increase the bulk-transfer performance (or rather, decrease the CPU utilization of a bulk-transfer test). This sensitivity is most acute for small request and response sizes, such as the single-byte default for a netperf _RR test. + While a bulk-transfer test reports its results in units of bits or bytes transferred per second, by default a mumble_RR test reports transactions per second where a transaction is defined as the completed exchange of a request and a response. One can invert the transaction rate to arrive at the average round-trip latency. If one is confident about the symmetry of the connection, the average one-way latency can be taken as one-half the average round-trip latency. As of version 2.5.0 (actually slightly before) netperf still does not do the latter, but will do the former if one sets the verbosity to 2 for a classic netperf test, or includes the appropriate Omni Output Selectorsoutput selector in an The Omni Testsomni test. It will also allow the user to switch the throughput units from transactions per second to bits or bytes per second with the global option. + + + Issues in Request/Response + Issues in Request/Response + + + + Options Common to TCP UDP and SCTP _RR tests + Options Common to TCP UDP and SCTP _RR tests + + + + + + + Issues in Request/Response + Options Common to TCP UDP and SCTP _RR tests + Using Netperf to Measure Request/Response + Using Netperf to Measure Request/Response + +
+ Issues in Request/Response + Most if not all the Issues in Bulk Transfer apply to request/response. The issue of round-trip latency is even more important as netperf generally only has one transaction outstanding at a time. + A single instance of a one transaction outstanding _RR test should _never_ completely saturate the CPU of a system. If testing between otherwise evenly matched systems, the symmetric nature of a _RR test with equal request and response sizes should result in equal CPU loading on both systems. However, this may not hold true on MP systems, particularly if one CPU binds the netperf and netserver differently via the global option. + For smaller request and response sizes packet loss is a bigger issue as there is no opportunity for a fast retransmit or retransmission prior to a retransmission timer expiring. + Virtualization may considerably increase the effective path length of a networking stack. While this may not preclude achieving link-rate on a comparatively slow link (eg 1 Gigabit Ethernet) on a _STREAM test, it can show-up as measurably fewer transactions per second on an _RR test. However, this may still be masked by interrupt coalescing in the NIC/driver. + Certain NICs have ways to minimize the number of interrupts sent to the host. If these are strapped badly they can significantly reduce the performance of something like a single-byte request/response test. Such setups are distinguished by seriously low reported CPU utilization and what seems like a low (even if in the thousands) transaction per second rate. Also, if you run such an OS/driver combination on faster or slower hardware and do not see a corresponding change in the transaction rate, chances are good that the driver is strapping the NIC with aggressive interrupt avoidance settings. Good for bulk throughput, but bad for latency. + Some drivers may try to automagically adjust the interrupt avoidance settings. If they are not terribly good at it, you will see considerable run-to-run variation in reported transaction rates. Particularly if you “mix-up” _STREAM and _RR tests. +
+
+ + Options Common to TCP UDP and SCTP _RR tests + Issues in Request/Response + Using Netperf to Measure Request/Response + +
+ Options Common to TCP UDP and SCTP _RR tests + Many “test-specific” options are actually common across the different tests. For those tests involving TCP, UDP and SCTP, whether using the BSD Sockets or the XTI interface those common options include: + -h, Test-specific + + -h + + Display the test-suite-specific usage string and exit. For a TCP_ or UDP_ test this will be the usage string from the source file nettest_bsd.c. For an XTI_ test, this will be the usage string from the source file src/nettest_xti.c. For an SCTP test, this will be the usage string from the source file src/nettest_sctp.c. + -H, Test-specific + + + + -H <optionspec> + + Normally, the remote hostname|IP and address family information is inherited from the settings for the control connection (eg global command-line , and/or options. The test-specific will override those settings for the data (aka test) connection only. Settings for the control connection are left unchanged. This might be used to cause the control and data connections to take different paths through the network. + -L, Test-specific + + + + -L <optionspec> + + The test-specific option is identical to the test-specific option except it affects the local hostname|IP and address family information. As with its global command-line counterpart, this is generally only useful when measuring though those evil, end-to-end breaking things called firewalls. + -P, Test-specific + + + + -P <optionspec> + + Set the local and/or remote port numbers for the data connection. + -r, Test-specific + + + + -r <sizespec> + + This option sets the request (first value) and/or response (second value) sizes for an _RR test. By default the units are bytes, but a suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -r 128,16K + Will set the request size to 128 bytes and the response size to 16 KB or 16384 bytes. [Default: 1 - a single-byte request and response ] + -s, Test-specific + + + + -s <sizespec> + + This option sets the local (netperf) send and receive socket buffer sizes for the data connection to the value(s) specified. Often, this will affect the advertised and/or effective TCP or other window, but on some platforms it may not. By default the units are bytes, but a suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -s 128K + Will request the local send (netperf) and receive socket buffer sizes to be 128KB or 131072 bytes. + While the historic expectation is that setting the socket buffer size has a direct effect on say the TCP window, today that may not hold true for all stacks. When running under Windows a value of 0 may be used which will be an indication to the stack the user wants to enable a form of copy avoidance. [Default: -1 - use the system's default socket buffer sizes] + -S, Test-specific + + + + -S <sizespec> + + This option sets the remote (netserver) send and/or receive socket buffer sizes for the data connection to the value(s) specified. Often, this will affect the advertised and/or effective TCP or other window, but on some platforms it may not. By default the units are bytes, but a suffix of “G,” “M,” or “K” will specify the units to be 2^30 (GB), 2^20 (MB) or 2^10 (KB) respectively. A suffix of “g,” “m” or “k” will specify units of 10^9, 10^6 or 10^3 bytes respectively. For example: + -s 128K + Will request the remote (netserver) send and receive socket buffer sizes to be 128KB or 131072 bytes. + While the historic expectation is that setting the socket buffer size has a direct effect on say the TCP window, today that may not hold true for all stacks. When running under Windows a value of 0 may be used which will be an indication to the stack the user wants to enable a form of copy avoidance. [Default: -1 - use the system's default socket buffer sizes] + -4, Test-specific + + + + -4 + + Set the local and remote address family for the data connection to AF_INET - ie use IPv4 addressing only. Just as with their global command-line counterparts the last of the , , or option wins for their respective address families. + -6 Test-specific + + + + -6 + + This option is identical to its cousin, but requests IPv6 addresses for the local and remote ends of the data connection. + + +
+ + + TCP_RR + TCP_RR + + + + TCP_CC + TCP_CC + + + + TCP_CRR + TCP_CRR + + + + UDP_RR + UDP_RR + + + + XTI_TCP_RR + XTI_TCP_RR + + + + XTI_TCP_CC + XTI_TCP_CC + + + + XTI_TCP_CRR + XTI_TCP_CRR + + + + XTI_UDP_RR + XTI_UDP_RR + + + + DLCL_RR + DLCL_RR + + + + DLCO_RR + DLCO_RR + + + + SCTP_RR + SCTP_RR + + + +
+
+ + TCP_RR + TCP_CC + Options Common to TCP UDP and SCTP _RR tests + Options Common to TCP UDP and SCTP _RR tests + + TCP_RR + Measuring LatencyLatency, Request-Response A TCP_RR (TCP Request/Response) test is requested by passing a value of “TCP_RR” to the global command-line option. A TCP_RR test can be thought-of as a user-space to user-space ping with no think time - it is by default a synchronous, one transaction at a time, request/response test. + The transaction rate is the number of complete transactions exchanged divided by the length of time it took to perform those transactions. + If the two Systems Under Test are otherwise identical, a TCP_RR test with the same request and response size should be symmetric - it should not matter which way the test is run, and the CPU utilization measured should be virtually the same on each system. If not, it suggests that the CPU utilization mechanism being used may have some, well, issues measuring CPU utilization completely and accurately. + Time to establish the TCP connection is not counted in the result. If you want connection setup overheads included, you should consider the TCP_CCTPC_CC or TCP_CRRTCP_CRR tests. + If specifying the option to set TCP_NODELAY and disable the Nagle Algorithm increases the transaction rate reported by a TCP_RR test, it implies the stack(s) over which the TCP_RR test is running have a broken implementation of the Nagle Algorithm. Likely as not they are interpreting Nagle on a segment by segment basis rather than a user send by user send basis. You should contact your stack vendor(s) to report the problem to them. + Here is an example of two systems running a basic TCP_RR test over a 10 Gigabit Ethernet link: + netperf -t TCP_RR -H 192.168.2.125 +TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.2.125 (192.168.2.125) port 0 AF_INET +Local /Remote +Socket Size Request Resp. Elapsed Trans. +Send Recv Size Size Time Rate +bytes Bytes bytes bytes secs. per sec + +16384 87380 1 1 10.00 29150.15 +16384 87380 + In this example the request and response sizes were one byte, the socket buffers were left at their defaults, and the test ran for all of 10 seconds. The transaction per second rate was rather good for the time :) + + + + TCP_CC + TCP_CRR + TCP_RR + Options Common to TCP UDP and SCTP _RR tests + + TCP_CC + Connection LatencyLatency, Connection Establishment A TCP_CC (TCP Connect/Close) test is requested by passing a value of “TCP_CC” to the global option. A TCP_CC test simply measures how fast the pair of systems can open and close connections between one another in a synchronous (one at a time) manner. While this is considered an _RR test, no request or response is exchanged over the connection. + Port ReuseTIME_WAITThe issue of TIME_WAIT reuse is an important one for a TCP_CC test. Basically, TIME_WAIT reuse is when a pair of systems churn through connections fast enough that they wrap the 16-bit port number space in less time than the length of the TIME_WAIT state. While it is indeed theoretically possible to “reuse” a connection in TIME_WAIT, the conditions under which such reuse is possible are rather rare. An attempt to reuse a connection in TIME_WAIT can result in a non-trivial delay in connection establishment. + Basically, any time the connection churn rate approaches: + Sizeof(clientportspace) / Lengthof(TIME_WAIT) + there is the risk of TIME_WAIT reuse. To minimize the chances of this happening, netperf will by default select its own client port numbers from the range of 5000 to 65535. On systems with a 60 second TIME_WAIT state, this should allow roughly 1000 transactions per second. The size of the client port space used by netperf can be controlled via the test-specific option, which takes a sizespec as a value setting the minimum (first value) and maximum (second value) port numbers used by netperf at the client end. + Since no requests or responses are exchanged during a TCP_CC test, only the , , and of the “common” test-specific options are likely to have an effect, if any, on the results. The and options _may_ have some effect if they alter the number and/or type of options carried in the TCP SYNchronize segments, such as Window Scaling or Timestamps. The and options are utterly ignored. + Since connection establishment and tear-down for TCP is not symmetric, a TCP_CC test is not symmetric in its loading of the two systems under test. + + + + TCP_CRR + UDP_RR + TCP_CC + Options Common to TCP UDP and SCTP _RR tests + + TCP_CRR + Latency, Connection EstablishmentLatency, Request-Response The TCP Connect/Request/Response (TCP_CRR) test is requested by passing a value of “TCP_CRR” to the global command-line option. A TCP_CRR test is like a merger of a TCP_RR and TCP_CC test which measures the performance of establishing a connection, exchanging a single request/response transaction, and tearing-down that connection. This is very much like what happens in an HTTP 1.0 or HTTP 1.1 connection when HTTP Keepalives are not used. In fact, the TCP_CRR test was added to netperf to simulate just that. + Since a request and response are exchanged the , and options can have an effect on the performance. + The issue of TIME_WAIT reuse exists for the TCP_CRR test just as it does for the TCP_CC test. Similarly, since connection establishment and tear-down is not symmetric, a TCP_CRR test is not symmetric even when the request and response sizes are the same. + + + + UDP_RR + XTI_TCP_RR + TCP_CRR + Options Common to TCP UDP and SCTP _RR tests + + UDP_RR + Latency, Request-ResponsePacket Loss A UDP Request/Response (UDP_RR) test is requested by passing a value of “UDP_RR” to a global option. It is very much the same as a TCP_RR test except UDP is used rather than TCP. + UDP does not provide for retransmission of lost UDP datagrams, and netperf does not add anything for that either. This means that if _any_ request or response is lost, the exchange of requests and responses will stop from that point until the test timer expires. Netperf will not really “know” this has happened - the only symptom will be a low transaction per second rate. If was included in the configure command and a test-specific option used, the UDP_RR test will “survive” the loss of requests and responses until the sum is one more than the value passed via the option. It will though almost certainly run more slowly. + The netperf side of a UDP_RR test will call connect() on its data socket and thenceforth use the send() and recv() socket calls. The netserver side of a UDP_RR test will not call connect() and will use recvfrom() and sendto() calls. This means that even if the request and response sizes are the same, a UDP_RR test is _not_ symmetric in its loading of the two systems under test. + Here is an example of a UDP_RR test between two otherwise identical two-CPU systems joined via a 1 Gigabit Ethernet network: + $ netperf -T 1 -H 192.168.1.213 -t UDP_RR -c -C +UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.213 (192.168.1.213) port 0 AF_INET +Local /Remote +Socket Size Request Resp. Elapsed Trans. CPU CPU S.dem S.dem +Send Recv Size Size Time Rate local remote local remote +bytes bytes bytes bytes secs. per sec % I % I us/Tr us/Tr + +65535 65535 1 1 10.01 15262.48 13.90 16.11 18.221 21.116 +65535 65535 + This example includes the and options to enable CPU utilization reporting and shows the asymmetry in CPU loading. The option was used to make sure netperf and netserver ran on a given CPU and did not move around during the test. + + + + XTI_TCP_RR + XTI_TCP_CC + UDP_RR + Options Common to TCP UDP and SCTP _RR tests + + XTI_TCP_RR + Latency, Request-Response An XTI_TCP_RR test is essentially the same as a TCP_RR test only using the XTI rather than BSD Sockets interface. It is requested by passing a value of “XTI_TCP_RR” to the global command-line option. + The test-specific options for an XTI_TCP_RR test are the same as those for a TCP_RR test with the addition of the option to specify the names of the local and/or remote XTI device file(s). + + + + XTI_TCP_CC + XTI_TCP_CRR + XTI_TCP_RR + Options Common to TCP UDP and SCTP _RR tests + + + XTI_TCP_CC + Latency, Connection Establishment An XTI_TCP_CC test is essentially the same as a TCP_CCTCP_CC test, only using the XTI rather than BSD Sockets interface. + The test-specific options for an XTI_TCP_CC test are the same as those for a TCP_CC test with the addition of the option to specify the names of the local and/or remote XTI device file(s). + + + + XTI_TCP_CRR + XTI_UDP_RR + XTI_TCP_CC + Options Common to TCP UDP and SCTP _RR tests + + + XTI_TCP_CRR + Latency, Connection EstablishmentLatency, Request-Response The XTI_TCP_CRR test is essentially the same as a TCP_CRRTCP_CRR test, only using the XTI rather than BSD Sockets interface. + The test-specific options for an XTI_TCP_CRR test are the same as those for a TCP_RR test with the addition of the option to specify the names of the local and/or remote XTI device file(s). + + + + XTI_UDP_RR + DLCL_RR + XTI_TCP_CRR + Options Common to TCP UDP and SCTP _RR tests + + XTI_UDP_RR + Latency, Request-Response An XTI_UDP_RR test is essentially the same as a UDP_RR test only using the XTI rather than BSD Sockets interface. It is requested by passing a value of “XTI_UDP_RR” to the global command-line option. + The test-specific options for an XTI_UDP_RR test are the same as those for a UDP_RR test with the addition of the option to specify the name of the local and/or remote XTI device file(s). + + + + DLCL_RR + DLCO_RR + XTI_UDP_RR + Options Common to TCP UDP and SCTP _RR tests + + + DLCL_RR + Latency, Request-Response + + + + DLCO_RR + SCTP_RR + DLCL_RR + Options Common to TCP UDP and SCTP _RR tests + + + DLCO_RR + Latency, Request-Response + + + + SCTP_RR + DLCO_RR + Options Common to TCP UDP and SCTP _RR tests + + + SCTP_RR + Latency, Request-Response + + + + Using Netperf to Measure Aggregate Performance + Using Netperf to Measure Bidirectional Transfer + Using Netperf to Measure Request/Response + Top + + + Using Netperf to Measure Aggregate Performance + Aggregate Performance–enable-burst, Configure Ultimately, Netperf4Netperf4 will be the preferred benchmark to use when one wants to measure aggregate performance because netperf has no support for explicit synchronization of concurrent tests. Until netperf4 is ready for prime time, one can make use of the heuristics and procedures mentioned here for the 85% solution. + There are a few ways to measure aggregate performance with netperf. The first is to run multiple, concurrent netperf tests and can be applied to any of the netperf tests. The second is to configure netperf with --enable-burst and is applicable to the TCP_RR test. The third is a variation on the first. + + + Running Concurrent Netperf Tests + Running Concurrent Netperf Tests + + + + Using --enable-burst + Using –enable-burst + + + + Using --enable-demo + Using –enable-demo + + + + + + + Running Concurrent Netperf Tests + Using --enable-burst + Using Netperf to Measure Aggregate Performance + Using Netperf to Measure Aggregate Performance + +
+ Running Concurrent Netperf Tests + Netperf4Netperf4 is the preferred benchmark to use when one wants to measure aggregate performance because netperf has no support for explicit synchronization of concurrent tests. This leaves netperf2 results vulnerable to skew errors. + However, since there are times when netperf4 is unavailable it may be necessary to run netperf. The skew error can be minimized by making use of the confidence interval functionality. Then one simply launches multiple tests from the shell using a for loop or the like: + for i in 1 2 3 4 +do +netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 & +done + which will run four, concurrent TCP_STREAMTCP_STREAM tests from the system on which it is executed to tardy.cup.hp.com. Each concurrent netperf will iterate 10 times thanks to the option and will omit the test banners (option ) for brevity. The output looks something like this: + 87380 16384 16384 10.03 235.15 + 87380 16384 16384 10.03 235.09 + 87380 16384 16384 10.03 235.38 + 87380 16384 16384 10.03 233.96 + We can take the sum of the results and be reasonably confident that the aggregate performance was 940 Mbits/s. + If you see warnings about netperf not achieving the confidence intervals, the best thing to do is to increase the number of iterations with and/or increase the run length of each iteration with . + You can also enable local () and/or remote () CPU utilization: + for i in 1 2 3 4 +do +netperf -t TCP_STREAM -H tardy.cup.hp.com -i 10 -P 0 -c -C & +done + +87380 16384 16384 10.03 235.47 3.67 5.09 10.226 14.180 +87380 16384 16384 10.03 234.73 3.67 5.09 10.260 14.225 +87380 16384 16384 10.03 234.64 3.67 5.10 10.263 14.231 +87380 16384 16384 10.03 234.87 3.67 5.09 10.253 14.215 + If the CPU utilizations reported for the same system are the same or very very close you can be reasonably confident that skew error is minimized. Presumably one could then omit but that is not advised, particularly when/if the CPU utilization approaches 100 percent. In the example above we see that the CPU utilization on the local system remains the same for all four tests, and is only off by 0.01 out of 5.09 on the remote system. As the number of CPUs in the system increases, and so too the odds of saturating a single CPU, the accuracy of similar CPU utilization implying little skew error is diminished. This is also the case for those increasingly rare single CPU systems if the utilization is reported as 100% or very close to it. + + NOTE: It is very important to remember that netperf is calculating system-wide CPU utilization. When calculating the service demand (those last two columns in the output above) each netperf assumes it is the only thing running on the system. This means that for concurrent tests the service demands reported by netperf will be wrong. One has to compute service demands for concurrent tests by hand. + + If you wish you can add a unique, global option to each command line to append the given string to the output: + for i in 1 2 3 4 +do +netperf -t TCP_STREAM -H tardy.cup.hp.com -B "this is test $i" -i 10 -P 0 & +done + +87380 16384 16384 10.03 234.90 this is test 4 +87380 16384 16384 10.03 234.41 this is test 2 +87380 16384 16384 10.03 235.26 this is test 1 +87380 16384 16384 10.03 235.09 this is test 3 + You will notice that the tests completed in an order other than they were started from the shell. This underscores why there is a threat of skew error and why netperf4 is the preferred tool for aggregate tests. Even if you see the Netperf Contributing Editor acting to the contrary!-) + + + Issues in Running Concurrent Tests + Issues in Running Concurrent Tests + + + +
+
+ + Issues in Running Concurrent Tests + Running Concurrent Netperf Tests + Running Concurrent Netperf Tests + + Issues in Running Concurrent Tests + In addition to the aforementioned issue of skew error, there can be other issues to consider when running concurrent netperf tests. + For example, when running concurrent tests over multiple interfaces, one is not always assured that the traffic one thinks went over a given interface actually did so. In particular, the Linux networking stack takes a particularly strong stance on its following the so called weak end system model. As such, it is willing to answer ARP requests for any of its local IP addresses on any of its interfaces. If multiple interfaces are connected to the same broadcast domain, then even if they are configured into separate IP subnets there is no a priori way of knowing which interface was actually used for which connection(s). This can be addressed by setting the arp_ignore sysctl before configuring interfaces. + As it is quite important, we will repeat that it is very important to remember that each concurrent netperf instance is calculating system-wide CPU utilization. When calculating the service demand each netperf assumes it is the only thing running on the system. This means that for concurrent tests the service demands reported by netperf will be wrong. One has to compute service demands for concurrent tests by hand + Running concurrent tests can also become difficult when there is no one “central” node. Running tests between pairs of systems may be more difficult, calling for remote shell commands in the for loop rather than netperf commands. This introduces more skew error, which the confidence intervals may not be able to sufficiently mitigate. One possibility is to actually run three consecutive netperf tests on each node - the first being a warm-up, the last being a cool-down. The idea then is to ensure that the time it takes to get all the netperfs started is less than the length of the first netperf command in the sequence of three. Similarly, it assumes that all “middle” netperfs will complete before the first of the “last” netperfs complete. + + + + Using --enable-burst + Using --enable-demo + Running Concurrent Netperf Tests + Using Netperf to Measure Aggregate Performance + +
+ Using - -enable-burst + Starting in version 2.5.0 --enable-burst=yes is the default, which means one no longer must: + configure --enable-burst + To have burst-mode functionality present in netperf. This enables a test-specific option in TCP_RRTCP_RR, UDP_RRUDP_RR and The Omni Testsomni tests. + Normally, netperf will attempt to ramp-up the number of outstanding requests to plus one transactions in flight at one time. The ramp-up is to avoid transactions being smashed together into a smaller number of segments when the transport's congestion window (if any) is smaller at the time than what netperf wants to have outstanding at one time. If, however, the user specifies a negative value for this ramp-up is bypassed and the burst of sends is made without consideration of transport congestion window. + This burst-mode is used as an alternative to or even in conjunction with multiple-concurrent _RR tests and as a way to implement a single-connection, bidirectional bulk-transfer test. When run with just a single instance of netperf, increasing the burst size can determine the maximum number of transactions per second which can be serviced by a single process: + for b in 0 1 2 4 8 16 32 +do + netperf -v 0 -t TCP_RR -B "-b $b" -H hpcpc108 -P 0 -- -b $b +done + +9457.59 -b 0 +9975.37 -b 1 +10000.61 -b 2 +20084.47 -b 4 +29965.31 -b 8 +71929.27 -b 16 +109718.17 -b 32 + The global and options were used to minimize the output to the single figure of merit which in this case the transaction rate. The global -B option was used to more clearly label the output, and the test-specific option enabled by --enable-burst increase the number of transactions in flight at one time. + Now, since the test-specific option was not specified to set TCP_NODELAY, the stack was free to “bundle” requests and/or responses into TCP segments as it saw fit, and since the default request and response size is one byte, there could have been some considerable bundling even in the absence of transport congestion window issues. If one wants to try to achieve a closer to one-to-one correspondence between a request and response and a TCP segment, add the test-specific option: + for b in 0 1 2 4 8 16 32 +do + netperf -v 0 -t TCP_RR -B "-b $b -D" -H hpcpc108 -P 0 -- -b $b -D +done + + 8695.12 -b 0 -D + 19966.48 -b 1 -D + 20691.07 -b 2 -D + 49893.58 -b 4 -D + 62057.31 -b 8 -D + 108416.88 -b 16 -D + 114411.66 -b 32 -D + You can see that this has a rather large effect on the reported transaction rate. In this particular instance, the author believes it relates to interactions between the test and interrupt coalescing settings in the driver for the NICs used. + + NOTE: Even if you set the option that is still not a guarantee that each transaction is in its own TCP segments. You should get into the habit of verifying the relationship between the transaction rate and the packet rate via other means. + + You can also combine --enable-burst functionality with concurrent netperf tests. This would then be an “aggregate of aggregates” if you like: + +for i in 1 2 3 4 +do + netperf -H hpcpc108 -v 0 -P 0 -i 10 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & +done + + 46668.38 aggregate 4 -b 8 -D + 44890.64 aggregate 2 -b 8 -D + 45702.04 aggregate 1 -b 8 -D + 46352.48 aggregate 3 -b 8 -D + + Since each netperf did hit the confidence intervals, we can be reasonably certain that the aggregate transaction per second rate was the sum of all four concurrent tests, or something just shy of 184,000 transactions per second. To get some idea if that was also the packet per second rate, we could bracket that for loop with something to gather statistics and run the results through ftp://ftp.cup.hp.com/dist/networking/toolsbeforeafter: + /usr/sbin/ethtool -S eth2 > before +for i in 1 2 3 4 +do + netperf -H 192.168.2.108 -l 60 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & +done +wait +/usr/sbin/ethtool -S eth2 > after + + 52312.62 aggregate 2 -b 8 -D + 50105.65 aggregate 4 -b 8 -D + 50890.82 aggregate 1 -b 8 -D + 50869.20 aggregate 3 -b 8 -D + +beforeafter before after > delta + +grep packets delta + rx_packets: 12251544 + tx_packets: 12251550 + + This example uses ethtool because the system being used is running Linux. Other platforms have other tools - for example HP-UX has lanadmin: + lanadmin -g mibstats <ppa> + and of course one could instead use netstat. + The wait is important because we are launching concurrent netperfs in the background. Without it, the second ethtool command would be run before the tests finished and perhaps even before the last of them got started! + The sum of the reported transaction rates is 204178 over 60 seconds, which is a total of 12250680 transactions. Each transaction is the exchange of a request and a response, so we multiply that by 2 to arrive at 24501360. + The sum of the ethtool stats is 24503094 packets which matches what netperf was reporting very well. + Had the request or response size differed, we would need to know how it compared with the MSS for the connection. + Just for grins, here is the exercise repeated, using netstat instead of ethtool + netstat -s -t > before +for i in 1 2 3 4 +do + netperf -l 60 -H 192.168.2.108 -v 0 -P 0 -B "aggregate $i -b 8 -D" -t TCP_RR -- -b 8 -D & done +wait +netstat -s -t > after + + 51305.88 aggregate 4 -b 8 -D + 51847.73 aggregate 2 -b 8 -D + 50648.19 aggregate 3 -b 8 -D + 53605.86 aggregate 1 -b 8 -D + +beforeafter before after > delta + +grep segments delta + 12445708 segments received + 12445730 segments send out + 1 segments retransmited + 0 bad segments received. + The sums are left as an exercise to the reader :) + Things become considerably more complicated if there are non-trvial packet losses and/or retransmissions. + Of course all this checking is unnecessary if the test is a UDP_RR test because UDP “never” aggregates multiple sends into the same UDP datagram, and there are no ACKnowledgements in UDP. The loss of a single request or response will not bring a “burst” UDP_RR test to a screeching halt, but it will reduce the number of transactions outstanding at any one time. A “burst” UDP_RR test will come to a halt if the sum of the lost requests and responses reaches the value specified in the test-specific option. +
+
+ + Using --enable-demo + Using --enable-burst + Using Netperf to Measure Aggregate Performance +
+ Using - -enable-demo + One can + configure --enable-demo + and compile netperf to enable netperf to emit “interim results” at semi-regular intervals. This enables a global -D option which takes a reporting interval as an argument. With that specified, the output of netperf will then look something like + $ src/netperf -D 1.25 +MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain () port 0 AF_INET : demo +Interim result: 25425.52 10^6bits/s over 1.25 seconds ending at 1327962078.405 +Interim result: 25486.82 10^6bits/s over 1.25 seconds ending at 1327962079.655 +Interim result: 25474.96 10^6bits/s over 1.25 seconds ending at 1327962080.905 +Interim result: 25523.49 10^6bits/s over 1.25 seconds ending at 1327962082.155 +Interim result: 25053.57 10^6bits/s over 1.27 seconds ending at 1327962083.429 +Interim result: 25349.64 10^6bits/s over 1.25 seconds ending at 1327962084.679 +Interim result: 25292.84 10^6bits/s over 1.25 seconds ending at 1327962085.932 +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 25375.66 + The units of the “Interim result” lines will follow the units selected via the global -f option. If the test-specific -o option is specified on the command line, the format will be CSV: + ... +2978.81,MBytes/s,1.25,1327962298.035 +... + If the test-specific -k option is used the format will be keyval with each keyval being given an index: + ... +NETPERF_INTERIM_RESULT[2]=25.00 +NETPERF_UNITS[2]=10^9bits/s +NETPERF_INTERVAL[2]=1.25 +NETPERF_ENDING[2]=1327962357.249 +... + The expectation is it may be easier to utilize the keyvals if they have indices. + But how does this help with aggregate tests? Well, what one can do is start the netperfs via a script, giving each a Very Long (tm) run time. Direct the output to a file per instance. Then, once all the netperfs have been started, take a timestamp and wait for some desired test interval. Once that interval expires take another timestamp and then start terminating the netperfs by sending them a SIGALRM signal via the likes of the kill or pkill command. The netperfs will terminate and emit the rest of the “usual” output, and you can then bring the files to a central location for post processing to find the aggregate performance over the “test interval.” + This method has the advantage that it does not require advance knowledge of how long it takes to get netperf tests started and/or stopped. It does though require sufficiently synchronized clocks on all the test systems. + While calls to get the current time can be inexpensive, that neither has nor is universally true. For that reason netperf tries to minimize the number of such “timestamping” calls (eg gettimeofday) calls it makes when in demo mode. Rather than take a timestamp after each send or recv call completes netperf tries to guess how many units of work will be performed over the desired interval. Only once that many units of work have been completed will netperf check the time. If the reporting interval has passed, netperf will emit an “interim result.” If the interval has not passed, netperf will update its estimate for units and continue. + After a bit of thought one can see that if things “speed-up” netperf will still honor the interval. However, if things “slow-down” netperf may be late with an “interim result.” Here is an example of both of those happening during a test - with the interval being honored while throughput increases, and then about half-way through when another netperf (not shown) is started we see things slowing down and netperf not hitting the interval as desired. + $ src/netperf -D 2 -H tardy.hpl.hp.com -l 20 +MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to tardy.hpl.hp.com () port 0 AF_INET : demo +Interim result: 36.46 10^6bits/s over 2.01 seconds ending at 1327963880.565 +Interim result: 59.19 10^6bits/s over 2.00 seconds ending at 1327963882.569 +Interim result: 73.39 10^6bits/s over 2.01 seconds ending at 1327963884.576 +Interim result: 84.01 10^6bits/s over 2.03 seconds ending at 1327963886.603 +Interim result: 75.63 10^6bits/s over 2.21 seconds ending at 1327963888.814 +Interim result: 55.52 10^6bits/s over 2.72 seconds ending at 1327963891.538 +Interim result: 70.94 10^6bits/s over 2.11 seconds ending at 1327963893.650 +Interim result: 80.66 10^6bits/s over 2.13 seconds ending at 1327963895.777 +Interim result: 86.42 10^6bits/s over 2.12 seconds ending at 1327963897.901 +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 20.34 68.87 + So long as your post-processing mechanism can account for that, there should be no problem. As time passes there may be changes to try to improve the netperf's honoring the interval but one should not ass-u-me it will always do so. One should not assume the precision will remain fixed - future versions may change it - perhaps going beyond tenths of seconds in reporting the interval length etc. +
+
+ + Using Netperf to Measure Bidirectional Transfer + The Omni Tests + Using Netperf to Measure Aggregate Performance + Top + + + Using Netperf to Measure Bidirectional Transfer + There are two ways to use netperf to measure the performance of bidirectional transfer. The first is to run concurrent netperf tests from the command line. The second is to configure netperf with --enable-burst and use a single instance of the TCP_RRTCP_RR test. + While neither method is more “correct” than the other, each is doing so in different ways, and that has possible implications. For instance, using the concurrent netperf test mechanism means that multiple TCP connections and multiple processes are involved, whereas using the single instance of TCP_RR there is only one TCP connection and one process on each end. They may behave differently, especially on an MP system. + + + Bidirectional Transfer with Concurrent Tests + Bidirectional Transfer with Concurrent Tests + + + + Bidirectional Transfer with TCP_RR + Bidirectional Transfer with TCP_RR + + + + Implications of Concurrent Tests vs Burst Request/Response + Implications of Concurrent Tests vs Burst Request/Response + + + + + + + Bidirectional Transfer with Concurrent Tests + Bidirectional Transfer with TCP_RR + Using Netperf to Measure Bidirectional Transfer + Using Netperf to Measure Bidirectional Transfer + +
+ Bidirectional Transfer with Concurrent Tests + If we had two hosts Fred and Ethel, we could simply run a netperf TCP_STREAMTCP_STREAM test on Fred pointing at Ethel, and a concurrent netperf TCP_STREAM test on Ethel pointing at Fred, but since there are no mechanisms to synchronize netperf tests and we would be starting tests from two different systems, there is a considerable risk of skew error. + Far better would be to run simultaneous TCP_STREAM and TCP_MAERTSTCP_MAERTS tests from just one system, using the concepts and procedures outlined in Running Concurrent Netperf TestsRunning Concurrent Netperf Tests. Here then is an example: + for i in 1 +do + netperf -H 192.168.2.108 -t TCP_STREAM -B "outbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & + netperf -H 192.168.2.108 -t TCP_MAERTS -B "inbound" -i 10 -P 0 -v 0 \ + -- -s 256K -S 256K & +done + + 892.66 outbound + 891.34 inbound + We have used a for loop in the shell with just one iteration because that will be much easier to get both tests started at more or less the same time than doing it by hand. The global and options are used because we aren't interested in anything other than the throughput, and the global option is used to tag each output so we know which was inbound and which outbound relative to the system on which we were running netperf. Of course that sense is switched on the system running netserver :) The use of the global option is explained in Running Concurrent Netperf TestsRunning Concurrent Netperf Tests. + Beginning with version 2.5.0 we can accomplish a similar result with the The Omni Teststhe omni tests and Omni Output Selectorsoutput selectors: + for i in 1 +do + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d stream -s 256K -S 256K -o throughput,direction & + netperf -H 192.168.1.3 -t omni -l 10 -P 0 -- \ + -d maerts -s 256K -S 256K -o throughput,direction & +done + +805.26,Receive +828.54,Send +
+
+ + Bidirectional Transfer with TCP_RR + Implications of Concurrent Tests vs Burst Request/Response + Bidirectional Transfer with Concurrent Tests + Using Netperf to Measure Bidirectional Transfer + +
+ Bidirectional Transfer with TCP_RR + Starting with version 2.5.0 the --enable-burst configure option defaults to yes, and starting some time before version 2.5.0 but after 2.4.0 the global option would affect the “throughput” reported by request/response tests. If one uses the test-specific option to have several “transactions” in flight at one time and the test-specific option to increase their size, the test looks more and more like a single-connection bidirectional transfer than a simple request/response test. + So, putting it all together one can do something like: + netperf -f m -t TCP_RR -H 192.168.1.3 -v 2 -- -b 6 -r 32K -S 256K -S 256K +MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.3 (192.168.1.3) port 0 AF_INET : interval : first burst 6 +Local /Remote +Socket Size Request Resp. Elapsed +Send Recv Size Size Time Throughput +bytes Bytes bytes bytes secs. 10^6bits/sec + +16384 87380 32768 32768 10.00 1821.30 +524288 524288 +Alignment Offset RoundTrip Trans Throughput +Local Remote Local Remote Latency Rate 10^6bits/s +Send Recv Send Recv usec/Tran per sec Outbound Inbound + 8 0 0 0 2015.402 3473.252 910.492 910.492 + to get a bidirectional bulk-throughput result. As one can see, the -v 2 output will include a number of interesting, related values. + + NOTE: The logic behind --enable-burst is very simple, and there are no calls to poll() or select() which means we want to make sure that the send() calls will never block, or we run the risk of deadlock with each side stuck trying to call send() and neither calling recv(). + + Fortunately, this is easily accomplished by setting a “large enough” socket buffer size with the test-specific and options. Presently this must be performed by the user. Future versions of netperf might attempt to do this automagically, but there are some issues to be worked-out. +
+
+ + Implications of Concurrent Tests vs Burst Request/Response + Bidirectional Transfer with TCP_RR + Using Netperf to Measure Bidirectional Transfer +
+ Implications of Concurrent Tests vs Burst Request/Response + There are perhaps subtle but important differences between using concurrent unidirectional tests vs a burst-mode request to measure bidirectional performance. + Broadly speaking, a single “connection” or “flow” of traffic cannot make use of the services of more than one or two CPUs at either end. Whether one or two CPUs will be used processing a flow will depend on the specifics of the stack(s) involved and whether or not the global option has been used to bind netperf/netserver to specific CPUs. + When using concurrent tests there will be two concurrent connections or flows, which means that upwards of four CPUs will be employed processing the packets (global used, no more than two if not), however, with just a single, bidirectional request/response test no more than two CPUs will be employed (only one if the global is not used). + If there is a CPU bottleneck on either system this may result in rather different results between the two methods. + Also, with a bidirectional request/response test there is something of a natural balance or synchronization between inbound and outbound - a response will not be sent until a request is received, and (once the burst level is reached) a subsequent request will not be sent until a response is received. This may mask favoritism in the NIC between inbound and outbound processing. + With two concurrent unidirectional tests there is no such synchronization or balance and any favoritism in the NIC may be exposed. +
+
+ + The Omni Tests + Other Netperf Tests + Using Netperf to Measure Bidirectional Transfer + Top + + The Omni Tests + Beginning with version 2.5.0, netperf begins a migration to the omni tests or “Two routines to measure them all.” The code for the omni tests can be found in src/nettest_omni.c and the goal is to make it easier for netperf to support multiple protocols and report a great many additional things about the systems under test. Additionally, a flexible output selection mechanism is present which allows the user to chose specifically what values she wishes to have reported and in what format. + The omni tests are included by default in version 2.5.0. To disable them, one must: + ./configure --enable-omni=no ... + and remake netperf. Remaking netserver is optional because even in 2.5.0 it has “unmigrated” netserver side routines for the classic (eg src/nettest_bsd.c) tests. + + + Native Omni Tests + Native Omni Tests + + + + Migrated Tests + Migrated Tests + + + + Omni Output Selection + Omni Output Selection + + + + + + + Native Omni Tests + Migrated Tests + The Omni Tests + The Omni Tests +
+ Native Omni Tests + One access the omni tests “natively” by using a value of “OMNI” with the global test-selection option. This will then cause netperf to use the code in src/nettest_omni.c and in particular the test-specific options parser for the omni tests. The test-specific options for the omni tests are a superset of those for “classic” tests. The options added by the omni tests are: + -c, Test-specific + + -c + + This explicitly declares that the test is to include connection establishment and tear-down as in either a TCP_CRR or TCP_CC test. + -d, Test-specific + + + + -d <direction> + + This option sets the direction of the test relative to the netperf process. As of version 2.5.0 one can use the following in a case-insensitive manner: +
+ + send, stream, transmit, xmit or 2 + + Any of which will cause netperf to send to the netserver. + + + + recv, receive, maerts or 4 + + Any of which will cause netserver to send to netperf. + + + + rr or 6 + + Either of which will cause a request/response test. + + +
+ Additionally, one can specify two directions separated by a '|' character and they will be OR'ed together. In this way one can use the ”Send|Recv” that will be emitted by the Omni Output SelectorsDIRECTION Omni Output Selectionoutput selector when used with a request/response test. + -k, Test-specific + + + + -k [Omni Output Selectionoutput selector] + + This option sets the style of output to “keyval” where each line of output has the form: + key=value + For example: + $ netperf -t omni -- -d rr -k "THROUGHPUT,THROUGHPUT_UNITS" +OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +THROUGHPUT=59092.65 +THROUGHPUT_UNITS=Trans/s + Using the option will override any previous, test-specific or option. + -o, Test-specific + + + + -o [Omni Output Selectionoutput selector] + + This option sets the style of output to “CSV” where there will be one line of comma-separated values, preceded by one line of column names unless the global option is used with a value of 0: + $ netperf -t omni -- -d rr -o "THROUGHPUT,THROUGHPUT_UNITS" +OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +Throughput,Throughput Units +60999.07,Trans/s + Using the option will override any previous, test-specific or option. + -O, Test-specific + + + + -O [Omni Output Selectionoutput selector] + + This option sets the style of output to “human readable” which will look quite similar to classic netperf output: + $ netperf -t omni -- -d rr -O "THROUGHPUT,THROUGHPUT_UNITS" +OMNI TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +Throughput Throughput + Units + + +60492.57 Trans/s + Using the option will override any previous, test-specific or option. + -t, Test-specific + + + + -t + + This option explicitly sets the socket type for the test's data connection. As of version 2.5.0 the known socket types include “stream” and “dgram” for SOCK_STREAM and SOCK_DGRAM respectively. + -T, Test-specific + + + + -T <protocol> + + This option is used to explicitly set the protocol used for the test. It is case-insensitive. As of version 2.5.0 the protocols known to netperf include: + + + TCP + + Select the Transmission Control Protocol + + + + UDP + + Select the User Datagram Protocol + + + + SDP + + Select the Sockets Direct Protocol + + + + DCCP + + Select the Datagram Congestion Control Protocol + + + + SCTP + + Select the Stream Control Transport Protocol + + + + udplite + + Select UDP Lite + + +
+ The default is implicit based on other settings. +
+
+ + The omni tests also extend the interpretation of some of the classic, test-specific options for the BSD Sockets tests: + + + -m <optionspec> + + This can set the send size for either or both of the netperf and netserver sides of the test: + -m 32K + sets only the netperf-side send size to 32768 bytes, and or's-in transmit for the direction. This is effectively the same behaviour as for the classic tests. + -m ,32K + sets only the netserver side send size to 32768 bytes and or's-in receive for the direction. + -m 16K,32K +sets the netperf side send size to 16284 bytes, the netserver side +send size to 32768 bytes and the direction will be "Send|Recv." + + + + -M <optionspec> + + This can set the receive size for either or both of the netperf and netserver sides of the test: + -M 32K + sets only the netserver side receive size to 32768 bytes and or's-in send for the test direction. + -M ,32K + sets only the netperf side receive size to 32768 bytes and or's-in receive for the test direction. + -M 16K,32K + sets the netserver side receive size to 16384 bytes and the netperf side receive size to 32768 bytes and the direction will be "Send|Recv." + + +
+
+
+ + Migrated Tests + Omni Output Selection + Native Omni Tests + The Omni Tests +
+ Migrated Tests + As of version 2.5.0 several tests have been migrated to use the omni code in src/nettest_omni.c for the core of their testing. A migrated test retains all its previous output code and so should still “look and feel” just like a pre-2.5.0 test with one exception - the first line of the test banners will include the word “MIGRATED” at the beginning as in: + $ netperf +MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +Recv Send Send +Socket Socket Message Elapsed +Size Size Size Time Throughput +bytes bytes bytes secs. 10^6bits/sec + + 87380 16384 16384 10.00 27175.27 + The tests migrated in version 2.5.0 are: + + + + TCP_STREAM + + + TCP_MAERTS + + + TCP_RR + + + TCP_CRR + + + UDP_STREAM + + + UDP_RR + + + It is expected that future releases will have additional tests migrated to use the “omni” functionality. + If one uses “omni-specific” test-specific options in conjunction with a migrated test, instead of using the classic output code, the new omni output code will be used. For example if one uses the test-specific option with a value of “MIN_LATENCY,MAX_LATENCY” with a migrated TCP_RR test one will see: + $ netperf -t tcp_rr -- -k THROUGHPUT,THROUGHPUT_UNITS +MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +THROUGHPUT=60074.74 +THROUGHPUT_UNITS=Trans/s + rather than: + $ netperf -t tcp_rr +MIGRATED TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to localhost.localdomain (127.0.0.1) port 0 AF_INET : demo +Local /Remote +Socket Size Request Resp. Elapsed Trans. +Send Recv Size Size Time Rate +bytes Bytes bytes bytes secs. per sec + +16384 87380 1 1 10.00 59421.52 +16384 87380 +
+
+ + Omni Output Selection + Migrated Tests + The Omni Tests +
+ Omni Output Selection + The omni test-specific , and options take an optional output selector by which the user can configure what values are reported. The output selector can take several forms: + + + filename + + The output selections will be read from the named file. Within the file there can be up to four lines of comma-separated output selectors. This controls how many multi-line blocks of output are emitted when the option is used. This output, while not identical to “classic” netperf output, is inspired by it. Multiple lines have no effect for and options. Putting output selections in a file can be useful when the list of selections is long. + + + + comma and/or semi-colon-separated list + + The output selections will be parsed from a comma and/or semi-colon-separated list of output selectors. When the list is given to a option a semi-colon specifies a new output block should be started. Semi-colons have the same meaning as commas when used with the or options. Depending on the command interpreter being used, the semi-colon may have to be escaped somehow to keep it from being interpreted by the command interpreter. This can often be done by enclosing the entire list in quotes. + + + + all + + If the keyword all is specified it means that all known output values should be displayed at the end of the test. This can be a great deal of output. As of version 2.5.0 there are 157 different output selectors. + + + + ? + + If a “?” is given as the output selection, the list of all known output selectors will be displayed and no test actually run. When passed to the option they will be listed one per line. Otherwise they will be listed as a comma-separated list. It may be necessary to protect the “?” from the command interpreter by escaping it or enclosing it in quotes. + + + + no selector + + If nothing is given to the , or option then the code selects a default set of output selectors inspired by classic netperf output. The format will be the human readable format emitted by the test-specific option. + + +
+ The order of evaluation will first check for an output selection. If none is specified with the , or option netperf will select a default based on the characteristics of the test. If there is an output selection, the code will first check for ?, then check to see if it is the magic all keyword. After that it will check for either , or ; in the selection and take that to mean it is a comma and/or semi-colon-separated list. If none of those checks match, netperf will then assume the output specification is a filename and attempt to open and parse the file. + + + Omni Output Selectors + Omni Output Selectors + + + +
+
+ + Omni Output Selectors + Omni Output Selection + Omni Output Selection + + Omni Output Selectors + As of version 2.5.0 the output selectors are: + + + OUTPUT_NONE + + This is essentially a null output. For output it will simply add a line that reads “OUTPUT_NONE=” to the output. For it will cause an empty “column” to be included. For output it will cause extra spaces to separate “real” output. + + + + SOCKET_TYPE + + This will cause the socket type (eg SOCK_STREAM, SOCK_DGRAM) for the data connection to be output. + + + + PROTOCOL + + This will cause the protocol used for the data connection to be displayed. + + + + DIRECTION + + This will display the data flow direction relative to the netperf process. Units: Send or Recv for a unidirectional bulk-transfer test, or Send|Recv for a request/response test. + + + + ELAPSED_TIME + + This will display the elapsed time in seconds for the test. + + + + THROUGHPUT + + This will display the throughput for the test. Units: As requested via the global option and displayed by the THROUGHPUT_UNITS output selector. + + + + THROUGHPUT_UNITS + + This will display the units for what is displayed by the THROUGHPUT output selector. + + + + LSS_SIZE_REQ + + This will display the local (netperf) send socket buffer size (aka SO_SNDBUF) requested via the command line. Units: Bytes. + + + + LSS_SIZE + + This will display the local (netperf) send socket buffer size (SO_SNDBUF) immediately after the data connection socket was created. Peculiarities of different networking stacks may lead to this differing from the size requested via the command line. Units: Bytes. + + + + LSS_SIZE_END + + This will display the local (netperf) send socket buffer size (SO_SNDBUF) immediately before the data connection socket is closed. Peculiarities of different networking stacks may lead this to differ from the size requested via the command line and/or the size immediately after the data connection socket was created. Units: Bytes. + + + + LSR_SIZE_REQ + + This will display the local (netperf) receive socket buffer size (aka SO_RCVBUF) requested via the command line. Units: Bytes. + + + + LSR_SIZE + + This will display the local (netperf) receive socket buffer size (SO_RCVBUF) immediately after the data connection socket was created. Peculiarities of different networking stacks may lead to this differing from the size requested via the command line. Units: Bytes. + + + + LSR_SIZE_END + + This will display the local (netperf) receive socket buffer size (SO_RCVBUF) immediately before the data connection socket is closed. Peculiarities of different networking stacks may lead this to differ from the size requested via the command line and/or the size immediately after the data connection socket was created. Units: Bytes. + + + + RSS_SIZE_REQ + + This will display the remote (netserver) send socket buffer size (aka SO_SNDBUF) requested via the command line. Units: Bytes. + + + + RSS_SIZE + + This will display the remote (netserver) send socket buffer size (SO_SNDBUF) immediately after the data connection socket was created. Peculiarities of different networking stacks may lead to this differing from the size requested via the command line. Units: Bytes. + + + + RSS_SIZE_END + + This will display the remote (netserver) send socket buffer size (SO_SNDBUF) immediately before the data connection socket is closed. Peculiarities of different networking stacks may lead this to differ from the size requested via the command line and/or the size immediately after the data connection socket was created. Units: Bytes. + + + + RSR_SIZE_REQ + + This will display the remote (netserver) receive socket buffer size (aka SO_RCVBUF) requested via the command line. Units: Bytes. + + + + RSR_SIZE + + This will display the remote (netserver) receive socket buffer size (SO_RCVBUF) immediately after the data connection socket was created. Peculiarities of different networking stacks may lead to this differing from the size requested via the command line. Units: Bytes. + + + + RSR_SIZE_END + + This will display the remote (netserver) receive socket buffer size (SO_RCVBUF) immediately before the data connection socket is closed. Peculiarities of different networking stacks may lead this to differ from the size requested via the command line and/or the size immediately after the data connection socket was created. Units: Bytes. + + + + LOCAL_SEND_SIZE + + This will display the size of the buffers netperf passed in any “send” calls it made on the data connection for a non-request/response test. Units: Bytes. + + + + LOCAL_RECV_SIZE + + This will display the size of the buffers netperf passed in any “receive” calls it made on the data connection for a non-request/response test. Units: Bytes. + + + + REMOTE_SEND_SIZE + + This will display the size of the buffers netserver passed in any “send” calls it made on the data connection for a non-request/response test. Units: Bytes. + + + + REMOTE_RECV_SIZE + + This will display the size of the buffers netserver passed in any “receive” calls it made on the data connection for a non-request/response test. Units: Bytes. + + + + REQUEST_SIZE + + This will display the size of the requests netperf sent in a request-response test. Units: Bytes. + + + + RESPONSE_SIZE + + This will display the size of the responses netserver sent in a request-response test. Units: Bytes. + + + + LOCAL_CPU_UTIL + + This will display the overall CPU utilization during the test as measured by netperf. Units: 0 to 100 percent. + + + + LOCAL_CPU_METHOD + + This will display the method used by netperf to measure CPU utilization. Units: single character denoting method. + + + + LOCAL_SD + + This will display the service demand, or units of CPU consumed per unit of work, as measured by netperf. Units: microseconds of CPU consumed per either KB (K==1024) of data transferred or request/response transaction. + + + + REMOTE_CPU_UTIL + + This will display the overall CPU utilization during the test as measured by netserver. Units 0 to 100 percent. + + + + REMOTE_CPU_METHOD + + This will display the method used by netserver to measure CPU utilization. Units: single character denoting method. + + + + REMOTE_SD + + This will display the service demand, or units of CPU consumed per unit of work, as measured by netserver. Units: microseconds of CPU consumed per either KB (K==1024) of data transferred or request/response transaction. + + + + SD_UNITS + + This will display the units for LOCAL_SD and REMOTE_SD + + + + CONFIDENCE_LEVEL + + This will display the confidence level requested by the user either explicitly via the global option, or implicitly via the global option. The value will be either 95 or 99 if confidence intervals have been requested or 0 if they were not. Units: Percent + + + + CONFIDENCE_INTERVAL + + This will display the width of the confidence interval requested either explicitly via the global option or implicitly via the global option. Units: Width in percent of mean value computed. A value of -1.0 means that confidence intervals were not requested. + + + + CONFIDENCE_ITERATION + + This will display the number of test iterations netperf undertook, perhaps while attempting to achieve the requested confidence interval and level. If confidence intervals were requested via the command line then the value will be between 3 and 30. If confidence intervals were not requested the value will be 1. Units: Iterations + + + + THROUGHPUT_CONFID + + This will display the width of the confidence interval actually achieved for THROUGHPUT during the test. Units: Width of interval as percentage of reported throughput value. + + + + LOCAL_CPU_CONFID + + This will display the width of the confidence interval actually achieved for overall CPU utilization on the system running netperf (LOCAL_CPU_UTIL) during the test, if CPU utilization measurement was enabled. Units: Width of interval as percentage of reported CPU utilization. + + + + REMOTE_CPU_CONFID + + This will display the width of the confidence interval actually achieved for overall CPU utilization on the system running netserver (REMOTE_CPU_UTIL) during the test, if CPU utilization measurement was enabled. Units: Width of interval as percentage of reported CPU utilization. + + + + TRANSACTION_RATE + + This will display the transaction rate in transactions per second for a request/response test even if the user has requested a throughput in units of bits or bytes per second via the global option. It is undefined for a non-request/response test. Units: Transactions per second. + + + + RT_LATENCY + + This will display the average round-trip latency for a request/response test, accounting for number of transactions in flight at one time. It is undefined for a non-request/response test. Units: Microseconds per transaction + + + + BURST_SIZE + + This will display the “burst size” or added transactions in flight in a request/response test as requested via a test-specific option. The number of transactions in flight at one time will be one greater than this value. It is undefined for a non-request/response test. Units: added Transactions in flight. + + + + LOCAL_TRANSPORT_RETRANS + + This will display the number of retransmissions experienced on the data connection during the test as determined by netperf. A value of -1 means the attempt to determine the number of retransmissions failed or the concept was not valid for the given protocol or the mechanism is not known for the platform. A value of -2 means it was not attempted. As of version 2.5.0 the meaning of values are in flux and subject to change. Units: number of retransmissions. + + + + REMOTE_TRANSPORT_RETRANS + + This will display the number of retransmissions experienced on the data connection during the test as determined by netserver. A value of -1 means the attempt to determine the number of retransmissions failed or the concept was not valid for the given protocol or the mechanism is not known for the platform. A value of -2 means it was not attempted. As of version 2.5.0 the meaning of values are in flux and subject to change. Units: number of retransmissions. + + + + TRANSPORT_MSS + + This will display the Maximum Segment Size (aka MSS) or its equivalent for the protocol being used during the test. A value of -1 means either the concept of an MSS did not apply to the protocol being used, or there was an error in retrieving it. Units: Bytes. + + + + LOCAL_SEND_THROUGHPUT + + The throughput as measured by netperf for the successful “send” calls it made on the data connection. Units: as requested via the global option and displayed via the THROUGHPUT_UNITS output selector. + + + + LOCAL_RECV_THROUGHPUT + + The throughput as measured by netperf for the successful “receive” calls it made on the data connection. Units: as requested via the global option and displayed via the THROUGHPUT_UNITS output selector. + + + + REMOTE_SEND_THROUGHPUT + + The throughput as measured by netserver for the successful “send” calls it made on the data connection. Units: as requested via the global option and displayed via the THROUGHPUT_UNITS output selector. + + + + REMOTE_RECV_THROUGHPUT + + The throughput as measured by netserver for the successful “receive” calls it made on the data connection. Units: as requested via the global option and displayed via the THROUGHPUT_UNITS output selector. + + + + LOCAL_CPU_BIND + + The CPU to which netperf was bound, if at all, during the test. A value of -1 means that netperf was not explicitly bound to a CPU during the test. Units: CPU ID + + + + LOCAL_CPU_COUNT + + The number of CPUs (cores, threads) detected by netperf. Units: CPU count. + + + + LOCAL_CPU_PEAK_UTIL + + The utilization of the CPU most heavily utilized during the test, as measured by netperf. This can be used to see if any one CPU of a multi-CPU system was saturated even though the overall CPU utilization as reported by LOCAL_CPU_UTIL was low. Units: 0 to 100% + + + + LOCAL_CPU_PEAK_ID + + The id of the CPU most heavily utilized during the test as determined by netperf. Units: CPU ID. + + + + LOCAL_CPU_MODEL + + Model information for the processor(s) present on the system running netperf. Assumes all processors in the system (as perceived by netperf) on which netperf is running are the same model. Units: Text + + + + LOCAL_CPU_FREQUENCY + + The frequency of the processor(s) on the system running netperf, at the time netperf made the call. Assumes that all processors present in the system running netperf are running at the same frequency. Units: MHz + + + + REMOTE_CPU_BIND + + The CPU to which netserver was bound, if at all, during the test. A value of -1 means that netperf was not explicitly bound to a CPU during the test. Units: CPU ID + + + + REMOTE_CPU_COUNT + + The number of CPUs (cores, threads) detected by netserver. Units: CPU count. + + + + REMOTE_CPU_PEAK_UTIL + + The utilization of the CPU most heavily utilized during the test, as measured by netserver. This can be used to see if any one CPU of a multi-CPU system was saturated even though the overall CPU utilization as reported by REMOTE_CPU_UTIL was low. Units: 0 to 100% + + + + REMOTE_CPU_PEAK_ID + + The id of the CPU most heavily utilized during the test as determined by netserver. Units: CPU ID. + + + + REMOTE_CPU_MODEL + + Model information for the processor(s) present on the system running netserver. Assumes all processors in the system (as perceived by netserver) on which netserver is running are the same model. Units: Text + + + + REMOTE_CPU_FREQUENCY + + The frequency of the processor(s) on the system running netserver, at the time netserver made the call. Assumes that all processors present in the system running netserver are running at the same frequency. Units: MHz + + + + SOURCE_PORT + + The port ID/service name to which the data socket created by netperf was bound. A value of 0 means the data socket was not explicitly bound to a port number. Units: ASCII text. + + + + SOURCE_ADDR + + The name/address to which the data socket created by netperf was bound. A value of 0.0.0.0 means the data socket was not explicitly bound to an address. Units: ASCII text. + + + + SOURCE_FAMILY + + The address family to which the data socket created by netperf was bound. A value of 0 means the data socket was not explicitly bound to a given address family. Units: ASCII text. + + + + DEST_PORT + + The port ID to which the data socket created by netserver was bound. A value of 0 means the data socket was not explicitly bound to a port number. Units: ASCII text. + + + + DEST_ADDR + + The name/address of the data socket created by netserver. Units: ASCII text. + + + + DEST_FAMILY + + The address family to which the data socket created by netserver was bound. A value of 0 means the data socket was not explicitly bound to a given address family. Units: ASCII text. + + + + LOCAL_SEND_CALLS + + The number of successful “send” calls made by netperf against its data socket. Units: Calls. + + + + LOCAL_RECV_CALLS + + The number of successful “receive” calls made by netperf against its data socket. Units: Calls. + + + + LOCAL_BYTES_PER_RECV + + The average number of bytes per “receive” call made by netperf against its data socket. Units: Bytes. + + + + LOCAL_BYTES_PER_SEND + + The average number of bytes per “send” call made by netperf against its data socket. Units: Bytes. + + + + LOCAL_BYTES_SENT + + The number of bytes successfully sent by netperf through its data socket. Units: Bytes. + + + + LOCAL_BYTES_RECVD + + The number of bytes successfully received by netperf through its data socket. Units: Bytes. + + + + LOCAL_BYTES_XFERD + + The sum of bytes sent and received by netperf through its data socket. Units: Bytes. + + + + LOCAL_SEND_OFFSET + + The offset from the alignment of the buffers passed by netperf in its “send” calls. Specified via the global option and defaults to 0. Units: Bytes. + + + + LOCAL_RECV_OFFSET + + The offset from the alignment of the buffers passed by netperf in its “receive” calls. Specified via the global option and defaults to 0. Units: Bytes. + + + + LOCAL_SEND_ALIGN + + The alignment of the buffers passed by netperf in its “send” calls as specified via the global option. Defaults to 8. Units: Bytes. + + + + LOCAL_RECV_ALIGN + + The alignment of the buffers passed by netperf in its “receive” calls as specified via the global option. Defaults to 8. Units: Bytes. + + + + LOCAL_SEND_WIDTH + + The “width” of the ring of buffers through which netperf cycles as it makes its “send” calls. Defaults to one more than the local send socket buffer size divided by the send size as determined at the time the data socket is created. Can be used to make netperf more processor data cache unfriendly. Units: number of buffers. + + + + LOCAL_RECV_WIDTH + + The “width” of the ring of buffers through which netperf cycles as it makes its “receive” calls. Defaults to one more than the local receive socket buffer size divided by the receive size as determined at the time the data socket is created. Can be used to make netperf more processor data cache unfriendly. Units: number of buffers. + + + + LOCAL_SEND_DIRTY_COUNT + + The number of bytes to “dirty” (write to) before netperf makes a “send” call. Specified via the global option, which requires that –enable-dirty=yes was specified with the configure command prior to building netperf. Units: Bytes. + + + + LOCAL_RECV_DIRTY_COUNT + + The number of bytes to “dirty” (write to) before netperf makes a “recv” call. Specified via the global option which requires that –enable-dirty was specified with the configure command prior to building netperf. Units: Bytes. + + + + LOCAL_RECV_CLEAN_COUNT + + The number of bytes netperf should read “cleanly” before making a “receive” call. Specified via the global option which requires that –enable-dirty was specified with configure command prior to building netperf. Clean reads start were dirty writes ended. Units: Bytes. + + + + LOCAL_NODELAY + + Indicates whether or not setting the test protocol-specific “no delay” (eg TCP_NODELAY) option on the data socket used by netperf was requested by the test-specific option and successful. Units: 0 means no, 1 means yes. + + + + LOCAL_CORK + + Indicates whether or not TCP_CORK was set on the data socket used by netperf as requested via the test-specific option. 1 means yes, 0 means no/not applicable. + + + + REMOTE_SEND_CALLS + REMOTE_RECV_CALLS + REMOTE_BYTES_PER_RECV + REMOTE_BYTES_PER_SEND + REMOTE_BYTES_SENT + REMOTE_BYTES_RECVD + REMOTE_BYTES_XFERD + REMOTE_SEND_OFFSET + REMOTE_RECV_OFFSET + REMOTE_SEND_ALIGN + REMOTE_RECV_ALIGN + REMOTE_SEND_WIDTH + REMOTE_RECV_WIDTH + REMOTE_SEND_DIRTY_COUNT + REMOTE_RECV_DIRTY_COUNT + REMOTE_RECV_CLEAN_COUNT + REMOTE_NODELAY + REMOTE_CORK + + These are all like their “LOCAL_” counterparts only for the netserver rather than netperf. + + + + LOCAL_SYSNAME + + The name of the OS (eg “Linux”) running on the system on which netperf was running. Units: ASCII Text + + + + LOCAL_SYSTEM_MODEL + + The model name of the system on which netperf was running. Units: ASCII Text. + + + + LOCAL_RELEASE + + The release name/number of the OS running on the system on which netperf was running. Units: ASCII Text + + + + LOCAL_VERSION + + The version number of the OS running on the system on which netperf was running. Units: ASCII Text + + + + LOCAL_MACHINE + + The machine architecture of the machine on which netperf was running. Units: ASCII Text. + + + + REMOTE_SYSNAME + REMOTE_SYSTEM_MODEL + REMOTE_RELEASE + REMOTE_VERSION + REMOTE_MACHINE + + These are all like their “LOCAL_” counterparts only for the netserver rather than netperf. + + + + LOCAL_INTERFACE_NAME + + The name of the probable egress interface through which the data connection went on the system running netperf. Example: eth0. Units: ASCII Text. + + + + LOCAL_INTERFACE_VENDOR + + The vendor ID of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: Hexadecimal IDs as might be found in a pci.ids file or at http://pciids.sourceforge.net/the PCI ID Repository. + + + + LOCAL_INTERFACE_DEVICE + + The device ID of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: Hexadecimal IDs as might be found in a pci.ids file or at http://pciids.sourceforge.net/the PCI ID Repository. + + + + LOCAL_INTERFACE_SUBVENDOR + + The sub-vendor ID of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: Hexadecimal IDs as might be found in a pci.ids file or at http://pciids.sourceforge.net/the PCI ID Repository. + + + + LOCAL_INTERFACE_SUBDEVICE + + The sub-device ID of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: Hexadecimal IDs as might be found in a pci.ids file or at http://pciids.sourceforge.net/the PCI ID Repository. + + + + LOCAL_DRIVER_NAME + + The name of the driver used for the probable egress interface through which traffic on the data connection went on the system running netperf. Units: ASCII Text. + + + + LOCAL_DRIVER_VERSION + + The version string for the driver used for the probable egress interface through which traffic on the data connection went on the system running netperf. Units: ASCII Text. + + + + LOCAL_DRIVER_FIRMWARE + + The firmware version for the driver used for the probable egress interface through which traffic on the data connection went on the system running netperf. Units: ASCII Text. + + + + LOCAL_DRIVER_BUS + + The bus address of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: ASCII Text. + + + + LOCAL_INTERFACE_SLOT + + The slot ID of the probable egress interface through which traffic on the data connection went on the system running netperf. Units: ASCII Text. + + + + REMOTE_INTERFACE_NAME + REMOTE_INTERFACE_VENDOR + REMOTE_INTERFACE_DEVICE + REMOTE_INTERFACE_SUBVENDOR + REMOTE_INTERFACE_SUBDEVICE + REMOTE_DRIVER_NAME + REMOTE_DRIVER_VERSION + REMOTE_DRIVER_FIRMWARE + REMOTE_DRIVER_BUS + REMOTE_INTERFACE_SLOT + + These are all like their “LOCAL_” counterparts only for the netserver rather than netperf. + + + + LOCAL_INTERVAL_USECS + + The interval at which bursts of operations (sends, receives, transactions) were attempted by netperf. Specified by the global option which requires –enable-intervals to have been specified with the configure command prior to building netperf. Units: Microseconds (though specified by default in milliseconds on the command line) + + + + LOCAL_INTERVAL_BURST + + The number of operations (sends, receives, transactions depending on the test) which were attempted by netperf each LOCAL_INTERVAL_USECS units of time. Specified by the global option which requires –enable-intervals to have been specified with the configure command prior to building netperf. Units: number of operations per burst. + + + + REMOTE_INTERVAL_USECS + + The interval at which bursts of operations (sends, receives, transactions) were attempted by netserver. Specified by the global option which requires –enable-intervals to have been specified with the configure command prior to building netperf. Units: Microseconds (though specified by default in milliseconds on the command line) + + + + REMOTE_INTERVAL_BURST + + The number of operations (sends, receives, transactions depending on the test) which were attempted by netperf each LOCAL_INTERVAL_USECS units of time. Specified by the global option which requires –enable-intervals to have been specified with the configure command prior to building netperf. Units: number of operations per burst. + + + + LOCAL_SECURITY_TYPE_ID + LOCAL_SECURITY_TYPE + LOCAL_SECURITY_ENABLED_NUM + LOCAL_SECURITY_ENABLED + LOCAL_SECURITY_SPECIFIC + REMOTE_SECURITY_TYPE_ID + REMOTE_SECURITY_TYPE + REMOTE_SECURITY_ENABLED_NUM + REMOTE_SECURITY_ENABLED + REMOTE_SECURITY_SPECIFIC + + A bunch of stuff related to what sort of security mechanisms (eg SELINUX) were enabled on the systems during the test. + + + + RESULT_BRAND + + The string specified by the user with the global option. Units: ASCII Text. + + + + UUID + + The universally unique identifier associated with this test, either generated automagically by netperf, or passed to netperf via an omni test-specific option. Note: Future versions may make this a global command-line option. Units: ASCII Text. + + + + MIN_LATENCY + + The minimum “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + MAX_LATENCY + + The maximum “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + P50_LATENCY + + The 50th percentile value of “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + P90_LATENCY + + The 90th percentile value of “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + P99_LATENCY + + The 99th percentile value of “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + MEAN_LATENCY + + The average “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + STDDEV_LATENCY + + The standard deviation of “latency” or operation time (send, receive or request/response exchange depending on the test) as measured on the netperf side when the global option was specified. Units: Microseconds. + + + + COMMAND_LINE + + The full command line used when invoking netperf. Units: ASCII Text. + + + + OUTPUT_END + + While emitted with the list of output selectors, it is ignored when specified as an output selector. + + +
+
+
+ + Other Netperf Tests + Address Resolution + The Omni Tests + Top + + Other Netperf Tests + Apart from the typical performance tests, netperf contains some tests which can be used to streamline measurements and reporting. These include CPU rate calibration (present) and host identification (future enhancement). + + + CPU rate calibration + CPU rate calibration + + + + UUID Generation + UUID Generation + + + + + + + CPU rate calibration + UUID Generation + Other Netperf Tests + Other Netperf Tests +
+ CPU rate calibration + Some of the CPU utilization measurement mechanisms of netperf work by comparing the rate at which some counter increments when the system is idle with the rate at which that same counter increments when the system is running a netperf test. The ratio of those rates is used to arrive at a CPU utilization percentage. + This means that netperf must know the rate at which the counter increments when the system is presumed to be “idle.” If it does not know the rate, netperf will measure it before starting a data transfer test. This calibration step takes 40 seconds for each of the local or remote systems, and if repeated for each netperf test would make taking repeated measurements rather slow. + Thus, the netperf CPU utilization options and and can take an optional calibration value. This value is used as the “idle rate” and the calibration step is not performed. To determine the idle rate, netperf can be used to run special tests which only report the value of the calibration - they are the LOC_CPU and REM_CPU tests. These return the calibration value for the local and remote system respectively. A common way to use these tests is to store their results into an environment variable and use that in subsequent netperf commands: + LOC_RATE=`netperf -t LOC_CPU` +REM_RATE=`netperf -H <remote> -t REM_CPU` +netperf -H <remote> -c $LOC_RATE -C $REM_RATE ... -- ... +... +netperf -H <remote> -c $LOC_RATE -C $REM_RATE ... -- ... + If you are going to use netperf to measure aggregate results, it is important to use the LOC_CPU and REM_CPU tests to get the calibration values first to avoid issues with some of the aggregate netperf tests transferring data while others are “idle” and getting bogus calibration values. When running aggregate tests, it is very important to remember that any one instance of netperf does not know about the other instances of netperf. It will report global CPU utilization and will calculate service demand believing it was the only thing causing that CPU utilization. So, you can use the CPU utilization reported by netperf in an aggregate test, but you have to calculate service demands by hand. +
+
+ + UUID Generation + CPU rate calibration + Other Netperf Tests +
+ UUID Generation + Beginning with version 2.5.0 netperf can generate Universally Unique IDentifiers (UUIDs). This can be done explicitly via the “UUID” test: + $ netperf -t UUID +2c8561ae-9ebd-11e0-a297-0f5bfa0349d0 + In and of itself, this is not terribly useful, but used in conjunction with the test-specific option of an “omni” test to set the UUID emitted by the Omni Output SelectorsUUID output selector, it can be used to tie-together the separate instances of an aggregate netperf test. Say, for instance if they were inserted into a database of some sort. +
+
+ + Address Resolution + Enhancing Netperf + Other Netperf Tests + Top + + + Address Resolution + Netperf versions 2.4.0 and later have merged IPv4 and IPv6 tests so the functionality of the tests in src/nettest_ipv6.c has been subsumed into the tests in src/nettest_bsd.c This has been accomplished in part by switching from gethostbyname()to getaddrinfo() exclusively. While it was theoretically possible to get multiple results for a hostname from gethostbyname() it was generally unlikely and netperf's ignoring of the second and later results was not much of an issue. + Now with getaddrinfo and particularly with AF_UNSPEC it is increasingly likely that a given hostname will have multiple associated addresses. The establish_control() routine of src/netlib.c will indeed attempt to chose from among all the matching IP addresses when establishing the control connection. Netperf does not _really_ care if the control connection is IPv4 or IPv6 or even mixed on either end. + However, the individual tests still ass-u-me that the first result in the address list is the one to be used. Whether or not this will turn-out to be an issue has yet to be determined. + If you do run into problems with this, the easiest workaround is to specify IP addresses for the data connection explicitly in the test-specific and options. At some point, the netperf tests _may_ try to be more sophisticated in their parsing of returns from getaddrinfo() - straw-man patches to netperf-feedback@netperf.org would of course be most welcome :) + Netperf has leveraged code from other open-source projects with amenable licensing to provide a replacement getaddrinfo() call on those platforms where the configure script believes there is no native getaddrinfo call. As of this writing, the replacement getaddrinfo() as been tested on HP-UX 11.0 and then presumed to run elsewhere. + + + + Enhancing Netperf + Netperf4 + Address Resolution + Top + + + Enhancing Netperf + Netperf is constantly evolving. If you find you want to make enhancements to netperf, by all means do so. If you wish to add a new “suite” of tests to netperf the general idea is to: + + + Add files src/nettest_mumble.c and src/nettest_mumble.h where mumble is replaced with something meaningful for the test-suite. + + + Add support for an appropriate option in configure.ac. + + + Edit src/netperf.c, netsh.c, and netserver.c as required, using #ifdef WANT_MUMBLE. + + + Compile and test + + + However, with the addition of the “omni” tests in version 2.5.0 it is preferred that one attempt to make the necessary changes to src/nettest_omni.c rather than adding new source files, unless this would make the omni tests entirely too complicated. + If you wish to submit your changes for possible inclusion into the mainline sources, please try to base your changes on the latest available sources. (See Getting Netperf Bits.) and then send email describing the changes at a high level to netperf-feedback@netperf.org or perhaps netperf-talk@netperf.org. If the consensus is positive, then sending context diff results to netperf-feedback@netperf.org is the next step. From that point, it is a matter of pestering the Netperf Contributing Editor until he gets the changes incorporated :) + + + + Netperf4 + Concept Index + Enhancing Netperf + Top + + + Netperf4 + Netperf4 is the shorthand name given to version 4.X.X of netperf. This is really a separate benchmark more than a newer version of netperf, but it is a descendant of netperf so the netperf name is kept. The facetious way to describe netperf4 is to say it is the egg-laying-woolly-milk-pig version of netperf :) The more respectful way to describe it is to say it is the version of netperf with support for synchronized, multiple-thread, multiple-test, multiple-system, network-oriented benchmarking. + Netperf4 is still undergoing evolution. Those wishing to work with or on netperf4 are encouraged to join the http://www.netperf.org/cgi-bin/mailman/listinfo/netperf-devnetperf-dev mailing list and/or peruse the http://www.netperf.org/svn/netperf4/trunkcurrent sources. + + + + Concept Index + Option Index + Netperf4 + Top + + Concept Index + cp + + + + Option Index + Concept Index + Top + + + Option Index + vr + + + + diff --git a/doc/netperf_old.ps b/doc/netperf_old.ps new file mode 100644 index 0000000000000000000000000000000000000000..21084d64de48532836543d949e6633f3cc64e68b GIT binary patch literal 1229633 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
(st_<`n9url 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ÜZ9P@bLGBpq(De~ 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ࢪz|&PE&FQ-mc{4JMvogGp?H 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 v?_a6G^>X(wH{SKM literal 0 HcmV?d00001 From 96e206e04c33ba4021e45ac6d6bd79316ea55517 Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 13:55:02 -0700 Subject: [PATCH 3/9] github: update codeql version Signed-off-by: Jesse Brandeburg --- .github/workflows/codeql-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 47a3f71..bfd0a4e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. From f1fb2cac0ce9abeacd7acacdb2785520b6e5c3a7 Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 13:56:48 -0700 Subject: [PATCH 4/9] update workflow to later version Signed-off-by: Jesse Brandeburg --- .github/workflows/c-cpp.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index de565b5..b33e677 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: autotools run: ./autogen.sh - name: configure @@ -21,5 +21,5 @@ jobs: run: make - name: make check run: make check -# - name: make distcheck -# run: make distcheck + - name: make distcheck + run: make distcheck From f4270c64f5bbe19b6d61b2b78e5c14bb2d0a9e15 Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 14:03:14 -0700 Subject: [PATCH 5/9] init codeql to new versions Signed-off-by: Jesse Brandeburg --- .github/workflows/codeql-analysis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index bfd0a4e..e74410e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,11 +39,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -54,7 +54,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v3 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -68,4 +68,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v3 From 94795d740379e042e47b40fbf53a7eb2e383faca Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 14:06:37 -0700 Subject: [PATCH 6/9] install texinfo Signed-off-by: Jesse Brandeburg --- .github/workflows/c-cpp.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index b33e677..df4d316 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -13,6 +13,8 @@ jobs: steps: - uses: actions/checkout@v3 + - name: packages + run: apt-get update && apt-get -y install texinfo - name: autotools run: ./autogen.sh - name: configure From 2fc9c964bff2b78d83511a498c8014afe77472ef Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 14:16:46 -0700 Subject: [PATCH 7/9] install texinfo as sudo Signed-off-by: Jesse Brandeburg --- .github/workflows/c-cpp.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index df4d316..34b905b 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -13,11 +13,14 @@ jobs: steps: - uses: actions/checkout@v3 - - name: packages - run: apt-get update && apt-get -y install texinfo - - name: autotools + + - name: Install Texinfo + run: | + sudo apt update + sudo apt install -y texinfo + - name: Run autotools run: ./autogen.sh - - name: configure + - name: Run configure run: ./configure - name: make run: make From 0b0a1a714675514da34094de525bffb07e0f12fe Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 14:20:07 -0700 Subject: [PATCH 8/9] install texlive as sudo Signed-off-by: Jesse Brandeburg --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 34b905b..a3f6bb2 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,7 +17,7 @@ jobs: - name: Install Texinfo run: | sudo apt update - sudo apt install -y texinfo + sudo apt install -y texinfo texlive - name: Run autotools run: ./autogen.sh - name: Run configure From c6b6c7e14063661c927615a14e04d6403f8184c3 Mon Sep 17 00:00:00 2001 From: Jesse Brandeburg Date: Tue, 19 Mar 2024 14:28:38 -0700 Subject: [PATCH 9/9] dont run distcheck because docs are hard Signed-off-by: Jesse Brandeburg --- .github/workflows/c-cpp.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index a3f6bb2..4cf317a 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -26,5 +26,5 @@ jobs: run: make - name: make check run: make check - - name: make distcheck - run: make distcheck +# - name: make distcheck +# run: make distcheck