有时,我们希望在Ubuntu和OS X服务器上暂停占用大量内存的进程,以临时释放一些RAM用于其他作业。如果我们只担心CPU使用率,那么简单的方法Ctrl-Z
就可以了。但是,我们需要能够释放RAM(通过将其写入磁盘),然后重新启动进程(磁盘-> RAM),或者换句话说,“休眠”单个进程。有关如何执行此操作的任何线索?(最好来自CLI。)谢谢。
7
我猜想,当一个进程处于挂起状态时,如果需要,它的已用内存可以作为交换到磁盘的候选对象,并且应该从内核自动完成。
—
enzotib
@enzotib-我不知道是否会发生,从理论上讲,这听起来不错。但是,我只是做了一个粗略的测试,实际上它是行不通的。暂停“ RAM Eaters”时产生的任何新进程都非常缓慢,而且我没有检测到将RAM交换到磁盘时会发生的任何磁盘活动。
—
Mike Covington
@frozenwithjoy我可以确认确实发生了。我能想到的是,挂起的进程不会逐渐被交换掉的唯一原因是请求的不可交换内存(非常少见,并且(大多数)保留给根用户),或者它所映射的内存与另一个活动进程共享。
—
吉尔(Gilles)'所以
这里可能有用的术语是“检查点”(是的,丑陋的动词形式)。这通常是一个难题,因为程序可能正在使用某些资源,这些资源可能会在程序睡眠时更改状态。处理该问题曾经是Big Iron和小巧的计算机之间的区别之一。
—
dmckee,2011年