我有一个 1GB 大小的交换文件/swapfile
,按照所述步骤在 ubuntu swap 常见问题解答中。
在执行 RAM 密集型任务时,我使用“系统监视器”检查内存和交换分区的负载。任务完成后,内存负载会迅速下降……但是,交换分区负载会长时间保持高位,并且只会缓慢下降(见图)。
当调用时sudo swapoff -a && swapon -a
,我可以手动清除交换......但我宁愿知道:
- 为什么 Swap 需要这么长时间才能清除?
- 这会影响性能吗?
答案1
简短的回答:如果您的计算机运行速度不是很慢,那就没问题。
Linux 仅在需要时才会从交换区中获取内容,否则,将未使用的内容从交换区加载到 RAM 中是没有意义的,从而会减少缓存。
检查系统是否受到交换限制的一种方法是检查
vmstat 1
并查看wa
显示进程运行所需时间的列。此外,使用诸如 之类的工具htop
查看有多少进程处于磁盘休眠状态(D
)。
此外,你应该有更多的交换空间。根据掉期常见问题:
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
如果你有 16GB 的 RAM,那么你应该有 4GB 到 32GB 之间的空间