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

评论

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

这种“经验法则”起源于大多数PC的RAM单位为兆兆字节的时候。它已经十多年没有意义了,但是...不会...死了!

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

尽管两个问题相似,但另一个没有提到休眠...

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

#1 楼

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

但是我不会说零交换。

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

任何人在问“您不需要交换”而又不问您对计算机的实际用途时,都在做假设。尽管您可能会对吃RAM的计算机做很少的事,但最好还是在做出“不需要”交换的鲁棒判断之前,先问一下您打算如何处理它的问题。以我的拙见

评论


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

–塔马斯·塞莱伊(TamásSzelei)
2011年6月16日22:24

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

–用户
2011年6月17日14:11在

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

–迈克尔·特劳施
2011年6月20日下午3:59

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

–迈尔奇亚(Mircea Chirea)
2012年1月8日15:36



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

–马丁·施罗德(MartinSchröder)
13年12月13日在13:55

#2 楼

这是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 


评论


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

– starblue
2011年6月17日7:57

'new'表中存在不一致之处-根据指南,对于32GB系统,16GB的交换空间适用,但对于64GB系统,4GB的容量适用于...

–查理
16 Dec 7'在5:29

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

– Paddotk
17年5月28日在17:49

@Charlie与系统内存量无关,与系统内存用尽的可能性有关,并且该短缺将有多大。

– Phill Healey
17年7月18日在20:19

@ColeJohnson的实际区别是,如果32GB系统上的内存不足,则会剩余一些缓冲区。一旦系统开始交换,它就会变得明显无响应,您就有机会进行调查。使用48GB的系统并且没有交换功能,您将有更多的时间/内存“正常”执行,但是一旦空间不足,内核就会开始杀死进程。在典型的最终用户系统上,一旦交换开始,您可能最终会重新引导,因此几乎没有什么不同。在处理重要工作负载的服务器上,具有该缓冲区是有意义的。

–a2800276
20年6月10日在6:37

#3 楼

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

首先,一个很好的参考点是Ubuntu Swap常见问题解答

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


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


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

Ubuntu Swap FAQ在什么是swappiness以及如何更改它上对此进行了简要讨论。 Ubuntu系统上的默认值为60,而FAQ建议台式机的默认值为10。

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

评论


支持与FAQ的链接,并在观点和传闻中引入一些理智。

–马蒂·弗里德
2012年6月24日17:04

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

–安瓦尔
2012年10月18日在16:48

为了减轻内存的额外负担,我宁愿使用zRAM和swappiness = 60,而不是传统的HDD交换。

–巴拉夫·白化(Barafu Albino)
13年6月30日在7:27

#4 楼

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

评论


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

–抄写员
2011年6月17日9:05

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

– Bandi
2011年6月17日20:34

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

–psusi
2012年6月24日,下午3:48

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

–val说恢复莫妮卡
19年6月2日在8:58

#5 楼

从经验上我可以这样说:

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

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

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

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

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

我的2美分。

评论


伙计,我喜欢您解释和经历的方式...这是一个很好的答案

–aidons nous
17年11月12日17:37

#6 楼

不,只要不使用暂停到磁盘之类的功能,就不需要32 GB。

#7 楼

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

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

评论


我记得当我使用Wubi并进入休眠状态时,它曾经使用过一次。

– Vladashram
2012年5月13日下午2:05

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

–马蒂·弗里德
2012年5月13日下午2:16

#8 楼

如果您使用休眠模式,则交换与您的RAM数量一样多是安全的。

有关有多少交换的一般经验法则,请阅读:

https://help.ubuntu.com/community/SwapFaq

在您的情况下,我说4 GB足以匹配您的RAM。

#9 楼

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

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

#10 楼

仅当您要使用休眠模式时才需要交换空间,这浪费了硬盘驱动器上的空间。

评论


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

–唐尼·库尼亚(Donny Kurnia)
2011年6月17日下午4:11

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

–租金
2011年6月17日下午6:14

您可以通过禁用swap sudo swapoff -a进行实验,然后休眠笔记本电脑。

–唐尼·库尼亚(Donny Kurnia)
2011年6月20日7:56

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

–租金
2011年6月20日15:11

#11 楼

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

#12 楼

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

#13 楼

在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)大小(如果使用休眠模式),否则,最少需要舍入(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



评论


猜猜SwapFaq来自哪里? ;-) +1

–法比
18-09-4在7:57

好答案@Fabby +1

– Jebin Philipose
20-10-7在13:13

#14 楼

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

我有2GB的RAM和1GB的SWAP 。我做的很好,但这只是我的意见。查看其他意见/建议,看看他们怎么说。

#15 楼

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

#16 楼

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

因此,如果您打算长时间关闭机器,则交换非常方便从僵尸垃圾中释放内存的方法。当然,用3gb填满16g比我需要更长的时间,但这仍然很不错。为此,将使用4Gb。

#17 楼

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

#18 楼

请记住-


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


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

评论


@AnwarShah-对不起,我没有看过。编辑了我的答案

–阿舒
2012年5月13日在7:05

#19 楼

如果您要构建非常大的文件,例如,如果您要在便携式计算机上构建机器翻译系统(是的,为什么要这么做?我可以说我的教授正在使我;-))很明显,是的,实际上在这一刻我很后悔没有将其设置为32GB交换...。

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

#20 楼

信息太多,意见不一。

我建议的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


#21 楼

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

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

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

#22 楼

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

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

作为一般规则,多出几个GB的空间也没有什么坏处。如果您有大量的RAM,通常将不使用交换,但是当某些进程使用的内存过多而您开始变低时,它会有所帮助,这样可以防止系统终止进程。

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