[crac] RFR: PID adjustment on checkpoint [v4]
Anton Kozlov
akozlov at openjdk.org
Fri Jun 23 15:58:35 UTC 2023
On Fri, 23 Jun 2023 13:03:47 GMT, Roman Marchenko <rmarchenko at openjdk.org> wrote:
>> 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 value for new processes starts from 128.
>>
>> To set a custom value, `CRAC_MIN_PID` environment variable should be used.
>> Min `CRAC_MIN_PID` value is 1, max `CRAC_MIN_PID` is not implemented currently.
>
> Roman Marchenko has updated the pull request incrementally with five additional commits since the last revision:
>
> - Implemented vm option instead of env var
> - Added test for the last pid overflow while spinning
> - Re-worked spin_last_pid procedure
> - Re-worked set_last_pid procedure
> - Replacing fork() with clone() for Linux platform
src/hotspot/share/runtime/globals.hpp line 2100:
> 2098: "Path to image for restore, replaces the initializing VM on success") \
> 2099: \
> 2100: product(ccstr, CRaCMinPid, NULL, RESTORE_SETTABLE, \
`product(int, CRaCMinPid, 128`?
Why is it RESTORE_SETTABLE, if the option is ignored on the restore (per the doc below)?
src/java.base/share/native/launcher/main.c line 199:
> 197: int res = 0;
> 198: if (0 > write(last_pid_file, buf, len)) {
> 199: res = errno;
Nit: Extra spaces `= errno`
-------------
PR Review Comment: https://git.openjdk.org/crac/pull/86#discussion_r1239872323
PR Review Comment: https://git.openjdk.org/crac/pull/86#discussion_r1239874641
More information about the crac-dev
mailing list