"containing" memory-consuming computations
Herbert Valerio Riedel
hvr at gnu.org
Thu Apr 19 18:04:04 CEST 2012
Ryan Newton <rrnewton at gmail.com> writes:
> It sounds like you're interested in running just one client computation at
Actually, I was hoping for a more general solution, which is also
applicable to e.g. a web-server running with `+RTS -N8`, where each HTTP
request spawns a new thread, and multiple requests are supposed to run
in parallel and concurrently.
> Hence you don't have a disambiguation problem -- if the total memory
> footprint crosses a threshold you know who to blame.
I could use that, but then I'd have to clone the process (or start the
processes multiple times requiring to duplicate all in-memory
data-structures), and I'd have the problem that the amount of
parallelism/concurrency is limited by the number of cloned unix
processes. Alas, this works only for some use-cases (like e.g. a
single-user GHCi REPL)
> At least this seems easier than needing a per-computation or
> per-IO-thread caps.
How hard would per-IO-thread caps be?
> By the way, the folks who implement Second Life did an interesting job
> of that -- they hacked Mono to be able to execute untrusted code with
> resource bounds.
More information about the Glasgow-haskell-users