[OpenAFS-devel] performance study
Ken Hornstein
kenh@cmf.nrl.navy.mil
Tue, 15 Feb 2005 15:12:51 -0500
>Fixing this brought the speed from 20-30 MB/s to >110 MB/s (memory to
>memory, LAN). What was funny is that Hartmut ran my program without any
>tweaks and got 114 MB/s immediatly. The only explanation I have is that
>he hit some sort of "sweet spot" or "standing wave" on the two identical
>uni-processor machines he tried it on.
This is comforting. Your results roughly match what I have seen. Maybe
Hartmut has some extra special networking gear we don't know about :-)
>Another one: RX has an implicit limit of a send/receive window of 255
>packets. For trans-atlantic traffic that's not too much with a standard
>MTU of 1416 (or so) bytes. In 1.3.x the variables are 32 bit numbers,
>but the offset for the ACKs is still a u_char and that sits in the
>packet. Perhaps fixable by sending several small ACK packets.
I thought that I found that the maximum window size was capped at 32 packets
(rx_maxSendWindow seems to be set to 32).
>RX over TCP might be interesting - if it scales! I'm a bit worried about
>file servers doing poll() (forget select()) on 10000+ TCP connections...
I think that has been a solved problem for a little while now. Most modern
operating systems have some sort of system to handle lots of descriptors.
Solaris has /dev/poll, the BSD-derived systems have kqueue, and I know that
Linux has something similar.
>Besides that probably much more thought went into TCP than into RX also
>comes the fact that the routers very likely are better tuned to TCP.
That's my thought as well.
--Ken