[racket] Engineering Tradeoffs of ANF transforms and the Stateless Server
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.
--
http://www.neilvandyke.org/