将后台运行的空闲软件的数据转移到交换内存中,同时在 RAM 中仅保留活动软件的数据?

将后台运行的空闲软件的数据转移到交换内存中,同时在 RAM 中仅保留活动软件的数据?

同时运行 5-6 个程序(浏览器、虚拟机、终端、文本编辑器、文件资源管理器)时,其中一些程序有时会(比如每 15 分钟)处于不活动/空闲状态(不与用户交互、不进行计算等)。是否可以:

  • 将不活动程序的内存数据自动从 RAM 转移到 Swap,并且
  • 当用户开始与软件交互(或变为活动状态/被带到前台)时,立即(或可能延迟几秒钟)“激活”(内存数据从交换到 RAM)。

请记住,交换内存比 RAM 慢,但仍然足够快而不会冻结 UI,转移“RAM 注意力”在许多计算机、不同程序甚至单个程序内部都非常有用(想象一下大量消耗 RAM 的浏览器交换后台打开的选项卡的内存数据,并在 Ram 中仅保留活动选项卡)。

这是现在可以通过任何方式做到的事情吗,或者可能部分已经这样了?

答案1

自动地:

  • 是的,这就是你现在所拥有的:Linux 内存管理器将未使用的程序换出到磁盘,并换入使用的程序。
  • 然而,内核针对服务器,而不是桌面,所以如果你想要内核更早/更晚地交换,你必须调整你的swap 和 swappiness适合您的用例。

手动:

  • 这可以通过使用来实现cgroups:您可以决定哪个程序可以获得或不获得任何 RAM,以及哪个程序比另一个程序具有 CPU 优先级。
  • 简单的方法是:
    • 关闭任何您现在不使用/不需要的程序。
    • 如果需要运行所有这些程序,请购买更多 RAM,因为内核不关心前台或后台应用程序,如果后台正在运行大型 FTP 传输,它将很乐意换出 LibreOffice。

¯\_(ツ)_/¯

相关内容