我在网上多次看到有人说应该减少或禁用 swappiness。是这样吗?它有什么作用?我有 2GB 的内存,我应该禁用 swappiness 吗?
答案1
根据维基百科:-
Swappiness 是一个 Linux 内核参数,用于控制交换出运行时内存(而不是从系统页面缓存中删除页面)的相对权重。Swappiness 可以设置为 0 到 100 之间的值(含)。较低的值会导致内核避免交换,较高的值会导致内核尝试使用交换空间。默认值为 60,对于大多数桌面系统,将其设置为 100 可能会影响整体性能,而将其设置为较低的值(甚至 0)可能会降低响应延迟。
根据Ubuntu 维基:-
交换空间是硬盘上的区域,是机器虚拟内存的一部分,是可访问物理内存 (RAM) 和交换空间的组合。交换空间暂时保存不活动的内存页面。当系统决定需要物理内存来运行活动进程并且可用的未使用物理内存不足时,将使用交换空间。如果系统恰好需要更多内存资源或空间,则物理内存中的不活动页面将移动到交换空间,从而释放物理内存用于其他用途。请注意,交换的访问时间较慢,因此不要将其视为物理内存的完全替代品。交换空间可以是专用的交换分区(推荐)、交换文件或交换分区和交换文件的组合。
从我的图表中可以看出,Ubuntu使用的交换空间比应使用的要多得多。您可以轻松关闭/减少交换空间,这在具有超过2GB的内存不用于高内存使用率的工作,例如编辑高清音频/视频/图像,
你的系统滞后,因为 Swappiness 设置为默认值,并且它会写入硬盘,1000次比写入慢内存。
要检查 Swappiness 的当前值,
cat /proc/sys/vm/swappiness
或者
sysctl vm.swappiness
要暂时禁用或设置 Swappiness,在终端中,(++ Ctrl),AltT
sudo swapoff -a
或者
sysctl -w vm.swappiness=10
要永久执行此操作,请/etc/sysctl.conf
使用以下方法将以下行添加到您的文件中sudo nano /etc/sysctl.conf
:-
# CHANGE SWAP
vm.swappiness=x
这里,x
可以是任意数字0到100在哪里:-
0 = disable swap
1 = minimum swap
10 = recommended for >2GB
60 = Linux Default for Swap
100 = Maximum Swap, for >1GB Ram
您不应将 swappiness 值设置为0除非你非常确定你永远不会用完你的内存内存不足(OOM) Killer 将启动并开始杀死占用 RAM 的进程。
以下是更多信息。