交换内存通常是一种“设置好后遗忘”的事情。大多数企业环境已在系统中内置了交换功能,并且除非明显存在可用内存不足或者由于OOM杀手(内存不足)错误导致服务器崩溃,否则不会操纵这些内存缓存。但是,在某些情况下,可能会导致管理员需要手动清除系统交换。如果您遇到这种情况,那么您来对地方了。本文讨论了这种情况和所需的解决方案。
有时,即使有可用的RAM,系统也会使用较高百分比的交换内存。罪魁祸首是系统的“混乱”。是的,您没看错……生气。因此,既然您知道了术语,就可以开始研究它的含义了。Swappiness是指内核参数,负责系统将数据从RAM移至交换内存的数量和频率。
默认值为swappiness
60;默认值为60。但是,您可以手动将其设置为0-100。较小的值几乎不会发生交换,而较高的值会引起非常积极的交换。值为零将导致完全不发生交换,因此,如果要在不关闭交换的情况下将交换最小化到最低值,则应将其设置为至少一个。
如果您想改变系统的可交换性,则该过程非常简单。您可以通过运行以下命令来检查当前的交换设置:
$ cat /proc/sys/vm/swappiness
它看起来应该像这样:
现在,您可以看到我的系统的swappiness
值为30。要更改该值,您需要使用以下命令:
$ sudo sysctl vm.swappiness=x
(where x is the swap value you wish to set)
要验证您设置的值,只需对swappiness
您之前查看的文件进行分类以找出原始值。轻松的一天。既然您了解了控制我们系统上交换行为的基本参数,那么您将准备学习在出现这种情况时如何清除该内存。这是您终端生活中的第一次,这里的事情将变得很容易。
要清除系统上的交换内存,您只需要循环掉交换即可。这会将所有数据从交换内存移回RAM。这也意味着您需要确保您有RAM来支持此操作。一种简单的方法是运行'free -m'来查看交换和RAM中正在使用的内容。关闭电源后,您可以等待任意时间(约30秒)以完成操作时间,然后重新打开交换器电源。这将清除交换内存缓存并重新启用它。这是您需要的所有命令!
Check space: # free -m
Disable swap: # swapoff -a
Wait approx 30 sec
(use free -m to see the amount of swap used/available decrease over time)
Enable swap: # swapon -a
希望,如果您发现自己需要这种修复,此快速提示可以帮助您清除系统交换内存。
有关交换空间的更多信息,请参阅我的文章,此处概述了基础知识。