强制交换某些已停止的进程

强制交换某些已停止的进程

当我玩 minecraft 时,我的电脑经常需要交换,因为 Google Chrome 也占用大量 RAM。所以,我想手动交换 Google Chrome。我知道我可以使用 SIGSTOP 暂时停止其所有进程,但我如何强制它们交换?或者这是一个坏主意?

答案1

也许可以尝试这样的命令,临时使用大量内存来强制 Chrome(和其他一切)在启动 minecraft 之前进行交换

dd if=/dev/zero conv=block cbs=1024m of=/dev/null bs=32m count=32

答案2

我不会费心;当内存压力很大时,其他进程将自动调出。内核使用“最近最少使用”方案来决定下一步应调出什么,如果你使用 SIGSTOP 停止 Chrome,它将无法使用其任何页面,因此一段时间后,如果 Minecraft 需要更多内存,它们将被踢出 RAM。

答案3

如果你同时使用它们,那可能不是一个好主意。不断添加和删除交换区将导致抖动,这不仅会损坏你的硬盘,还会降低硬盘速度。

据我所知这是不可能的,交换空间由内核管理。不过,如果您有多余的内存,您可以将 ramdisk 安装为目录。

答案4

如果您真的决心在玩游戏时运行 Chrome,那么我建议您深入研究 Chrome 的线程并选择您需要运行的内容(许多单独的线程只是一个不断运行的扩展),并在清除内存后立即冻结其余部分。Chrome 对所有内容进行沙盒处理的方式使其非常稳定,即使您开始冻结部分内容,只要主要部分(本身并不大)没有被弄乱。

我还会考虑加入一些 cpulimit 命令,这样来自 chrome 的处理器需求就不会使其成为缓存的首要任务。

如果您使用 chrome 进行推送通知或任何增量操作,那么如果您只允许它有足够的时间获取所需的信息,那么逐步暂停和恢复它也可能会有很大帮助。

我之前已经多次提出过最后一个建议,即设置一个时间间隔来清除对您而言性能不太重要的进程的 RAM,并将该时间间隔设置在“self.cpulimit”函数下,因为根据您选择的命令,其中一些命令可能会占用大量的 CPU。

相关内容