English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
Native executable symtable
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-11-22 (03:25)
From: skaller <skaller@u...>
Subject: Re: [Caml-list] Native executable symtable
On Mon, 2004-11-22 at 10:30, Richard W.M. Jones wrote:
> On Mon, Nov 22, 2004 at 07:29:51AM +1100, skaller wrote:
> > However consider also a second problem with mod_caml: unloading.
> > That's also essential for a long running process, and can't be done,
> > even in the bytecode interpreter. There were *also* patches
> > made for that (mods to the garbage collector to allow code
> > to be collected).
> This isn't actually much of a problem with mod_caml.  Deployments of
> Apache should limit the number of HTTP requests that a single Apache
> child can handle (MaxRequestsPerChild), after which the child exits.
> This parameter is commonly set low with mod_perl also, since Perl has
> several "issues" with running over long periods of time - it was
> designed for short command line scripts after all.

Ah, I see. So Apache is hacked to support broken module
implementations.. :)

There are other applicatins where this isn't possible,
for example Felix was originally designed for a telco
environment running say 20 CPU's, one thread per CPU,
but millions of 'micro' threads (one per phone call).

Restarting one thread in such an environment is possible but messy:
you either need to make the microthreads mobile so you can
move them from one CPU to another, or you have to be
willing to wait 20 minutes whilst some person who likes
long winded speeches (like me) finishes their call.
(Or just disconnect them .. :)

But basically you want to be able to run forever,
even upgrading the call handling logic whilst the
process is running. Total code use here isn't
the issue so much as dynamic upgrading -- the main
reason for unloading isn't to save memory, so much
as to be sure no one is using an old version
which happened to credit your account instead of
debiting it due to a bug .. :)

Anyhow to some extent I sympathise with the Ocaml team,
in that just saying 'dynamic loading of native code'
isn't a full answer. It promises something some programmer
not fully understanding it may try to use only to find
later that it isn't suitable because there are some hard
to understand compromises (eg insecure unloading, different
behaviour on different platforms, etc ..)

BTW: is mod_caml bytecode that much of a 
performance issue for web service, compared
with Python,Php, Perl etc?

John Skaller, mailto:skaller@users.sf.net
voice: 061-2-9660-0850, 
snail: PO BOX 401 Glebe NSW 2037 Australia
Checkout the Felix programming language http://felix.sf.net