什么时候交换移回物理内存?

Zty*_*tyx 8 memory swap swapping

什么时候交换移回 Linux 中的物理内存?是否仅按需提供,即。什么时候需要?或者当计算机不处于高负载时,swap 是否缓慢转移到物理内存?

Ign*_*ams 7

一经请求。事实上,Linux 会在空闲时缓慢地将物理内存转移到交换区(参见:“交换区”)。


Jac*_*zny 7

在常规操作期间,交换中的数据按需加载到内存中,正如其他人回答的那样,但发生这种情况时还有另一种情况:当交换空间被禁用时,假设有足够的物理内存来加载整个交换内容。

做就是了:

swapoff -a
Run Code Online (Sandbox Code Playgroud)

…并且您所有的交换数据都将“返回”到内存中。副作用是磁盘缓冲区/缓存可能会被刷新。

有时可能需要这样做swapoff -a ; swapon -a,例如在一些有问题的内存泄漏进程之后,在崩溃之前,将更重要的进程清除 - 以确保系统中运行的任何进程都加载到内存中并且不会等待交换几分钟。


Dav*_*ett 7

正如其他人指出的那样,页面只会在需要时(按需)复制回 RAM,而不是占用可能更好地用于缓存/缓冲区的 RAM。

页面被复制回 RAM 而不是移动这一事实很重要,如果您不知道,可能会导致混淆。除非根本不再需要页面(即页面完全释放),在 RAM 中更改(因此交换中的副本不再正确),或者交换空间不足(并且打开- 需要磁盘块来交换一些其他页面)。这样,如果将来需要再次换出页面,则不需要磁盘写入,因为内核知道磁盘上已经有一个好的副本 - 当可用 RAM 变得非常低但交换空间不是也时,这可以大大减少“颠簸”拥挤。

您可以看到当前在 RAM 和交换位置中有多少页面cat /proc/meminfo- 该SwapCached行是当前在 RAM 和磁盘上的页面中的数据量。如果您认为您当前的交换使用它比您预期的要高,请检查 SwapCached 值,因为这可以很好地解释差异。