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

2012-01-20 Thread Matthias Felleisen
Jay, I agree. This would be a good starting point, so others can find it too. On Jan 19, 2012, at 2:02 PM, John Clements wrote: > I think the below would make a good PLT blog post, perhaps with an opening > paragraph about how much cheaper the stateless web-server can be. > > John > > > On

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

2012-01-19 Thread John Clements
I think the below would make a good PLT blog post, perhaps with an opening paragraph about how much cheaper the stateless web-server can be. John On Jan 3, 2012, at 10:33 PM, Galler wrote: > > > On the subject of porting #lang racket to #lang web-server code > > I provide a few lessons le

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

2012-01-03 Thread Galler
On the subject of porting #lang racket to #lang web-server code I provide a few lessons learned for the archives for the next person to attempt this. 1) Bindings, Serializability , and anonymous functions 1A) the predicate serializable? from racket/serializable is invaluable #lang web-se

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

2012-01-01 Thread Neil Van Dyke
Jay McCarthy wrote at 01/01/2012 04:34 PM: On Sat, 31 Dec 2011 18:37:03 -0500,Neil Van Dyke mumbled: Maybe some student wants to see whether any big wins can be gotten for keeping continuations in addressable virtual memory, if they can tweak the app, Racket compiler, Racket VM and GC, Rack

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

2012-01-01 Thread Jay McCarthy
On Sat, 31 Dec 2011 20:03:02 -0600,Robby Findler mumbled: > I'm not sure if the web-server supports continuation marks or not The stateless transformation does support continuation marks, provided the keys and values are serializable. (Parameters/exception handlers are not supported because the

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

2012-01-01 Thread Jay McCarthy
On Sat, 31 Dec 2011 18:37:03 -0500,Neil Van Dyke mumbled: > Maybe some student wants to see whether any big wins can be gotten for > keeping continuations in addressable virtual memory, if they can tweak > the app, Racket compiler, Racket VM and GC, Racket Web Server, and Linux. Emery Berger h

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

2011-12-31 Thread Robby Findler
Nice! (as you can tell, I didn't see that when I wrote my first reply to you) Robby On Sat, Dec 31, 2011 at 9:22 PM, Galler wrote: > Section five > > "Although the continuation-marks procedure has been a part of PLT Scheme for > years, we have not yet found a use for it" > > I think we've f

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

2011-12-31 Thread Galler
Section five "Although the continuation-marks procedure has been a part of PLT Scheme for years, we have not yet found a use for it" I think we've found a use for it. Robby, Section 5 of your paper notes the function (continuation-marks cont) provides the continuation marks of an arbit

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

2011-12-31 Thread Galler
Robby, Section 5 of your paper notes the function (continuation-marks cont) provides the continuation marks of an arbitrary continuation at time of reification. Illustrative code snippet below That certainly takes care of a lot of the problems associated with implementing a solution to chai

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

2011-12-31 Thread Robby Findler
FWIW, this is essentially re-implementing dynamic-wind (but it is not too difficult if you are familiar with continuations). One thing to watch out for: the lists of continuation marks will, in some cases, share a tail. In that case you'll want to avoid exiting and re-entering the same things. Also

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

2011-12-31 Thread Galler
Robby, Thanks Not at all opaque. I was experimenting with that earlier this afternoon, as below. Actuallly, the way you phrased it helps clarify something I was struggle with. A very useful and valuable suggestion. I think that may very well be plan B. R./ Zack (define (nextproc) ;n

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

2011-12-31 Thread Robby Findler
I'm not sure if the web-server supports continuation marks or not, but if it does, you could use continuation marks to note what the exit and entry operations are, and then when you would do a continuation jump, first grab the continuation marks from one side, do the jump, grab the continuation mar

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

2011-12-31 Thread Galler
Sorry, should have included a brief example. Here's an example of what I've implemented, which is just Harel's hierarchical state machines You can create a Hierarchical State Machine by defining individual nodes in a flat file, as below. each node has 6 keyword parameters , state, parent, e

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

2011-12-31 Thread Galler
Shiri, While AJAX and client-side continuations enable significant client-side computational complexity, I think they complement vs. eliminate the need for server-side complexity. I'm in pursuit of both (1) server complexity and (2) server-side statelessness I could achieve (1) by giving

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

2011-12-31 Thread Neil Van Dyke
Shriram Krishnamurthi wrote at 12/31/2011 05:33 PM: That's a fine position in theory, but I doubt it works well in practice even today. When Jay talks about 3-4 GB, he doesn't mean over the course of a conference -- that could sometimes add up in just a few hours. No amount of cheap RAM is goin

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

2011-12-31 Thread Shriram Krishnamurthi
That's a fine position in theory, but I doubt it works well in practice even today. When Jay talks about 3-4 GB, he doesn't mean over the course of a conference -- that could sometimes add up in just a few hours. No amount of cheap RAM is going to combat that. But, as I said, in an Ajax world th

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

2011-12-31 Thread Neil Van Dyke
Regarding paging... The only three situations in which I consider paging acceptable nowadays on workstations and servers, when a handful of dollars buys you a few GB RAM: 1. For resilience in exceptional/emergency situations, when the alternative would be an OOM kill or a crash. 2. When an a

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

2011-12-31 Thread Shriram Krishnamurthi
On Fri, Dec 30, 2011 at 2:54 PM, Noel Welsh wrote: > On Tue, Dec 27, 2011 at 9:26 PM, Galler wrote: >> I note that no one has discussed throwing a significant amount of physical >> memory at the problem. >> >> Empirically, is that because garbage-collection of a large heap creates its >> own perf

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

2011-12-30 Thread Galler
Jay, Thanks very much for the answer. My current thinking is that the dynamic-wind described on page 17 of Friedman's Constraining Control may provide enough of dynamic-wind's functionality for my needs. It doesn't appear to have any of the forbidden constructs* of the web-server language. and

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

2011-12-30 Thread Jay McCarthy
There's no way I know of that will support dynamic-wind. In the case of with-handlers, the problem is that with-handlers compiles to a use of with-continuation-mark that the transformation supports, but uses a mark key that is not serializable. In principle, dynamic-wind could have been implemente

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

2011-12-30 Thread Neil Van Dyke
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

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

2011-12-30 Thread Neil Van Dyke
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

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

2011-12-30 Thread Noel Welsh
On Tue, Dec 27, 2011 at 9:26 PM, Galler wrote: > I note that no one has discussed throwing a significant amount of physical > memory at the problem. > > Empirically, is that because garbage-collection of a large heap creates its > own performance problems? Yes, GC pauses get annoying when the hea

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

2011-12-30 Thread Galler
FYI, C-level implementation appears to be in src\fun.c, line 7722 as *scheme_dynamic_wind Jay, ->dynamic-wind issue -- The short answer is the code I'm working on is an implementation of Harel's hierarchical state machine formalism. I hesitate to provide a long ans

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

2011-12-30 Thread Galler
Jay, ->dynamic-wind issue -- The short answer is the code I'm working on is an implementation of Harel's hierarchical state machine formalism. I hesitate to provide a long answer as I fear it would be an imposition on your time and goodwill. Though I'm happy to provid

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

2011-12-28 Thread Jay McCarthy
On Tue, Dec 27, 2011 at 2:26 PM, Galler wrote: > I'm nearing completion of a web application with stateful server > continuations, and am thinking about future scalability. > > If we limit the discussion to the specific problem of retention of > server-side continuations in gc'd memory (and not to

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

2011-12-27 Thread Galler
I'm nearing completion of a web application with stateful server continuations, and am thinking about future scalability. If we limit the discussion to the specific problem of retention of server-side continuations in gc'd memory (and not to whether server-side continuations are of value) I