我有16GB RAM。我需要32GB交换空间吗?


277

我读过很多地方,交换空间的经验法则是使物理RAM数量增加一倍。但是,32 GB似乎很多。我需要那么多吗?我需要这么多的物理RAM吗?


82
说实话...您甚至不需要SWAP,您已经有16GB的RAM,除非您认真地认为自己将用完RAM,就不需要它。
Uri Herrera

57
这种“经验法则”起源于大多数PC的RAM单位为兆兆字节的时候。十多年来,它一直没有意义,但是……不会……死去!
尼古拉斯·奈特

17
@TheX:也许几年后,当人们看到您的评论时,他们会大笑:)
Benoit

1
尽管两个问题相似,但另一个没有提到休眠状态
Ashu

1
实际上,我意识到它并不那么糟糕,它的swap = RAM而不是swap = 2 x RAM
icc97

Answers:


189

这完全取决于您打算如何使用机器。例如,如果它是Sap服务器,那么是的,我要添加32gb swap(我们在使用128gb ram和32gb swap的盒子)。如果您要处理大量的图片和视频,那么进行一些交换很有意义。32gb可能会过大。

但是我不会说零交换。

万一发生RAM不足的情况-也许打开一个大文件,在firefox中查看一个长期运行的标签,这没关系,在这种情况下,内核OOM杀手将启动并开始杀死应用程序以获取内存。在这种情况下,由于应用程序被杀死,您很可能会丢失数据。但是,如果您有一点交换,那么系统将继续运行,获取交换并允许系统继续运行。随着大量交换的发生,系统会变慢,您会在所有交换用尽之前注意到并进行调查。另外磁盘很便宜,那为什么不进行交换呢?

任何说“您不需要交换”而又不问您对计算机的实际用途的人都在做假设。尽管您可能对吃RAM的计算机几乎不做任何事情,但最好还是在做出“不需要”交换的鲁棒判断之前,先询问有关计划使用它的问题。在我的愚见


16
您能详细说明为什么拒绝零交换吗?其他人似乎都同意,除非我想休眠(我不需要),否则不需要它。
陶Szelei

4
@popey-那么如果系统用完交换掉了怎么办?回到第一广场,在那里。
CVn

11
我有一个拥有8 GB RAM的系统,我可以这样说:每当我有一个程序运行并陷入交换状态时,我的系统几乎都将无响应。最好让OOM杀手运行,而不是不得不强制重新启动。如果您有那么多的RAM,除非您要进行非常繁重的工作(需要GB的RAM),否则就可以了。即使您的工作量很大,通常也有一种不需要交换空间的处理方法(这比应用程序本身合理的大数据集处理效率低)。
Michael Trausch

6
HDD上的空间可能很便宜,但SSD上的空间并不便宜。不像DAM贵,但是仍然。
Mircea Chirea,2012年

4
如果您的系统使用31GB交换空间,而您需要最后一个GB,则它们可能会非常缓慢。恕我直言,如果您经常需要超过2GB的交换空间,则应安装更多RAM。
MartinSchröder2013年

249

这是RedHat的一个很好的建议:推荐的系统交换空间

来自同一链接的摘录:

在过去的几年中,建议的交换空间数量随系统中RAM的数量线性增加。但是,由于现代系统中的内存量已增加到数百GB,因此现在人们认识到,系统所需的交换空间量是该系统上运行的内存工作量的函数。但是,鉴于交换空间通常是在安装时指定的,并且可能很难预先确定系统的内存工作量,因此我们建议使用下表确定系统交换。

当前表(截至2017年12月):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            At least 4 GB                  1.5 times the amount of RAM
64GB of RAM or more           At least 4 GB                  Hibernation not recommended

原始表格:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

76
RAM的平方根,以GB为单位,四舍五入为2的幂。
starblue 2011年

2
“新”表中存在不一致之处-根据指南,16GB的交换空间适用于3​​2GB的系统,但4GB的适用于64GB的系统...
Charlie

1
@Charlie那是因为您不太可能用完64GB RAM的工作内存
。.– poepje

@Charlie与系统内存量无关,与系统内存用完的可能性有关,以及该短缺量将有多大。
Phill Healey

60

啊 这篇文章的答案非常错误,这是Google搜索“多少交换?”的第一个结果。

首先,Ubuntu Swap FAQ是一个很好的参考

这个常见问题解答提出了一个重要的要点,这里没有人提及,那就是(强调我的)

有时,大型程序(如OpenOffice,Neverwinter Nights或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动过程中使用的大量页面仅可用于初始化,然后不再使用。系统可以换出这些页面并为其他程序甚至磁盘缓存释放内存。在这些情况下,交换将用于帮助系统处理任何额外的负载。

因此,交换不只是为了休眠!交换未使用的页面的此活动在某些情况下可能是有益的,而在另一些情况下则是有害的。这是有益的,因为它可以释放内存供系统在其他地方使用,但是在进行换出操作时过于进取,并且换出您确实想要的页面是有害的。在桌面系统上,尤其是这样,在桌面系统上,应用程序可以长时间处于空闲状态,但用户仍希望在恢复性能时立即获得性能。控制这种攻击性的方法称为交换性

Ubuntu交换常见问题在“ 什么是交换性以及如何更改它”进行了简短讨论Ubuntu系统上的默认值为60,而FAQ建议台式机的默认值为10。

因此,我想说,像某些人在此问题上建议的那样,没有一个绝对没有交换空间的系统通常非常重要,除非您知道系统的某些非常特定的使用场景并且非常了解后果它可能有。(个人而言,我不会在没有交换的情况下运行系统)在没有交换的内存不足情况下,系统将开始终止进程​​(通常是导致OOM的进程)


7
支持指向FAQ的链接,并在观点和轶事证据中引入一些理智。
马蒂·弗里德

1
关键是还没有这么大的程序,您的链接与此相反。请参阅此help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F
Anwar,

4
为了减轻内存的负担,我更喜欢zRAM和swappiness = 60,而不是传统的HDD交换。
Barafu Albino

25

可能不是。如果计划休眠计算机(挂起到磁盘),则至少需要16 GB。如果您不休眠,则只需几个GB即可进行交换(最大4-8个)。


2
我一点也没有交换,可以休眠/暂停笔记本电脑。
scribu

8
@scribu这听起来很有趣。我怀疑某个地方可能有交换文件,因为要完全关闭笔记本电脑的电源(即拔出并取出电池),必须保存RAM的内容
bandi

9
使用16gb的ram和4gb的swap进行休眠是很有可能的:您进入休眠状态时只需要使用少于4GB的内存即可。
psusi 2012年

@psusi Linux将尝试压缩内存。更少的交换=更积极的压缩。
Val

16

根据经验,我可以这样说:

对于我使用4GB的内存3年所见,Ubuntu的交换使用量约为60MB,但仅在执行一些非常密集的任务时才使用。几周前,我开始使用内存为16GB的PC,而交换使用率永远保持在0%。我已经完成了多次编译,视频渲染和其他繁重的任务。交换从未改变。甚至没有1KB的更改。

基本上,在Ubuntu中,您拥有的内存RAM越多,使用或需要交换任何任务的可能性就越小。16GB的RAM甚至8GB的RAM绰绰有余。我已经完成了16GB PC 8 Virtualbox PC(每台RAM在1GB到2GB之间)的工作。我已经编译并渲染了720p视频,即使在那种情况下,交换也没有改变。

话虽如此,两倍于内存的内存规则不适用于基于Linux的系统,如果拥有更多内存,则更是如此。但是,您应该具有与ram大小相同的交换大小,或者如果您打算进行休眠,因为休眠过程会捕获ram中的所有内容并将其置于交换状态,这就是为什么您需要一个等于ram大小的最小大小的原因交换。

另一个细节是某些应用程序(不是全部)仍将强制从交换读取。所以多吃点是好事。如果遇到内存不足或OOM的问题,将其完全禁用是非常糟糕的。在这一点上,如果您没有交换,内核将无法交换进出不同的ram应用程序的使用,最终将开始杀死较少使用的ram应用程序。

如果它有助于家用台式机的决策,那么在更新了4年多的答案后,我已经使用了16gb,32gb和现在的64gb ram PC。仅用128MB的交换空间进行的测试表明,除非我想休眠,否则不需要进行较大的交换。我在它们上使用过云环境,lxc,virtualbox,wine,随便你怎么说。我用openshot,kazam,手刹,大胆渲染了视频。我已经使用了gimp,blender,Inkscape甚至整个LibreOffice套件。我什至玩得很尽兴,在任何情况下都没有使用交换。当然,如果最终以一种或另一种方式使用全部ram数量,它将最终被使用,但是通常您拥有的ram越多,所需的交换就越少。

只是我的2美分。


1
伙计,我喜欢您解释和经历的方式...这是一个绝妙的答案
aidonsnous


6

在大多数情况下,我会说您根本不需要任何东西。也许如果您编辑非常大的图像文件,或者其他需要大量内存的应用程序,则可能需要一些。

与您的系统类似,我从未见过在系统上有任何使用。实际上,有一次,我意外禁用了它一两个星期,并且从未发现任何问题。但是我的交换驱动器仍然保留5GB的空间,主要是因为我有超过1TB的可用空间,并且没有按原样使用所有空间。


我记得当我使用Wubi并进入休眠状态时,曾经使用它一次。
弗拉戴珊(Vladashram)2012年

2
如果您使用休眠模式,那可能是一个足够的交换空间来保存计算机状态的好理由。我猜您将永远不需要可用内存量,除非您可能当时使用的足够多而已在使用交换空间。
马蒂·弗里德

3

如果您的RAM高于1GB,通常对于ubuntu就足够了。“交换= RAM x2”规则适用于具有256或128mb内存的旧计算机。

因此1 GB的交换空间通常足以容纳4 GB的RAM。8 GB太多了。



2

仅当您要使用休眠模式进行其余操作时,才需要交换空间,这会浪费硬盘空间。


6
休眠需要交换空间,但不像RAM大小那么大,仅与休眠时的RAM使用量一样大。睡眠不需要任何交换,因为RAM仍处于活动状态并保留数据。
Donny Kurnia

@Donny Kurnia谢谢你,我不知道。但是我的笔记本电脑喜欢在睡眠时使用交换功能。我看是否可以编辑它。
Rens

1
您可以通过禁用交换功能进行实验,sudo swapoff -a然后休眠笔记本电脑。
Donny Kurnia

@Donny Kurnia我已经做到了,而且睡眠仍然有效。
Rens

2

如果您使用休眠模式,则交换空间应至少与物理内存相同。


1

我有一台配备4GB RAM和Ubuntu 16.04的笔记本电脑。引导后,它将消耗大约1GB的RAM,甚至Inkscape(例如)也将无法运行(系统监视器显示超过50%的可用RAM)。 Inkscape冻结 我应用了交换文件后,即使没有使用任何单个字节的交换,它也会按预期运行。运行Inkscape 因此,我建议使用交换分区(或交换文件)。关于它的大小,可以使用david6规则。


1

从Ubuntu的SwapFaq中

为什么需要交换?

内存消耗程序有时,大型程序(例如LibreOffice,Neverwinter Nights或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动过程中使用的大量页面仅可用于初始化,然后不再使用。系统可以换出那些页面,并为其他程序甚至磁盘高速缓存释放内存。在这些情况下,交换将用于帮助系统处理任何额外的负载。

休眠(挂起到磁盘)休眠功能(挂起到磁盘)在关闭计算机之前将RAM的内容写出到交换分区。因此,交换分区至少应与RAM大小一样大。当前在Ubuntu中使用的休眠实现swsusp需要交换或暂停分区。它不能在活动文件系统上使用交换文件。

不可预见的情况可能并会发生不可预见的事件(程序发疯,某些操作所需的空间比您想象的要大得多,或者任何其他不可预测的事件组合)。在这些情况下,交换可能会给您额外的延迟,以弄清发生了什么或完成您正在处理的事情。

优化内存使用情况由于机械硬盘的速度比RAM慢得多(SSD-固态驱动器-存储速度不如物理驱动器慢,但仍比RAM慢),因此当您需要文件(例​​如视频等数据文件)时, Firefox等可执行文件或库),Linux内核将文件读入RAM并将其保存在其中,以便下次需要时,它已经在RAM中,并且数据访问速度更快。RAM中加速磁盘读取的部分称为“缓存内存”。您会注意到,它们在响应能力方面有很大的不同。Linux内核自动将程序保留但未真正使用的RAM移入交换区,以便更好地扩展缓存的内存。

优化交换性能由于交换空间使用磁盘设备,因此在任何使用交换空间的系统中,这可能会导致性能问题,因为系统本身也可能在交换操作所需的同一时间使用同一磁盘设备。减少此问题的一种方法是在不同的物理驱动器上具有交换空间,以便减少或消除对该资源的竞争。

我需要多少交换?

对于少于1GB的物理内存(RAM),强烈建议交换空间应至少等于RAM的数量。另外,由于返回值的减少,建议交换空间最大为RAM量的两倍,具体取决于系统可用的硬盘空间量。

对于更现代的系统(> 1GB),“如果您使用休眠模式”,则交换空间应至少等于物理内存(RAM)的大小,否则,最少需要round(sqrt(RAM)),而最大值两倍于RAM。交换空间比实际使用的空间更多的唯一弊端是要为其保留的磁盘空间。

“收益递减”表示,如果您需要更多的交换空间而不是RAM大小的两倍,则最好添加更多RAM,因为硬盘驱动器(HDD)的访问速度比RAM的访问速度慢约10³,因此大约需要1秒钟,突然耗时超过15分钟!快速固态硬盘(SSD)上还有一分钟多的时间...

示例方案

    RAM(GB) No hibernation  With Hibernation  Maximum
      1      1                2                   2
      2      1                3                   4
      3      2                5                   6
      4      2                6                   8
      5      2                7                  10
      6      2                8                  12
      8      3               11                  16
     12      3               15                  24
     16      4               20                  32
     24      5               29                  48
     32      6               38                  64
     64      8               72                 128
    128     11              139                 256


0

我想你反过来了。交换建议,您需要〜16GB。因此,SWAP应该是实际RAM大小的1/2。但是那仍然是很多空间。取决于您的需要。我想说的是,如果您不使用“休眠”模式,那么如果您有足够的磁盘空间,请保持大约4GB至8GB。由于您有16GB,因此我认为您可能正在使用一台需要强大资源的计算机...因此,拥有16GB到32GB的SWAP可能也会有所帮助。

我有2GB RAM和1GB SWAP。我对此非常满意,但这只是我的意见。查看其他评论/建议,看看他们怎么说。


0

我在这里找不到引用,但如果您要使用需要在RAM中交换整个数据的应用程序,则至少需要“ RAM大小+128 MB”或“ 1.25倍RAM大小”(i忘记了哪一个是正确的),假设您的RAM超过2 GB。如果RAM为2GB或更小,则建议使用两倍于RAM的大小作为交换空间。我在上一个IBM AIX组织中根据IBM的文档遵循了此建议。我相信这对于大多数* nix都是正确的,因为在RAM不足以处理要加载到内存中的数据的情况下,使用swap可以安全地从RAM移出数据。“ free”命令可用于评估实际使用了多少交换。


0

我有一台Mac笔记本电脑,已经使用了几个月。尽管它比Windows好得多,但如果您继续使用,内存的确会增加,尤其是在浏览器中。因此,最终,内存已满。现在,正如其他人所指出的,如果您进行了互换,您可以生存,注意到并杀死某些东西。但更重要的是,如果您进行了交换,则某些页面将被交换出去,您可以继续进行。

因此,如果您打算长时间搁置计算机,则交换是一种释放内存的方法,可帮助您摆脱僵尸垃圾。当然,用3gb填满16g比我需要更长的时间,但这仍然很不错。为此,将使用4Gb。


0

如果是笔记本电脑,则交换空间至少应保持等于RAM的数量,以完全允许休眠。即使是台式机,我仍将保持与RAM相等的数量,但这仅是我自己。它在台式机中几乎没有用。


0

请记住这一点-

对于RAM小于2GB的系统,通常应将交换空间的大小调整为大约2倍的主内存,如果有更多的内存,则应将大约1倍的主内存。

因此,如果您有4 Gb的ram,则永远不需要交换,除非休眠时
所需的Swap约为3-3.5 Gb,不超过此数量
因此,请使用常识,不要浪费磁盘空间


@AnwarShah-抱歉,我没有读过。编辑了我的答案
阿舒(Ashu)2012年

0

如果您要构建非常大的文件,例如,如果您要在笔记本电脑上构建机器翻译系统(是的,为什么要这么做?我可以说我的教授正在使我;-))答案显然是的,实际上在此刻,我很遗憾没有将其设置为32GB交换空间。

对于随便使用Ubuntu来进行办公室工作和互联网使用,您甚至都不会使用2 GB的交换空间,但实际上并没有明确的答案,这完全取决于您要在计算机上执行的操作...


0

信息太多,意见分歧。

我建议的Ubuntu桌面指南:

 amount of RAM      recommended swap    with hibernation
----------------    ----------------    ----------------
 less than 4GB        2x RAM size         3x RAM size
   up to 8GB              4GB             2x RAM size
   up to 16GB             4GB            1.5x RAM size
  16GB or more            4GB           No extra needed

0

似乎没有人提到拥有大量交换空间的另一个原因是,使系统明显变慢,而不是在开始耗尽内存时无法运行程序。如果您前面有一个负载平衡器,可以在发生故障时重定向,那么您可能希望保持较小的交换空间(例如1GB),如果您希望程序先减慢速度,那么我会考虑4GB +内存大小的平方根,如果需要的话在事情消失之前真正减慢速度,然后保持最小为1.25倍的内存大小(只要不耐烦的人不会首先放弃-这将更适合于后台工作)。

我将开发和生产机器的标准配置为1GB,那么实际的内存大小无关紧要,它们有足够的能力来编译我想要的所有程序,并换出几乎从未使用过的程序来使用释放内存以进行磁盘缓冲。

相比之下,我的32GB笔记本电脑上有64GB的交换空间,这有点过头了,但是我想确保即使缓慢也可以一直保持工作状态,而且我知道我将运行多个内存不足的虚拟机。出乎意料的结果是,当您具有32GB +的内存范围时,从休眠状态恢复(重新加载32GB内存)的速度明显比冷启动慢。


0

不,您绝对不需要32GB。通常说来,对于台式机系统,您的交换空间应该在4GB物理RAM +几GB之间。因此,对于16GB的物理RAM,交换可能是4GB到18GB。

您需要交换到交换空间的内容将大致等于驻留程序驻留的应用程序正在使用的物理RAM的数量-也就是说,系统服务和在使用它们时保持运行状态的应用程序(而不是一次运行的任务)然后退出)。在台式机系统上,假设您在处理其他内容时可能会打开浏览器,文字处理器,电子邮件程序和图形或视频编辑器。这些可能会轻易占用超过2GB,甚至可能超过4GB。因此,也许6GB的交换是合适的。

一般而言,多出几个GB也无妨。如果您有大量的RAM,通常将不使用交换,但是当某些进程使用过多的内存而您开始变低时,它会有所帮助,并且可以防止系统终止进程。

注意:如果您想使用OS休眠模式,则需要如上所述的全部16GB内存,但是现代计算机从休眠中受益不多。如果您具有快速的SSD,则启动可能比从休眠状态恢复的速度更快或更快,并且现代计算机在休眠模式下使用的能量可忽略不计,因此休眠状态所带来的能量使用并不是一个很大的因素。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.