当我打开一个 RAM 密集型应用程序(VirtualBox 设置为 2GB RAM)时,通常会使用一些交换空间,具体取决于我当时打开的其他内容。
但是,当我退出最后一个应用程序时,释放了 2GB 的 RAM,但仍然使用相同的交换空间。
例如,现在,在关闭 VirtualBox 大约两个小时后,我有 1.6GB 的可用 RAM,但仍有 770MB 的交换空间。
如何告诉 Ubuntu 停止使用该交换并恢复使用 RAM?
当我打开一个 RAM 密集型应用程序(VirtualBox 设置为 2GB RAM)时,通常会使用一些交换空间,具体取决于我当时打开的其他内容。
但是,当我退出最后一个应用程序时,释放了 2GB 的 RAM,但仍然使用相同的交换空间。
例如,现在,在关闭 VirtualBox 大约两个小时后,我有 1.6GB 的可用 RAM,但仍有 770MB 的交换空间。
如何告诉 Ubuntu 停止使用该交换并恢复使用 RAM?
Ubuntu 底层的 Linux 内核会根据需要自动将这些页面从磁盘“交换”到 RAM,所以总的来说,我会说让它自然发生。
但是,如果你真的觉得你需要强制它,(我可以看到你想知道系统稍后会响应的场景)你可以暂时禁用并重新启用交换
或者作为单行
这样做时要小心,因为您可能会使您的系统不稳定,特别是如果它的 RAM 已经很低。确保您的系统中有足够的空闲 RAM,否则您可能无法释放交换空间,OOM-Killer 最终会杀死您的一些进程。
请注意,这
swapoff
可能需要一段时间。如果您有很多交换要交换,则尤其如此。仅仅因为交换已分配,并不意味着它正在被“使用”。虽然系统监视器和顶部等程序会显示一些正在分配的交换空间(在您的示例中为 770MB),但这并不意味着系统正在主动换入/换出。
要确定是否有任何东西正在换入/换出,您可以使用该
vmstat
命令。让它运行几秒钟以安定下来并观察si
(swapin) 和so
(swapout) 列。如果什么都没有发生,那么就没有理由担心。这是 running 的输出
vmstat 1
,您可以在其中看到我的机器根本没有交换。然而在这里
top
你可以看到我分配了交换空间:-您还可以将“swappiness”值设置为默认值 60,这样一开始交换就不会变得如此之大。当推荐值为 10 时,为什么运费默认设置为 60 让我感到困惑。来自 Ubuntu SwapFAQ:
通过将此值更改为 10 甚至 0,您可以为具有慢速驱动器的旧系统添加显着且可感知的速度提升。将此值设置为 0 不会关闭 Linux 内核 3.4 及更低版本的交换功能,但对于 3.5+ 版本会关闭,因此如果您想将其保持在最低设置*,您将需要使用值 1*。
我认为没有理由不将其设置为 0,因为任何撞击磁盘的东西都比 RAM 慢。我有 8 个虚拟内核、一个快速 SSD 和 8 GB 内存,我的交换设置为 0。到目前为止,我有 3 个虚拟机正在运行,我的内存使用量是 7.1 GB 的 7.7 GB,我使用的交换空间只有 576KB 952MB,所有系统运行流畅!
来自 Ubuntu SwapFAQ:
以下是检查swappiness,清空swappiness并将swappiness更改为0的基本说明:
检查swappiness值:
临时将交换设置为 0(如 SpamapS 建议的那样):
这将清空您的交换并将所有交换转移回内存。首先通过查看 gnome-system-monitor 的资源选项卡确保您有足够的可用内存,您的可用内存应该大于您使用的交换空间。这个过程可能需要一段时间,使用 gnome-system-monitor 来监控和验证进度。
要将新值设置为 0:
要重新打开交换:
要将swappiness永久设置为0:
sudoedit /etc/sysctl.conf
vm.swappiness = 0
sudo shutdown -r now
#重启系统* 对于内核版本 3.5+,将 swappiness 设置为 0 确实会完全关闭它,如果您想要最低的 swappiness 算法,建议设置为 1。来源:https ://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
我发现清空交换对磁盘速度慢且 RAM 有限的系统有很大帮助。当然,如前所述,执行此操作的方法是运行
sudo swapoff -a; sudo swapon -a
. 这里的问题是,如果内存不足,这样做会导致各种问题。我写了一个脚本,我称之为
toggle_swap
过去几年对我有用的脚本。它在实际禁用交换之前检查是否有足够的可用 RAM。这里是:在与swappiness 混了几天之后,我得出的结论是内核应该留给自己的设备。它知道自己在做什么,并且经过优化,可以为您提供最佳体验。
除非您有一个非常好的理由想要该磁盘回来,否则我会保留它。
通过恢复swappiness,告诉vm不要那么swappy,通过
甚至不尽可能地交换
请在此处阅读交换文件的文档: https ://help.ubuntu.com/community/SwapFaq
如果您的交换空间被占用,它不会影响性能。唯一的性能损失是东西进入/退出交换。如果没有任何东西被换入/换出,那么您不必担心任何事情。