erestart#
系统命令#
erestart - 调度器用于重新启动检查点作业的定制化命令
概要#
erestart [-c] [-f] checkpoint_dir
erestart [-h | -V]
描述#
erestart 是一个接口,用于重新启动已执行检查点的作业。
作业将使用保存在 checkpoint_dir/last_jobID 中的检查点文件重新启动。作业将被重新提交, 分配一个新的作业 ID,并使用新的作业 ID 将检查点目录重命名为 checkpoint_dir/new_jobID。
erestart#
erestart 位于 CB_SERVERDIR (/opt/skyformai/sbin)。
erestart 将已执行检查点操作的作业的进程 ID 和进程组 ID 发送给 erestart.default。 erestart 会设置环境变量 CB_RESTART_PID 和 CB_RESTART_PGID。
erestart 会将作业重启请求发送给 erestart.default 或您定义的自定义 erestart 方法。 通信通过概要中所示的通用语法实现。
erestart.default#
erestart.default 位于 CB_SERVERDIR 目录下,是指向 erestart.*method* 的链接。 erestart.default 会重启该作业。
erestart.method_name#
erestart.*method_name* 是一个自定义的 erestart 应用,其中 method_name 与其对应的 echkpnt.*method_name* 中指定的名称相同。
erestart.method_name 位于 CB_SERVERDIR 目录下。所有需要运行自定义 echkpnt 和 erestart 程序的用户都必须能够访问检查点方法目录。
erestart.method_name 必须支持概要中描述的语法。
erestart.method_name 创建文件 checkpoint_dir/$CB_JOB_ID/.restart_cmd,并将重新启动作业或进程组的命令写入此文件中,格式为 “CB_RESTART_CMD=restart_command”。 CB_RESTART_CMD 必须使用引号 (“)。
erestart 会尝试在 .restart_cmd 中查找用于重新启动作业的命令。如果找不到该命令, 它将使用原始作业文件和命令来重新启动作业。原始作业文件是在作业提交时在检查点目录中创建的。
如果 erestart 在 .restart_cmd 中找到用于重新启动作业的命令,它将调用该命令来重新启动已设置检查点的作业。
erestart.method_name 必须能够访问用于启动作业的原始命令行。
erestart.method_name 必须返回,它不应运行应用程序来重新启动作业。
参数#
如果您的应用程序需要其他参数,您可以使用以下环境变量来得到有关作业的更多信息:
CB_JOBID——分配给要重新启动的作业的新作业 ID
CB_OLD_JOBID——执行检查点后要重新启动的作业的作业 ID。
CB_ERESTART_USRCMD——作业提交时用于启动作业的原始命令。此环境变量由 erestart 设置,并由 erestart.*method_name* 读取。
CB_JOB_STARTER——以实际作业作为参数的可执行程序。仅当为提交作业的队列定义了作业启动器时,此环境变量才存在。
选项#
- -c
此选项仅在某些操作系统(例如 Convex)上受支持。
将执行检查点的进程正在使用的所有文件复制到检查点目录。
- -f
此选项仅用于兼容性,应忽略。
- checkpoint_dir
指定检查点目录。请指定相对或绝对路径名。
当作业执行检查点操作时,检查点信息存储在 checkpoint_dir/job_ID/file_name 中。多个作业可以在同一目录中执行检查点操作。系统可以创建多个文件。
检查点目录用于重新启动作业(参见 crestart)。
- -h
将命令用法打印到标准错误输出并退出。
- -V
将 AIP 发行版本打印到标准错误输出并退出。
另请参见#
诊断#
erestart#
如果作业重新启动成功,则退出并返回重新启动的作业的值。
如果作业重启由于 erestart.default 或 erestart.method_name 失败,则退出并返回 erestart.default 或 erestart.method_name 的值。如果作业重启由于其他原因失败,则退出并返回 -1。
erestart.default#
如果使用了 AIP 的默认重启程序 erestart.default,并且作业 成功重启,则 erestart.default 不会在其标准错误中打印除“pid=new_ pid pgid=new_pgid”之外的任何其他消息。如果 erestart.default 在其标准错误中打印了任何其他消息,则 AIP 认为作业重启失败。
erestart.method_name#
如果使用了自定义的 erestart 程序(在检查点方法中, 指定为 csub -k “mydir method=myapp” job1), 如果 erestart.method_name 成功将作业重启命令写入,则退出时返回 0。 文件 checkpoint_dir/$CB_JOB_ID/.restart_cmd,或者如果它故意 不向文件写入任何内容。非零值表示 erestart.method_name 无法重新启动作业(作业重新启动 失败)。
对于用户级检查点,erestart.method_name 必须收集作业的 退出代码。然后,erestart.method_name必须以与作业相同的退出代码退出。否则,作业的退出状态 将无法正确报告给 AIP。内核级检查点的工作方式不同, 不需要来自 erestart.method_name 的这些信息来重新启动作业。
所有写入 stdout 和 stderr 的消息都将定向到 /dev/null 并被忽略。
保存 echkpnt 的标准错误和标准输出消息。 method_name 和 erestart.method_name,在运行 crestart 之前设置 CB_ECHKPNT_KEEP_OUTPUT=y。erestart. method_name 生成的 stderr 输出将被重定向至:
checkpoint_dir/$CB_JOBID/erestart.out
checkpoint_dir/$CB_JOBID/erestart.err