Hi Vincent,
I was aware of the FAQ item (my similar question long ago may have helped put 
it in the FAQ ;-)
AIUI the main issue is re-establishing the memory mapping, which I think could 
be re-established
by mmap-ing the saved files, if those files were created through mmap in the 
first place (along
with what lsofs might show at checkpoint time.

But in order to capture memory, malloc and the gc would have to be reworked to 
operate on memory by appending
zeroes to mmap-ed files serving as memory pools. If the program is running 
single threaded at the time the
checkpoint method is called, there wouldn't be an issue of restoring blocked 
multiple threads.

I would guess the remaining things would be the state of open files, but IWT 
their state could be saved and
reopens and seeks could be done on resume start-up.

A question would be if the jit discards warmed-up code so that it would not be 
seen on resume, but how would
it know there wasn't going to be an ordinary return from the checkpointing call?

With multiple mmap-ed files serving as memory pools, maybe they could even be 
put in a hash-identified directory
and gzipped for re-setup by the ELF resumption stub.

The idea for an elf stub would be to write a c program with ELF data space such 
that you could copy it and append
resumption data to result in data space seen by the resuming program. Something 
on the idea of peCOFF boot stub
for the linux kernel, but just for the individual pypy-warm-resume (at a 
minimum the gzipped mmap files archive name if
the latter is not actually appended to the stup program).

My hunch is that between the stackless guy Christian and Armin, they could 
figure it out ;-)
Maybe it's worth a re-think, if only to say "no, we really mean no" in the FAQ 
;-)

Regards,
Bengt Richter

On 02/25/2015 07:14 AM Vincent Legoll wrote:
Hello Bengt,

If I'm not mistaken I think this FAQ item should at least partly answer
your question :

http://pypy.readthedocs.org/en/latest/faq.html#couldn-t-the-jit-dump-and-reload-already-compiled-machine-code

Regards

On Wed, Feb 25, 2015 at 1:12 AM, Bengt Richter <b...@oz.net> wrote:

On 02/24/2015 11:17 PM Maciej Fijalkowski wrote:

Hi Richard.


I will respond inline

On Tue, Feb 24, 2015 at 8:18 PM, Richard Plangger <r...@pasra.at> wrote:

hi,

[...]


(1) Is there a better way to get loops hot?


no, not really (you can lower the threshold though, see pypy --jit
help for details, only global)


  PMJI, but I am curious if it would be possible to change pypy to use
mmap'd files for all memory allocations for heaps and stacks
so that the state of hotness and jit state could be captured.

Files could be virtually large, since UIAM physical allocation does
not occur until write, or at least is controllable.

The idea then would be to write programs with a warm-up prelude function,
and then have a checkpointing module with a method that could write a
specially stubbed ELF file along with all the file data, so that the ELF
would be an executable whose _start would get back to the checkpoint module
where everything would be restored as it was checkpointed, and execution
would continue as if just returning from the call to the checkpointing
method,
which would be after the forced warmup prelude.

Sorry if I am intruding.
Regards,
Bengt Richter




_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev






_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev


_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to