美文网首页Linux/网络
给Linux分配多少Swap空间才够呢?

给Linux分配多少Swap空间才够呢?

作者: 胃痛的香蕉1 | 来源:发表于2018-08-24 21:11 被阅读0次

    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访问数据(以微秒为单位),而普通硬盘以毫秒为单位访问数据;
    这意味着RAM比SSD快1000倍,比普通HDD快100,000倍。

    如果应用程序过分依赖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交换空间。

    CentOS建议

    • 如果RAM小于2GB,就分配和RAM同等大小的Swap交换空间。
    • 如果RAM大于2GB,就分配2GB交换空间

    Ubuntu考虑到系统需要休眠,

    • 如果RAM小于1GB,Swap空间至少要和RAM一样大,甚至是要为RAM的两倍大小
    • 如果RAM大于1GB,Swap交换空间应该至少等于RAM大小的平方根,并且最多为RAM大小的两倍
    • 如果要休眠,Swap交换大小应该等于RAM的大小加上RAM大小的平方根

    Ubuntu建议的Swap分配表

    Ram大小 Swap大小 激活Swap后合计大小
    256MB 256MB 512MB
    512MB 512MB 1GB
    1GB 1GB 2GB
    3GB 2GB 5GB
    4GB 2GB 6GB
    6GB 2GB 8GB
    8GB 3GB 11GB
    12GB 3GB 15GB
    16GB 4GB 20GB
    32GB 6GB 38GB
    64GB 8GB 72GB
    128GB 11GB 139GB

    结语

    事实上没有一个真正确定的Swap交换空间分配大小,根据实际情况来吧,如果你不在乎多点交换空间,可以使用两倍于RAM的这种方案。
    你更倾向于使用哪种方案呢?

    相关文章

      网友评论

        本文标题:给Linux分配多少Swap空间才够呢?

        本文链接:https://www.haomeiwen.com/subject/csviiftx.html