From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <46210cc1ff8b5a4d6bfb44e34bc3dd70@plan9.bell-labs.com> From: presotto@plan9.bell-labs.com To: 9fans@cse.psu.edu Subject: Re: [9fans] network throughput measurements MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="upas-xhredyingzwqatrwtflwsodjrr" Date: Fri, 8 Mar 2002 16:14:58 -0500 Topicbox-Message-UUID: 61ee54e2-eaca-11e9-9e20-41e7f4b1d025 This is a multi-part message in MIME format. --upas-xhredyingzwqatrwtflwsodjrr Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit You might want to send a byte back at the end to make sure the receiver is done. What you're measuring is the amount of time to get the data into the pipeon the write side, not the amount of time to complete the transmission. I don't see that you are measuring latency anywhere. As is, I'ld say you're measuring our inability to do Nagel's algorithm. --upas-xhredyingzwqatrwtflwsodjrr Content-Type: message/rfc822 Content-Disposition: inline Received: from plan9.cs.bell-labs.com ([135.104.9.2]) by plan9; Fri Mar 8 16:07:58 EST 2002 Received: from mail.cse.psu.edu ([130.203.4.6]) by plan9; Fri Mar 8 16:07:57 EST 2002 Received: from psuvax1.cse.psu.edu (psuvax1.cse.psu.edu [130.203.8.6]) by mail.cse.psu.edu (CSE Mail Server) with ESMTP id 484FE19988; Fri, 8 Mar 2002 16:07:54 -0500 (EST) Delivered-To: 9fans@cse.psu.edu Received: from acl.lanl.gov (plan9.acl.lanl.gov [128.165.147.177]) by mail.cse.psu.edu (CSE Mail Server) with SMTP id 2E0D819981 for <9fans@cse.psu.edu>; Fri, 8 Mar 2002 16:05:59 -0500 (EST) To: 9fans@cse.psu.edu From: andrey mirtchovski MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="upas-xtcyirehbwoxftsjoikazpqrxv" Message-Id: <20020308210559.2E0D819981@mail.cse.psu.edu> Subject: [9fans] network throughput measurements Sender: 9fans-admin@cse.psu.edu Errors-To: 9fans-admin@cse.psu.edu X-BeenThere: 9fans@cse.psu.edu X-Mailman-Version: 2.0.8 Precedence: bulk Reply-To: 9fans@cse.psu.edu List-Help: List-Id: Fans of the OS Plan 9 from Bell Labs <9fans.cse.psu.edu> List-Archive: Date: Fri, 8 Mar 2002 14:07:23 -0700 This is a multi-part message in MIME format. --upas-xtcyirehbwoxftsjoikazpqrxv Content-Disposition: inline Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hello, Here are a few numbers with regards to network throughput of p9 and other operating systems. No substantial discussion is presented, but we would like to draw your attention towards the small data size transmission results. The setup is as follows: EtherExpress100 network cards on pentuim 800s for plan9, Netgear GA620 for the GigE tests. The test involves: Sender: for(i = 1; i < somesize; i= i<<1) { buf = mallocz(i, 1); tbegin = nsec(); for(j = 0; j < 10000; j++) write(fd, buf, i); tend = nsec(); /* calculate and print result */ } Receiver: buf[8192]; dnull = open("/dev/null", OWRITE); while((n = read(fd, buf, 8192)) > 0) write(dnull, buf, n); The same code was used for linux/fbsd but all the headers and crappy TCP initialization crud was added in front of it. Also, the Linux/FBSD code uses ftime(2) for calculating the elapsed time, which gives resolutions down to a microsecond. We found no better way to measure elapsed time. Note: we're currently looking at ways to improve the latency penalty for small data size packets and suggestions are most welcome. cheers, andrey --upas-xtcyirehbwoxftsjoikazpqrxv Content-Type: message/rfc822 Content-Disposition: inline --- plan 9 --- 100BaseT: 10000 iterations over data size 1: 0.18 mbits/s... 0.43 seconds 10000 iterations over data size 2: 0.37 mbits/s... 0.43 seconds 10000 iterations over data size 4: 0.87 mbits/s... 0.37 seconds 10000 iterations over data size 8: 1.72 mbits/s... 0.37 seconds 10000 iterations over data size 16: 3.53 mbits/s... 0.36 seconds 10000 iterations over data size 32: 7.18 mbits/s... 0.36 seconds 10000 iterations over data size 64: 14.12 mbits/s... 0.36 seconds 10000 iterations over data size 128: 30.32 mbits/s... 0.34 seconds 10000 iterations over data size 256: 52.98 mbits/s... 0.39 seconds 10000 iterations over data size 512: 92.56 mbits/s... 0.44 seconds 10000 iterations over data size 1024: 94.13 mbits/s... 0.87 seconds 10000 iterations over data size 2048: 94.44 mbits/s... 1.73 seconds 10000 iterations over data size 4096: 94.58 mbits/s... 3.46 seconds 10000 iterations over data size 8192: 94.45 mbits/s... 6.94 seconds 10000 iterations over data size 16384: 93.68 mbits/s... 13.99 seconds 10000 iterations over data size 32768: 92.27 mbits/s... 28.41 seconds 10000 iterations over data size 65536: 92.15 mbits/s... 56.89 seconds GigE: 10000 iterations over data size 1: 0.23 mbits/s... 0.35 seconds 10000 iterations over data size 2: 0.49 mbits/s... 0.33 seconds 10000 iterations over data size 4: 1.09 mbits/s... 0.29 seconds 10000 iterations over data size 8: 2.32 mbits/s... 0.28 seconds 10000 iterations over data size 16: 4.79 mbits/s... 0.27 seconds 10000 iterations over data size 32: 10.01 mbits/s... 0.26 seconds 10000 iterations over data size 64: 19.99 mbits/s... 0.26 seconds 10000 iterations over data size 128: 40.50 mbits/s... 0.25 seconds 10000 iterations over data size 256: 68.98 mbits/s... 0.30 seconds 10000 iterations over data size 512: 133.30 mbits/s... 0.31 seconds 10000 iterations over data size 1024: 160.94 mbits/s... 0.51 seconds 10000 iterations over data size 2048: 170.62 mbits/s... 0.96 seconds 10000 iterations over data size 4096: 171.85 mbits/s... 1.91 seconds 10000 iterations over data size 8192: 168.40 mbits/s... 3.89 seconds 10000 iterations over data size 16384: 158.23 mbits/s... 8.28 seconds 10000 iterations over data size 32768: 153.45 mbits/s... 17.08 seconds 10000 iterations over data size 65536: 152.23 mbits/s... 34.44 seconds IL over 100BaseT: 10000 iterations over data size 1: 0.25 mbits/s... 0.32 seconds 10000 iterations over data size 2: 0.50 mbits/s... 0.32 seconds 10000 iterations over data size 4: 0.98 mbits/s... 0.33 seconds 10000 iterations over data size 8: 1.98 mbits/s... 0.32 seconds 10000 iterations over data size 16: 3.94 mbits/s... 0.32 seconds 10000 iterations over data size 32: 7.84 mbits/s... 0.33 seconds 10000 iterations over data size 64: 15.48 mbits/s... 0.33 seconds 10000 iterations over data size 128: 30.50 mbits/s... 0.34 seconds 10000 iterations over data size 256: 59.05 mbits/s... 0.35 seconds 10000 iterations over data size 512: 90.30 mbits/s... 0.45 seconds 10000 iterations over data size 1024: 94.99 mbits/s... 0.86 seconds 10000 iterations over data size 2048: 94.31 mbits/s... 1.74 seconds 10000 iterations over data size 4096: 95.91 mbits/s... 3.42 seconds 10000 iterations over data size 8192: 95.90 mbits/s... 6.83 seconds 10000 iterations over data size 16384: 95.81 mbits/s... 13.68 seconds --- linux --- GigE on Linux (Alpha): 10000 iterations over data size 1: 6.15 mbits/s... 0.01 seconds 10000 iterations over data size 2: 11.43 mbits/s... 0.01 seconds 10000 iterations over data size 4: 22.86 mbits/s... 0.01 seconds 10000 iterations over data size 8: 49.23 mbits/s... 0.01 seconds 10000 iterations over data size 16: 85.33 mbits/s... 0.01 seconds 10000 iterations over data size 32: 150.59 mbits/s... 0.02 seconds 10000 iterations over data size 64: 256.00 mbits/s... 0.02 seconds 10000 iterations over data size 128: 393.85 mbits/s... 0.03 seconds 10000 iterations over data size 256: 553.51 mbits/s... 0.04 seconds 10000 iterations over data size 512: 546.13 mbits/s... 0.07 seconds 10000 iterations over data size 1024: 549.80 mbits/s... 0.15 seconds 10000 iterations over data size 2048: 547.96 mbits/s... 0.30 seconds 10000 iterations over data size 4096: 549.80 mbits/s... 0.60 seconds 10000 iterations over data size 8192: 549.80 mbits/s... 1.19 seconds 10000 iterations over data size 16384: 549.80 mbits/s... 2.38 seconds 10000 iterations over data size 32768: 553.98 mbits/s... 4.73 seconds 10000 iterations over data size 65536: 554.39 mbits/s... 9.46 seconds 10000 iterations over data size 131072: 554.71 mbits/s... 18.90 seconds 10000 iterations over data size 262144: 556.79 mbits/s... 37.66 seconds 100BaseT on Linux (RH 7.2): 10000 iterations over data size 1: 2.96 mbits/s... 0.03 seconds 10000 iterations over data size 2: 5.93 mbits/s... 0.03 seconds 10000 iterations over data size 4: 12.80 mbits/s... 0.03 seconds 10000 iterations over data size 8: 27.83 mbits/s... 0.02 seconds 10000 iterations over data size 16: 51.20 mbits/s... 0.03 seconds 10000 iterations over data size 32: 91.43 mbits/s... 0.03 seconds 10000 iterations over data size 64: 111.30 mbits/s... 0.05 seconds 10000 iterations over data size 128: 93.94 mbits/s... 0.11 seconds 10000 iterations over data size 256: 93.94 mbits/s... 0.22 seconds 10000 iterations over data size 512: 93.94 mbits/s... 0.44 seconds 10000 iterations over data size 1024: 94.16 mbits/s... 0.87 seconds 10000 iterations over data size 2048: 94.27 mbits/s... 1.74 seconds 10000 iterations over data size 4096: 94.13 mbits/s... 3.48 seconds 10000 iterations over data size 8192: 94.12 mbits/s... 6.96 seconds 10000 iterations over data size 16384: 94.15 mbits/s... 13.92 seconds 10000 iterations over data size 32768: 94.15 mbits/s... 27.84 seconds 10000 iterations over data size 65536: 94.14 mbits/s... 55.69 seconds 10000 iterations over data size 131072: 94.12 mbits/s... 111.41 seconds --- freebsd -- 100BaseT on FBSD (4.4): 10000 iterations over data size 1: 3.64 mbits/s... 0.02 seconds 10000 iterations over data size 2: 7.62 mbits/s... 0.02 seconds 10000 iterations over data size 4: 14.55 mbits/s... 0.02 seconds 10000 iterations over data size 8: 29.09 mbits/s... 0.02 seconds 10000 iterations over data size 16: 49.23 mbits/s... 0.03 seconds 10000 iterations over data size 32: 85.33 mbits/s... 0.03 seconds 10000 iterations over data size 64: 94.81 mbits/s... 0.05 seconds 10000 iterations over data size 128: 93.94 mbits/s... 0.11 seconds 10000 iterations over data size 256: 94.38 mbits/s... 0.22 seconds 10000 iterations over data size 512: 94.38 mbits/s... 0.43 seconds 10000 iterations over data size 1024: 94.16 mbits/s... 0.87 seconds 10000 iterations over data size 2048: 94.11 mbits/s... 1.74 seconds 10000 iterations over data size 4096: 94.08 mbits/s... 3.48 seconds 10000 iterations over data size 8192: 94.05 mbits/s... 6.97 seconds 10000 iterations over data size 16384: 94.05 mbits/s... 13.94 seconds 10000 iterations over data size 32768: 94.08 mbits/s... 27.86 seconds 10000 iterations over data size 65536: 94.08 mbits/s... 55.73 seconds --upas-xtcyirehbwoxftsjoikazpqrxv-- --upas-xhredyingzwqatrwtflwsodjrr--