我在正在使用的 VPS 上运行swapon -s
并发现有一个指向的交换分区/dev/null
。
# swapon -s
Filename Type Size Used Priority
/dev/null partition 262144 0 -1
这是否意味着实际上没有交换,并且交换出的内容将丢失?这比完全没有交换更好/更糟吗?
输出df -h
:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/ploop63064p1 20G 1.3G 18G 7% /
none 128M 4.0K 128M 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 26M 40K 26M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 128M 0 128M 0% /run/shm
none 100M 0 100M 0% /run/user
输出cat /etc/fstab
:
# cat /etc/fstab
proc /proc proc defaults 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /run/shm tmpfs defaults 0 0
输出cat /proc/sys/vm/swappiness
:
# cat /proc/sys/vm/swappiness
60
答案1
这可能归结为一些虚拟主机基础设施环境根本不需要设置交换文件/分区。为什么?我不确定不同的虚拟主机基础设施环境是如何设置的,以处理“内存不足”的情况和分页;我想在某些情况下,主机操作系统处理这种情况的方式比客户操作系统自己处理的方式更有效?
例如,看看这篇文章也这篇文章似乎 Chef 需要一个交换文件并将其设置为/dev/null
一种普遍接受但不完善的解决方案,以有效地“中和”某些虚拟专用服务器部署的交换文件/分区设置。
此外,似乎您的系统必须将“swapiness”设置为0
才能使这样的设置正常工作。您可以通过以下命令进行检查以确认这一点:
cat /proc/sys/vm/swappiness
正如解释的那样在此维基百科条目上,“swapiness” 可以在 0 到 100 范围内任意设置:
Swappiness 可以设置为 0 到 100 之间的值(含)。较低的值会导致内核避免交换,较高的值会导致内核尝试使用交换空间。默认值为 60,对于大多数桌面系统,将其设置为 100 可能会影响整体性能,而将其设置为较低值(甚至 0)可能会降低响应延迟。
提出的共同价值观是:
- vm.swappiness = 0:内核只会进行交换以避免内存不足的情况。
- vm.swappiness = 60:默认值。
- vm.swappiness = 100:内核将进行积极交换。
这说明您的 VPS 可能已设置了一些系统设置,以避免因丢失交换而导致严重的内存不足情况。因此,我的下一个建议是联系您的 VPS 提供商并要求澄清一些问题。要详细了解虚拟主机提供商如何就最佳使用交换文件/分区提供建议,请查看这篇文章来自 DigitalOcean。