[Fwd: Network performance on Mac and Linux]

John M McIntosh johnmci at smalltalkconsulting.com
Tue Aug 30 04:49:57 UTC 2005


Don't forget we added the feature to alter socket options via a  
primitive call.
Applications could set TCP_NODELAY as needed.

FYI the unix ones supported are below (from the source code).

static socketOption socketOptions[]= {
   { "SO_DEBUG",                SOL_SOCKET,    SO_DEBUG },
   { "SO_REUSEADDR",            SOL_SOCKET,    SO_REUSEADDR },
   { "SO_DONTROUTE",            SOL_SOCKET,    SO_DONTROUTE },
   { "SO_BROADCAST",            SOL_SOCKET,    SO_BROADCAST },
   { "SO_SNDBUF",            SOL_SOCKET,    SO_SNDBUF },
   { "SO_RCVBUF",            SOL_SOCKET,    SO_RCVBUF },
   { "SO_KEEPALIVE",            SOL_SOCKET,    SO_KEEPALIVE },
   { "SO_OOBINLINE",            SOL_SOCKET,    SO_OOBINLINE },
   { "SO_LINGER",            SOL_SOCKET,    SO_LINGER },
   { "IP_TTL",                SOL_IP,        IP_TTL },
   { "IP_HDRINCL",            SOL_IP,        IP_HDRINCL },
   { "IP_MULTICAST_IF",            SOL_IP,        IP_MULTICAST_IF },
   { "IP_MULTICAST_TTL",            SOL_IP,        IP_MULTICAST_TTL },
   { "IP_MULTICAST_LOOP",        SOL_IP,        IP_MULTICAST_LOOP },
   { "TCP_MAXSEG",            SOL_TCP,    TCP_MAXSEG },
   { "TCP_NODELAY",            SOL_TCP,    TCP_NODELAY },

On 29-Aug-05, at 12:24 PM, Andreas Raab wrote:

>
>
> -------- Original Message --------
> Subject: Network performance on Mac and Linux
> Date: Mon, 29 Aug 2005 15:15:41 -0400
> From: David P. Reed <dpreed at reed.com>
> To: David A. Smith <davidasmith at bellsouth.net>,   Andreas Raab  
> <Andreas.Raab at SqueakLand.org>
>
> I'm sure you'd be as excited as I am to hear that I finally found the
> last piece of the network performance issue I've been chasing on  
> the Mac
> and Linux.
>
> Over the weekend, I built a Mac VM with the same Socket improvements
> that I had done on Windows and Linux.   It had the same
> flaws as the Linux code (not surprisingly, since the SocketPlugin  
> source
> code is identical).
>
> The pieces of the puzzle that were Mac/Unix specific were:
>
> 1) the rate of polling for I/O events was once per 200 milliseconds,
> hard coded into checkForInterrupts part of the interpreter.  (Windows
> Socket I/O didn't depend on this since it uses high-priority  
> threads to
> wait for I/O).
> I changed it to once per 1 millisecond.   This reduced the delay from
> well over 200 milliseconds to about 32 msec., averaged over a  
> number of
> packets.
>
> 2) The unix driver didn't set TCP_NODELAY as a socket option by  
> default,
> but Windows did.  I changed the plugin to do this. This cut the  
> measured
> end-to-end delay on packets from 32 msec. to < 1 msec.
> (Gaah - I had just assumed that this was done compatibly, and hadn't
> checked for it).
>
> So I will soon (tonight) have 3 VMs that have higher performance TCP
> network code.  They should support the VP2PPN layer cross-platform.
>
> I'm wondering whether TCP_NODELAY should be default on or off for
> Squeak.   The default should be the same on ALL platforms, in any  
> case,
> and documented.   For "real-time" stuff like Croquet and VoIP,  
> TCP_NODELAY
> should be on (as it was for Windows).   For batch file transfer,
> TCP_NODELAY should be off, because it helps by packing packets full  
> of data.
>
>
>
>
>
>
>
>
>
>
>
>

--
======================================================================== 
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
======================================================================== 
===




More information about the Vm-dev mailing list