I fear I'm gonna start a flame war here, but here goes anyway. WARNING: I am NOT speaking for IBM here ... this is all personal experience. I also want to apologize in advance for the length of this post.
Network bandwidth is measured point-to-point. Leland's test using netpipe is probably the best indicator of what this _theoretical_ maximum is. Network bandwidth is always stated _independent_ of IP stack processing time and other interference factors. Gigabit Ethernet means that the maximum transmission rate that the NIC can handle is 1000 Gbps (that's "bits", or 125 MB[ytes]ps). Like any other I/O method, you can't go any faster than your most restrictive bottleneck will allow. FTP is a __TERRIBLE__ benchmark. Remember that besides network bandwidth, other factors that might introduce latency are things like OS scheduling delays/timeslicing on both client and server ends, disk I/O delays on both ends, etc; _not_to_mention_ TCP SYN/ACK traffic, possible retransmissions, packet fragmentation and reassembly, etc. A better but much more complicated way to test if you can't afford (or author) benchmarking software.... The two peers you test with have _got_ to have ZERO routing hops between them: routing can also introduce latency; but with hipersockets, this isn't supposed to be an issue. You may not think that a typical LAN routing latency of 4-6 ms is a big deal, but the more packets that get sent (and ACKed), the more _any_ latency will hurt your final net throughput value. We're talking about possibly thousands of packets, and nK * X ms = seconds, at least. The fastest way to the IP stack that I know of without going raw is ICMP (ping). You can adjust the ping packet size to a value close to and below the lowest MTU size of each of the two peers (you don't want fragmentation involved, either, and IIRC, even large ICMP packets will fragment), then set "flood ping" mode, and let 'er rip. Some peers will refuse to run "flood" mode ... the VM TCPIP peer I have a PPP connection with inserts a 200 ms interval, so you cannot use the total time reported at the end, but the averages work. In these cases, you need to run an "adaptive" ping (-A) instead of a flood (-f). Here's how this works: I figure the maximum packet size to be the MTU - 20 (IP header) - 8 (ICMP header) - 8 (ICMP_ECHO_REQUEST). This works out to 1456 for me. Here's what I get with my VCTC connected VM TCPIP peer, with my MTU set at 1492 on a brand-spanking new z/990 running z/VM 4.4: ================================================================ ping -A -c 100 -s 1456 9.10.11.12 < snip > --- 9.10.11.12 ping statistics --- 100 packets transmitted, 100 received, 0% loss, time 20788ms rtt min/avg/max/mdev = 0.159/0.224/0.344/0.043 ms ================================================================ I can't use "time 20788 ms" as reported: there's 200 ms of interval inserted by the peer for every ping. So instead, I can calculate total time as rtt avg (0.224 ms) times the packet count (100), to yield 22.4 _milli_seconds, or 0.0224 seconds. Since this is round trip (rtt), I can divide this by 2, yielding 0.0112 seconds. The total data transmitted was 1492 bytes X packet count (100), yielding 149,200 bytes. The effective bandwidth calculation now works out to 149,200 ------- = 13,321,428 B/sec 0.0112 (note the big 'B': that's "bytes", not "bits". Little 'b' is supposed to mean 'bits', but this convention isn't always followed) 13,321,428 / (1024 X 1024) = 12.70 MB/s This is a NET figure, and it really doesn't look stellar, does it? IP stack time in and out is still being measured. So we repeat this test with a minimum packet data size (-s 16, yielding a total packet size of 52 bytes), and we get: rtt min/avg/max/mdev = 0.128/0.196/0.456/0.061 ms That's 5,200 ------ = 518 KB/s 0.0098 Big difference, huh? But if we look at these measurements out of context, we're gonna scratch our heads, much like the first inquirer did. We need to look at them _comparatively_ to figure out what the _delta_ is between the two transmission rates. That is, (Where Blarge = bytes xferred in large packet test, Bsmall = bytes transferred in small packet test, Tlarge = time consumed in large packet test, and Tsmall in small packet test), which measures the "effective bandwidth", or the rate at which _additional_ data is transferred, effectively removing the IP stack interference factor: Blarge - Bsmall --------------- = Absolute bandwidth Tlarge - Tsmall Which yields, in my case: 149,200 - 5,200 --------------- 0.0112 - 0.0098 144,000 ------- = 102,857,142 B/sec 0.0014 ... or 98 MB/sec (or 784 Mbps, however you wanna look at it). "Absolute bandwidth" is the actual transmission speed, "in-pipe". It can be reduced by other traffic sharing that same pipe with you as you test. I just ran this test a few minutes ago, in the midst of a production day, which isn't an accurate or wise thing to do. You wanna catch both peers (in this case, VM and the Linux guest) unloaded, like in the middle of the night. The specific numbers I'm reporting don't really mean anything: I just wanted to show how to __really__ measure bandwidth, and not lean on something completely misleading like FTP. I'm sure some math PhD out there (I'm not one) will tear this apart, but it's close enough for government work :-) "Gigabit Ethernet" never meant you'd get 125 MB/s in FTP or NFS. Ever. It means that the net "pipe" can handle at maximum 125 MB/s in or out. Actual transmission speeds, well, YMMV; as you especially see with z/OS. Effective bandwidth (what happens what you put two TCP peers together and see how much data they can transfer) is MUCH lower: always. As far as I know, ping would be the best "poor man's net bandwidth benchmark". Otherwise, specialized benchmark software and a carefully controlled peer pair would be required to measure. I think Stevens discusses using ping to determine bandwidth in "TCP/IP Illustrated", IIRC. Regards, --Jim-- James S. Tison Senior Software Engineer TPF Laboratory / Architecture IBM Corporation "If dogs don't go to heaven, then, when I die, I want to go where they do." -- Will Rogers "Lucius, Leland" <[EMAIL PROTECTED]> Sent by: Linux on 390 Port <[EMAIL PROTECTED]> 05/28/2004 12:40 Please respond to Linux on 390 Port To [EMAIL PROTECTED] cc Subject Re: Did some extensive hipersocket testing/benchmarking.... need help interpreting results. > > 125 Storing data set /it/public/Su810_001.iso > 100% |*************************************| 595 MB 2.68 > MB/s --:-- > ETA > 250 Transfer completed successfully. > 624885855 bytes sent in 03:41 (2.68 MB/s) > Depressing isn't it? I've never been able to get much (or any) better than what you have. I don't know why either. The only thing that's kept me from goin' round the twist was a little program called netpipe. A completely synthetic benchmark program, but it at least showed me that the hipersockets CAN acheive high throughput. I just don't know how to make it happen for FTP between Linux and z/OS. Here's the best rate I got from a run I just did: 7: 39936 bytes 1010 times --> 1274.84 Mbps in 0.000239 sec, avg utime=0.000000 avg stime=0.000226, min utime=0.000000 stime=0.000198, utime var=0.000000 stime var=0.000000 If you find out, I sure would appreciate it if you'd clue me in on the secret. Leland CONFIDENTIALITY NOTICE: This e-mail communication and any attachments may contain proprietary and privileged information for the use of the designated recipients named above. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. ---------------------------------------------------------------------- For LINUX-390 subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit http://www.marist.edu/htbin/wlvindex?LINUX-390 ---------------------------------------------------------------------- For LINUX-390 subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit http://www.marist.edu/htbin/wlvindex?LINUX-390