From: aga@Comtech.com (Alan G. Arndt)
Subject: Re: Sun PC-NFS performance (again)
Organization: Comtech Labs Inc, Palo Alto
Date: Tue, 15 Dec 1992 01:59:51 GMT

I did some more testing with PC-NFS (4.0a) this weekend.  As everyone
seems to be harrasing me about how my SS1+ really wasn't a server and
I should get a REAL machine I went to a friend site with my pc.  I
don't see how you can't call a SS1+ a capable machine when it is 4+
times the machine of a 386 server running Novell.  Yet it only
performs at 1/4 the speed!  Anyhow I connected up to a 4/670-140-64.
Something of a REASONABLE server class machine wouldn't you say?
Well suprise suprise I got EXACTLY the same performance, a paultry
277.7 KB/sec!  And in fact on HIS SS1+ I got 294.2 KB/sec.  The only
reason I can figure his SS1+ was faster is it was on the SAME tap on
the E-NET v.s. the 4/670 being 50+ Meters away through two repeaters.

The fully gorry details of the performance numbers are as follows and
all these performance numbers are on an IDLE, or nearly so Server AND
LAN:

Read/Write Performance	   	        Servers
In KBytes/sec	  Ours                Friends Machines
		SS1+ w/40MB    	   4/670	       	SS1+ w/24Meg
Clients		1.3 GB, 5MB/sec    1.3 GB, 5MB/sec	440 Mb, 5MB/sec 
		SunOS 4.1.1	   SunOS 4.1.3 (STOCK)  SunOS 4.1.1

486-DX50
    SMC8013	277.7 / 166.7	   277.7 / 18.4		294.1 / 14.2	   
    3C509	277.7 / 166.7	   277.7 / 18.4		294.1 / 14.2

486-DX33
    SMC8013	277.7 / 166.7

486-DX25
    SMC8013	277.7 / 166.7

386-DX33
    SMC8013	277.7 / 166.7
    3C501	160   /  90
    3C503	160   /  90

SS1+
File Copies 'cat big || cat > /dev/nul' where big is 10MB
				    14.9 Seconds	15.8 Seconds
				    671 KB/Sec		632 KB/Sec

All PC benchmarks are done with Norton Utilities 6.0 SI Network disk
test.  The same results are also obtained with a simple PC copy to
nul: (within a few percent, i.e. 268 KB/sec by hand on my stopwatch).

The WD8013 Cards obtain the same performance with a PC-NFS specific
driver AND the NDIS drivers.  The PC-NFS specific drivers are smaller
then the NDIS drivers for memory usage.  The 3C509 only works with a
NDIS driver.

Do we notice a PATTERN here?  It CAN'T go faster then 277.7 KB/sec
except in one circumstance which is belived to be because of the
closeness of the machine.

So the PC isn't the limiting factor, the PC's card isn't the limiting
factor, the network isn't the limiting factor and the SERVER ISN'T
the limiting factor, the protocol isn't the limiting factor, in fact
the LOW Level drivers aren't even the limiting factor.  So that only
leaves ONE item, PC-NFS itself.

Now that I have shown all the data I have I will go into what we
found out.  We then used etherfind to watch the packets going across. 
Years ago (5+) with PC-NFS V2.x I watched this transaction and I
could swear it the Sun was sending 8KB blocks in 5 packet bursts and
the pc would receive them and request another block.  HOWEVER,
yesterday we noticed that the PC was only requesting 1K blocks (1166)
bytes.  The request was a healthy 218 bytes as well.  When one
starts to add up the requests and individual 1K bytes I can belive
that the performance is ONLY 277 KB/sec and that the machines are
doing their BEST the get that.  That is why there is a noticeable
difference between 50 Meters away and a machine RIGHT next to it's
client.

We also noticed that the PC was only creating WRITES of apparently
512 bytes (734).

As can be seen bye the last entry the other Suns certainly use the
block size of 8K to the fullest advantage and of course get very
acceptable performance.


raritan = 486-50 PC-NFS
durable = 4/670
certes  = 4/65
picasso = 4/65

       lnth proto source      destination   src port   dst port
Reads
12.66   218  udp raritan 	durable        127       2049
12.66  1166  udp durable 	raritan       2049        127
12.66   218  udp raritan 	durable        127       2049
12.67  1166  udp durable 	raritan       2049        127
12.67   218  udp raritan 	durable        127       2049
12.67  1166  udp durable 	raritan       2049        127
12.67   218  udp raritan 	durable        127       2049
12.67  1166  udp durable 	raritan       2049        127


Writes
 9.62   734  udp raritan	certes	       127       2049
 9.65   138  udp certes		raritan	      2049        127
 9.65   734  udp raritan	certes	       127       2049
 9.68   138  udp certes		raritan	      2049        127
 9.68   734  udp raritan	certes	       127       2049
 9.72   138  udp certes		raritan	      2049        127
 9.72   734  udp raritan	certes	       127       2049
 9.75   138  udp certes		raritan       2049        127
 9.75   734  udp raritan	certes	       127       2049
 9.78   138  udp certes		raritan	      2049        127


Reads
 1.16   194  udp picasso	durable       1021       2049
 1.17  1514  udp durable	picasso       2049       1021
 1.17 *1514  udp 
 1.17 *1514  udp 
 1.17 *1514  udp 
 1.17 *1514  udp 
 1.17 * 934  udp 
 1.17   194  udp picasso	durable       1022       2049
 1.18  1514  udp durable	picasso       2049       1022
 1.18 *1514  udp 
 1.18 *1514  udp 
 1.18 *1514  udp 
 1.18 *1514  udp 
 1.18 * 934  udp 


Now we looked at the manuals and the only option I found was TSIZE
which WAS set at 8Kbytes.  The TSIZE is supposed to be only for
writes but as there is only one option I assumed it might also be
used for the read request size.  It is however obvious that PC-NFS
pay's NO ATTENTION to this parameter and it wasting a tremendous
amount of time dealing with small block sizes.

So what can be done to PC-NFS to get it to use the LARGE block sizes? 
Is there some parameter I have missed?  The SMC8013 cards have
buffers of 16K on the board and certainly could handle 4K blocks if
not full 8K blocks.  The 3C509 cards will stream the data off the
card as it comes in so the block size is irrelavent.  Obviously the
3C501 and 3C503 cards have small buffers and need to continue to
operate in their current configuration.

-Alan Arndt
aga@Comtech.com