[racket] Engineering Tradeoffs of ANF transforms and the Stateless Server

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Fri Dec 30 17:30:29 EST 2011

BTW, when I say "load-balancing" here, I don't mean only between 
physical hosts or virtual hosts, but also among processes on the same 
multi-CPU/core physical machine.

If you are running dedicated server hardware, and you're CPU-bound, each 
CPU/core can service a separately-GC'd server process, so long as you 
can add and address enough RAM to divide up.  This is true whether or 
not you put each server in a VM or in the same OS.  In addition to 
letting the host OS do most of the worrying how about how to best 
leverage multiprocessing, the consequently smaller heaps might also be 
faster to GC.

Neil Van Dyke wrote at 12/30/2011 03:54 PM:
> Noel Welsh wrote at 12/30/2011 02:54 PM:
>> Yes, GC pauses get annoying when the heap gets large. This can lead to
>> timeouts on the client side.
> FWIW, we've talked in the past about GC and Web serving in general 
> (not specific to the Racket Web Server; I was thinking of my SCGI 
> library at the time).
> Separate from any changes from GC research, if GC became a problem for 
> my long-running Web app processes, there are options with the existing 
> Racket version, including scheduling forces of GC cycles to when we 
> think the process would otherwise be idle, making forced GC be part of 
> load-balancing, and even periodically replacing a long-running process 
> with a fresh one.
> That last one would not apply if you're talking about keeping Web 
> serving continuations in-core, of course, except as part of some smart 
> load-balancing solution.


Posted on the users mailing list.