[crac] RFR: Portable C/R [v2]
Timofei Pushkin
duke at openjdk.org
Tue Jun 4 17:20:59 UTC 2024
> Implements a proof-of-concept "portable mode" for CRaC: a checkpoint-restore mechanism that does not rely on platform-dependent tools like CRIU instead saving VM state in terms of the Java specification (with some HotSpot specifics) — this allows to restore the saved state on machines with different CPU architecture and OS. A demo is available [here](https://github.com/TimPushkin/portable-crac-demo).
>
> Expected downsides compared to the traditional CRaC are restrictions on platform-dependent code usage (e.g. at the moment of checkpoint no native methods can be executing, off-heap memory obtained via `sun.misc.Unsafe` should be released) and somewhat slower restoration speeds (because platform-dependent state, including JIT-compiled code, should be re-created). In the future, Project Leyden may help with the latter.
>
> The mechanism is implemented as an internal part of HotSpot, it gets activated when an empty `CREngine` VM option is passed (i.e. `-XX:CREngine=""`, this is a temporary solution). Main implementation details are described in [this doc](https://github.com/TimPushkin/crac/blob/portable-cr/trimmed/doc/portable-cr.md).
>
> Since this is a proof-of-concept implementation, it currently lacks some important features. E.g. at the moment some early-initialized classes are not restored, most of JDK classes have not yet been properly adapted, checkpointing via `jcmd` is not fully supported, additional tests and optimizations are needed.
Timofei Pushkin has updated the pull request incrementally with one additional commit since the last revision:
Update full name
-------------
Changes:
- all: https://git.openjdk.org/crac/pull/155/files
- new: https://git.openjdk.org/crac/pull/155/files/525d2a8f..de6effb8
Webrevs:
- full: https://webrevs.openjdk.org/?repo=crac&pr=155&range=01
- incr: https://webrevs.openjdk.org/?repo=crac&pr=155&range=00-01
Stats: 0 lines in 0 files changed: 0 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/crac/pull/155.diff
Fetch: git fetch https://git.openjdk.org/crac.git pull/155/head:pull/155
PR: https://git.openjdk.org/crac/pull/155
More information about the crac-dev
mailing list