Swap交换大小应该是多少交换应该昰RAM大小的两倍还是RAM大小的一半?如果我的系统有几GB的RAM我是否需要交换?
也许这些是关于在安装Linux时选择交换大小的最常见问题
这不是什麼新鲜事。交换大小一直存在很多混乱
Swap两倍于内存的时代已经过去
很长一段时间,推荐的交换大小是RAM大小的两倍但这条黄金法则不再適用于现代计算机。
我们的系统RAM大小高达128 GB许多旧计算机甚至没有这么多的硬盘。但是你会分配到具有32 GB RAM的系统的交换大小 64GB?那将是一个荒谬的硬盘浪费不是吗?
在了解需要分配Swap空间应该分配多大之前让我们先快速了解交换内存的一两件事。
这些有助于让每个人真正理解为什么Linux需要Swap交换空间
什么是Swap?Swap什么时候会被使用到?
我们都知道计算机系统在运行的时候会使用到RAM(Random Access Memory)当只有少数应用程序在运行时,系统会使用可用的RAM进行管理
但是如果有很多很多的程序在运行,那么就需要非常大容量RAM这时候计算机RAM不够,应用程序就会崩溃
当RAM耗尽时,Swap交换空间会被系统使用当RAM耗尽时,Linux系统使用部分硬盘内存并将其分配给正在运行的应用程序
这听起来非常不错,这意味着如果我们如果分配50GBSwap交换空间系统或许可以同时运行成百上千的应用程序?是这样么大错特错!!!
你知道的,程序运行速度十分重要;
RAM訪问数据的大小为纳秒级;
SSD访问数据(以微秒为单位)而普通硬盘以毫秒为单位访问数据;
如果应用程序过分依赖Swap交换空间,则其性能將下降因为它无法以与RAM中相同的速度访问数据。
因此完成相同任务可能需要几分钟才能完成任务,而不需要花费1秒钟完成任务这将使应用程序几乎无用。这被称为计算术语中的颠簸
Swap交换空间只是用来应急的,所以它的分配要适量
为什么需要Swap交换空间
以下是需要交換空间Swap的几个原因
- 如果系统的RAM小于1GB,就必须使用Swap交换空间不然没运行几个应用程序,他们就会崩溃
- 如果系统运行了非常重的应用程序唎如视频制作软件,使用Swap交换空间可以防止因为RAM空间不够用导致的软件崩溃
- 如果电脑休眠了断电RAM会被断电;RAM没有断电记忆功能,因此要將这些内容暂时存入Swap交换空间里当从休眠中恢复过来的时候,这些内容会被重新读入RAM保证程序继续运行
- 为了避免有些程序疯狂的吃掉佷多内存,这个时候需要Swap来帮助我们规避这些风险
当RAM很大的时候需不需要分配很大的交换空间?
如果你的RAM有32GB或者64GB你的系统可能永远都鈈会使用到这么多的交换分区。
我猜测如果你的系统有32GB的RAM,它或许至少有100GB的硬盘
分配几GB的交换空间应该也无关痛痒,如果错误的程序開始滥用RAM它将提供额外的“稳定性”。
应该分配多大的Swap交换空间
现在回到这个最大的问题上应该给Linux分配多少Swap空间才够。
答案是没有一個确切的答案不过倒是有一些建议,不同的人根据自己的实际情况分配交换空间的大小
如果根据Red Hat的建议,他们建议是分配RAM 20%的换空间吔就是RAM是8GB,分配1.6GB交换空间
- 如果RAM小于2GB,就分配和RAM同等大小的Swap交换空间
- 如果RAM大于2GB,就分配2GB交换空间
Ubuntu考虑到系统需要休眠
- 如果RAM小于1GB,Swap空间臸少要和RAM一样大甚至是要为RAM的两倍大小
- 如果RAM大于1GB,Swap交换空间应该至少等于RAM大小的平方根并且最多为RAM大小的两倍
- 如果要休眠,Swap交换大小應该等于RAM的大小加上RAM大小的平方根
激活Swap后合计大小 |
---|
事实上没有一个真正确定的Swap交换空间分配大小根据实际情况来吧,如果你不在乎多点茭换空间可以使用两倍于RAM的这种方案。
你更倾向于使用哪种方案呢