我读过很多地方,交换空间的经验法则是使物理RAM数量增加一倍。但是,32 GB似乎很多。我需要那么多吗?我需要这么多的物理RAM吗?
我读过很多地方,交换空间的经验法则是使物理RAM数量增加一倍。但是,32 GB似乎很多。我需要那么多吗?我需要这么多的物理RAM吗?
Answers:
这完全取决于您打算如何使用机器。例如,如果它是Sap服务器,那么是的,我要添加32gb swap(我们在使用128gb ram和32gb swap的盒子)。如果您要处理大量的图片和视频,那么进行一些交换很有意义。32gb可能会过大。
但是我不会说零交换。
万一发生RAM不足的情况-也许打开一个大文件,在firefox中查看一个长期运行的标签,这没关系,在这种情况下,内核OOM杀手将启动并开始杀死应用程序以获取内存。在这种情况下,由于应用程序被杀死,您很可能会丢失数据。但是,如果您有一点交换,那么系统将继续运行,获取交换并允许系统继续运行。随着大量交换的发生,系统会变慢,您会在所有交换用尽之前注意到并进行调查。另外磁盘很便宜,那为什么不进行交换呢?
任何说“您不需要交换”而又不问您对计算机的实际用途的人都在做假设。尽管您可能对吃RAM的计算机几乎不做任何事情,但最好还是在做出“不需要”交换的鲁棒判断之前,先询问有关计划使用它的问题。在我的愚见
这是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
啊 这篇文章的答案非常错误,这是Google搜索“多少交换?”的第一个结果。
首先,Ubuntu Swap FAQ是一个很好的参考
这个常见问题解答提出了一个重要的要点,这里没有人提及,那就是(强调我的)
有时,大型程序(如OpenOffice,Neverwinter Nights或视频编辑器)会使整个系统需要额外的内存。这些大型程序在启动过程中使用的大量页面仅可用于初始化,然后不再使用。系统可以换出这些页面并为其他程序甚至磁盘缓存释放内存。在这些情况下,交换将用于帮助系统处理任何额外的负载。
因此,交换不只是为了休眠!交换未使用的页面的此活动在某些情况下可能是有益的,而在另一些情况下则是有害的。这是有益的,因为它可以释放内存供系统在其他地方使用,但是在进行换出操作时过于进取,并且换出您确实想要的页面是有害的。在桌面系统上,尤其是这样,在桌面系统上,应用程序可以长时间处于空闲状态,但用户仍希望在恢复性能时立即获得性能。控制这种攻击性的方法称为交换性
Ubuntu交换常见问题在“ 什么是交换性以及如何更改它”下进行了简短讨论。Ubuntu系统上的默认值为60,而FAQ建议台式机的默认值为10。
因此,我想说,像某些人在此问题上建议的那样,没有一个绝对没有交换空间的系统通常非常重要,除非您知道系统的某些非常特定的使用场景并且非常了解后果它可能有。(个人而言,我不会在没有交换的情况下运行系统)在没有交换的内存不足情况下,系统将开始终止进程(通常是导致OOM的进程)
根据经验,我可以这样说:
对于我使用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美分。
在大多数情况下,我会说您根本不需要任何东西。也许如果您编辑非常大的图像文件,或者其他需要大量内存的应用程序,则可能需要一些。
与您的系统类似,我从未见过在系统上有任何使用。实际上,有一次,我意外禁用了它一两个星期,并且从未发现任何问题。但是我的交换驱动器仍然保留5GB的空间,主要是因为我有超过1TB的可用空间,并且没有按原样使用所有空间。
如果您使用休眠模式,则交换与您的RAM数量一样多是安全的。
有关有多少交换的一般经验法则,请阅读此处:
https://help.ubuntu.com/community/SwapFaq
在您的情况下,我会说4 GB足以匹配您的RAM。
仅当您要使用休眠模式进行其余操作时,才需要交换空间,这会浪费硬盘空间。
sudo swapoff -a
然后休眠笔记本电脑。
我有一台配备4GB RAM和Ubuntu 16.04的笔记本电脑。引导后,它将消耗大约1GB的RAM,甚至Inkscape(例如)也将无法运行(系统监视器显示超过50%的可用RAM)。 Inkscape冻结 我应用了交换文件后,即使没有使用任何单个字节的交换,它也会按预期运行。 因此,我建议使用交换分区(或交换文件)。关于它的大小,可以使用david6规则。
从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
我想你反过来了。交换建议,您需要〜16GB。因此,SWAP应该是实际RAM大小的1/2。但是那仍然是很多空间。取决于您的需要。我想说的是,如果您不使用“休眠”模式,那么如果您有足够的磁盘空间,请保持大约4GB至8GB。由于您有16GB,因此我认为您可能正在使用一台需要强大资源的计算机...因此,拥有16GB到32GB的SWAP可能也会有所帮助。
我有2GB RAM和1GB SWAP。我对此非常满意,但这只是我的意见。查看其他评论/建议,看看他们怎么说。
请记住这一点-
对于RAM小于2GB的系统,通常应将交换空间的大小调整为大约2倍的主内存,如果有更多的内存,则应将大约1倍的主内存。
因此,如果您有4 Gb的ram,则永远不需要交换,除非休眠时
所需的Swap约为3-3.5 Gb,不超过此数量。
因此,请使用常识,不要浪费磁盘空间
如果您要构建非常大的文件,例如,如果您要在笔记本电脑上构建机器翻译系统(是的,为什么要这么做?我可以说我的教授正在使我;-))答案显然是的,实际上在此刻,我很遗憾没有将其设置为32GB交换空间。
对于随便使用Ubuntu来进行办公室工作和互联网使用,您甚至都不会使用2 GB的交换空间,但实际上并没有明确的答案,这完全取决于您要在计算机上执行的操作...
似乎没有人提到拥有大量交换空间的另一个原因是,使系统明显变慢,而不是在开始耗尽内存时无法运行程序。如果您前面有一个负载平衡器,可以在发生故障时重定向,那么您可能希望保持较小的交换空间(例如1GB),如果您希望程序先减慢速度,那么我会考虑4GB +内存大小的平方根,如果需要的话在事情消失之前真正减慢速度,然后保持最小为1.25倍的内存大小(只要不耐烦的人不会首先放弃-这将更适合于后台工作)。
我将开发和生产机器的标准配置为1GB,那么实际的内存大小无关紧要,它们有足够的能力来编译我想要的所有程序,并换出几乎从未使用过的程序来使用释放内存以进行磁盘缓冲。
相比之下,我的32GB笔记本电脑上有64GB的交换空间,这有点过头了,但是我想确保即使缓慢也可以一直保持工作状态,而且我知道我将运行多个内存不足的虚拟机。出乎意料的结果是,当您具有32GB +的内存范围时,从休眠状态恢复(重新加载32GB内存)的速度明显比冷启动慢。
不,您绝对不需要32GB。通常说来,对于台式机系统,您的交换空间应该在4GB和物理RAM +几GB之间。因此,对于16GB的物理RAM,交换可能是4GB到18GB。
您需要交换到交换空间的内容将大致等于驻留程序驻留的应用程序正在使用的物理RAM的数量-也就是说,系统服务和在使用它们时保持运行状态的应用程序(而不是一次运行的任务)然后退出)。在台式机系统上,假设您在处理其他内容时可能会打开浏览器,文字处理器,电子邮件程序和图形或视频编辑器。这些可能会轻易占用超过2GB,甚至可能超过4GB。因此,也许6GB的交换是合适的。
一般而言,多出几个GB也无妨。如果您有大量的RAM,通常将不使用交换,但是当某些进程使用过多的内存而您开始变低时,它会有所帮助,并且可以防止系统终止进程。
注意:如果您想使用OS休眠模式,则需要如上所述的全部16GB内存,但是现代计算机从休眠中受益不多。如果您具有快速的SSD,则启动可能比从休眠状态恢复的速度更快或更快,并且现代计算机在休眠模式下使用的能量可忽略不计,因此休眠状态所带来的能量使用并不是一个很大的因素。