[crac] RFR: PID adjustment on checkpoint [v10]
Roman Marchenko
rmarchenko at openjdk.org
Wed Jun 28 08:54:41 UTC 2023
> On restore, there might be PID value conflicts because of small PID values, if it was checkpoint'ed in a container. Therefore, when checkpointing in a container, we need to move PID value for new processes to a particular value to avoid conflicts on restore.
>
> See https://github.com/CRaC/example-lambda/blob/master/checkpoint.cmd.sh#L8 for example.
>
> This PR contains implemented functionality similar to the example above, making this work out of the box. By default, if checkpointing, PID is adjusted only if Java's PID is 1 that means Java is run in a container. To adjust PID manually for a checkpoint'ed process, `-XX:CRaCMinPid=<value>` option should be used along with `CRaCCheckpointTo`. Min `CRaCMinPid` value is 1, max `CRaCMinPid` value is `UINT_MAX`, but it is actually limited by OS's pid_max.
>
> There are the following possible scenarios for CRaC running in a container:
>
> // getpid CRaCMinPid | set_last_pid fork
> // ------------------------------------------------
> // 1 - | yes (default) yes
> // 1 1 | no yes
> // 1 >1 | yes yes
> // >1 - | no no
> // >1 <=getpid | no no
> // >1 getpid< | yes yes
Roman Marchenko has updated the pull request incrementally with one additional commit since the last revision:
Added FIXME for further steps
-------------
Changes:
- all: https://git.openjdk.org/crac/pull/86/files
- new: https://git.openjdk.org/crac/pull/86/files/bae34d3e..87601a1c
Webrevs:
- full: https://webrevs.openjdk.org/?repo=crac&pr=86&range=09
- incr: https://webrevs.openjdk.org/?repo=crac&pr=86&range=08-09
Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/crac/pull/86.diff
Fetch: git fetch https://git.openjdk.org/crac.git pull/86/head:pull/86
PR: https://git.openjdk.org/crac/pull/86
More information about the crac-dev
mailing list