[jsc-dev] Setting a memory limit and inspecting current memory usage

Jérôme Gravel-Niquet jeromegn at gmail.com
Tue Sep 11 11:28:08 PDT 2018


Hey Saam

> - What's your goal here: to use less memory in general? Or to ramp up freeing memory when reaching a certain threshold?
The latter. This is for a multi-tenant environment with a soft-limit
on memory usage. After a while above the that limit we'd terminate the
VM. So we definitely need to know the memory usage at times (could be
a periodic callback, but ideally a function that can be called from
any thread to get the currently used heap.)

> - What kind of platform are you running on? Do you JIT on this platform? 32 or 64 bit?
This would run on linux, 64 bit. We'd be running the same VM + Context
for the same usage over and over, so JIT should kick in (if that's
what you were asking.)

If it helps, here's our specific use-case: We implement an interface
similar to the ServiceWorker API to handle HTTP requests and respond
to them asynchronously, all in JavaScript. We're currently running
node.js and V8 for this: https://github.com/superfly/fly

We also run this in a multi-tenant environment and that's mainly why
we need memory limits. We can enforce the limit ourselves (if we can
inspect the current memory usage), but lowering the threshold for
running the GC would be necessary.


On September 11, 2018 at 1:45:36 PM, Saam Barati
(sbarati at apple.com(mailto:sbarati at apple.com)) wrote:

>
>
> > On Sep 9, 2018, at 11:42 AM, Jérôme Gravel-Niquet wrote:
> >
> >> We have no way of doing this currently.
> >
> > How would you recommend doing it? If there's a way to inspect the
> > memory usage of the VM, I might be able to implement logic for when to
> > garbage collect and such. Sounds sub-optimal though.
> This is indeed suboptimal. The GC already its own control system for this type of thing. You're better off tuning parameters in that control system than writing your own control system on top of it.
>
> Let's start with what you're trying to achieve:
> - What's your goal here: to use less memory in general? Or to ramp up freeing memory when reaching a certain threshold?
> - What kind of platform are you running on? Do you JIT on this platform? 32 or 64 bit?
>
> - Saam
>
> >
> >> I don’t believe we provide API for this. A VM knows its approximate heap size. Are you building your own copy of JSC or linking against the system library?
> >
> > Building my own from webkit's source
> >
> >
> >
> >
> > On September 9, 2018 at 2:25:32 PM, Saam Barati
> > (sbarati at apple.com(mailto:sbarati at apple.com)) wrote:
> >
> >>
> >>
> >>> On Sep 7, 2018, at 11:47 AM, Jérôme Gravel-Niquet wrote:
> >>>
> >>> Hey there,
> >>>
> >>> I just started playing with JavaScriptCore and I think it's a great
> >>> mix of flexibility and easy to use C API.
> >>>
> >>> I couldn't find information on how to limit the memory usage
> >>> (allocations) on a Context or ContextGroup. I'm mentioning these 2
> >>> because there's no way to get at a VirtualMachine from the C API.
> >> I believe the C API lets you access a context group, which is a VM.
> >>
> >>>
> >>> Is there a way to set a memory usage limit with JSC?
> >> We have no way of doing this currently.
> >>
> >>>
> >>> Can I inspect a context or group of contexts for current memory usage?
> >> I don’t believe we provide API for this. A VM knows its approximate heap size. Are you building your own copy of JSC or linking against the system library?
> >>
> >> - Saam
> >>
> >>>
> >>> If these are available through a non-C API, I might be able to create
> >>> my own C wrapper for those.
> >>>
> >>> Thanks,
> >>> Jerome Gravel-Niquet
> >>> _______________________________________________
> >>> jsc-dev mailing list
> >>> jsc-dev at lists.webkit.org
> >>> https://lists.webkit.org/mailman/listinfo/jsc-dev
>


More information about the jsc-dev mailing list