![Linux 系统中交换区的大小有关系吗](https://linux22.com/image/1440971/Linux%20%E7%B3%BB%E7%BB%9F%E4%B8%AD%E4%BA%A4%E6%8D%A2%E5%8C%BA%E7%9A%84%E5%A4%A7%E5%B0%8F%E6%9C%89%E5%85%B3%E7%B3%BB%E5%90%97.png)
如果 Linux 中的交换区域大小设置得太小(比如 1Gb),而主 RAM 又太大,这有关系吗128Gb
?
我们是否应该始终将交换区域的数量设置为 RAM 数量的两倍?
更新:
嗨,谢谢大家回答这个问题。事实上,我有这个问题是因为我们在使用小型集群系统时遇到了一些问题。问题发布在这里下面这张图是这个小集群里部分计算机的一些信息。
是MEMTOT
该机器的RAM总量, 是SWAPTO
该机器的SWAP区域总量, 是SWAPUS
SWAP区域的使用量。如图所示,SWAP的使用量确实很少。
当尝试解决发布在这里,不知道是不是SWAP区域设置过小了,只是1Gb
相对于128Gb
,如图。于是就有了这个问题。抱歉在原帖中没有把整个背景信息贴出来。之前我们也想过,如果RAM很大,可以把SWAP设置小一点。我们试过把 的SWAP设置为c0148
,16Gb
问题好像没出现(也许要长期观察它们的状态才能下这个结论)。
我们不是 Linux 系统的专业人士,我们无法解释为什么会发生这种情况。很可能这是一个集群系统,SGE 正在管理每台机器的资源,并且它需要有相对较大的 SWAP,因为该机器可能被许多用户提交的许多作业使用。
另外,如果将SWAP的数量设置过大,会引发什么其他问题也是值得考虑的。
答案1
Linux 内核有一个设置来控制交换的使用频率,称为swappiness
,描述如下https://unix.stackexchange.com/questions/88693/why-is-swappiness-set-to-60-by-default。
swappiness 为零表示只有系统内存不足时才会使用交换。swappiness 为 100 则强制程序立即使用交换。
按照您喜欢的方式调整系统,但拥有 128 GB 的 RAM 不太可能让您的系统轻易耗尽内存,因此拥有 2/4 GB 的交换空间就足够了。不建议运行没有交换分区的系统,但这是可能的。
我认为交换区域为 RAM 大小两倍的规则已经过时了,并且只在 RAM 约为 1 GB 且始终处于满 RAM 使用边缘的系统上才有用。
答案2
我认为 2x 经验法则已经过时了。我们的工作站有 16GB 内存,我们通常只使用其中的 25% 左右,很少使用超过 50%。因此,就我们的目的而言,我们不使用任何交换空间。
既然你必须决定创建多少交换空间,而且理论上你选择的任何数字在某个时候都不够,那么为什么不选择 0 呢?或者 - 为什么不安装更多 RAM?
我相信这是一个非常个人化的决定,取决于你的计算机的使用方式和它有多少 RAM。
答案3
除非您要执行一些消耗内存的计算,否则根本不需要交换(但最好有较小的交换分区)。但是当您要使用挂起到磁盘时,需要有交换 > 内存。