Mik*_*ton 23 process memory suspend
有时,我们希望暂停 Ubuntu 和 OS X 服务器上的内存密集型进程,以暂时释放一些 RAM 用于其他作业。如果我们担心的只是 CPU 使用率,那么简单的方法Ctrl-Z就行了。但是,我们需要能够释放 RAM(通过将其写入磁盘)然后重新启动进程(磁盘 -> RAM)或换句话说“休眠”单个进程。关于如何做到这一点的任何线索?(最好来自 CLI。)谢谢。
没有用于休眠单个进程的通用工具,只有整个系统。
但是,如果您不关心进程映像在重新启动后无法保留,则可以使用内置工具将进程映像保存到磁盘:交换。确保你有足够的交换空间,如果有内存压力并且进程不活跃(例如因为它被挂起),它的内存将被换出。
如果您知道该进程很可能会长时间处于非活动状态,并且您在某个时候需要快速响应时间,则可以通过在内存中分配大量 RAM 来强制释放大量 RAM短期过程,例如
perl -e '$tmp = "a" x 999999999' # allocate about 1GB
Run Code Online (Sandbox Code Playgroud)
您无法控制换出的内容,因此其他进程可能会被换出。在 Linux 上,您可以通过强制访问它映射的页面来换回一个进程。此答案中的脚本将执行此操作:将进程映射的所有页面加载到内存中(请注意,这包括打开的文件;您可以根据映射信息有选择地遍历区域,以避免交换您知道不需要的数据,请参阅此答案以获取更多信息)。