交换文件需要很长时间才能“清除”

S.A*_*.A. 5 swap ram

我有一个/swapfile1GB 大小的交换文件,按照ubuntu swap faq 中描述的过程进行.

在执行 RAM 密集型任务时,我使用“系统监视器”来检查内存和交换区上的负载。任务完成后,内存负载会迅速下降……但是,交换负载会在很长一段时间内保持较高水平,并且只会非常缓慢地下降(见图)。

系统监控图形用户界面

调用时sudo swapoff -a && swapon -a,我可以手动清除交换...但我宁愿知道:

  1. 为什么 Swap 需要这么长时间才能清算?
  2. 这会影响性能吗?

Ner*_*nux 4

简短的回答:如果您的计算机运行速度不是很慢,那就没问题。

Linux 仅在需要时才会从交换区中获取内容,否则,没有必要将不使用的内容从交换区加载到 RAM 中,从而减少缓存。

检查您的系统是否受到交换限制的一种方法是检查

vmstat 1
Run Code Online (Sandbox Code Playgroud)

并查看该wa列,该列显示进程可以运行之前需要多长时间。另外,使用诸如 之类的工具htop查看有多少进程处于磁盘睡眠状态(D).

另外,你应该多一点交换。根据SwapFAQ

    RAM(MB) No hibernation  With Hibernation  Maximum
     256     256              512               512
     512     512             1024              1024
    1024    1024             2048              2048

    RAM(GB) No hibernation  With Hibernation  Maximum
      1      1                2                   2
      2      1                3                   4
      3      2                5                   6
      4      2                6                   8
      5      2                7                  10
      6      2                8                  12
      8      3               11                  16
     12      3               15                  24
     16      4               20                  32
     24      5               29                  48
     32      6               38                  64
     64      8               72                 128
    128     11              139                 256
Run Code Online (Sandbox Code Playgroud)

如果您有 16GB RAM,则应该有 4GB 到 32GB 之间