休眠是操作系统常见的电源选项,可以保持应用程序的状态,并允许断掉电源再开机后恢复休眠前的状态。其原理是休眠时把计算机运行内存的数据全部转储到磁盘,唤醒时再读取磁盘中的内存镜像。
criu 工具可以让单个进程休眠,不依赖于操作系统的内核,完全在用户空间实现,它是 Checkpoint and Restore in Userspace 的缩写。它适用于以下场景:1)有些程序在运行过程中无法保存数据,必须一次性运行出最终结果,比如 lammps 和依赖它的 openfoam 求解器,为了防止计算过程意外终止,可以人为使用 criu 建立 checkpoint,已备不时之需;2)有些超算限制作业的最长运行时间,到达限制后必须终止,如有需要可以重新提交作业,这时可以使用 criu 建立 checkpoint,方便下次提交;3)云服务器的竞价实例,成本低廉,却有可能被随时终止,服务器收到终止指令后很快就会关机,留给用户处理的时间很短,这时也可以配置 criu 脚本,在计算资源被收回时保存计算状态,在计算资源恢复时,自动恢复计算。
criu 的简单用法如下。
继续阅读“criu 工具让 Linux 进程休眠”