我一直在想,因为我听说在外出或使用RAM时会使用交换功能,并且交换太多是不好的,因为我有很多RAM(8GB)...。
如果我不创建交换分区怎么办?
另外,我是否需要它进行休眠还是不是必须的?
我一直在想,因为我听说在外出或使用RAM时会使用交换功能,并且交换太多是不好的,因为我有很多RAM(8GB)...。
如果我不创建交换分区怎么办?
另外,我是否需要它进行休眠还是不是必须的?
Answers:
现代操作系统需要交换空间才能有效利用RAM。即使您的系统有足够的RAM,浪费RAM也会导致较小的缓冲区高速缓存,这意味着增加了磁盘I / O。因此,无论您有多少RAM,您仍然希望系统有效地使用它。有效地使用它意味着将极不可能访问的东西移出RAM。
启动典型系统时,将启动大量服务。程序运行初始化代码并在此过程中修改私有内存映射。其中许多服务将永远不会再运行。他们中的许多人不会花几个小时。如果不进行交换,则操作系统别无选择,只能将与那些服务关联的修改后的私有内存映射永久保留在RAM中。那是永远不能用作磁盘缓存的RAM。
因此,无论是否需要,都需要交换。
我一直在运行桌面系统而没有任何交换,已经有好几年了!有一些不同的行为。其中有些是有利的,有些可能会伤害您。这一切都取决于您在做什么。
一个主要区别是内存耗尽时系统的行为:
如果没有交换分区,则OOM杀手将立即运行。如果您有程序泄漏内存,那很可能是被杀死的程序。发生这种情况,您几乎立即恢复了系统。
如果是一个交换分区,内核推动内存中的内容进行掉期。错误的进程可以继续分配内存。这种情况一直持续到交换用完为止,如果交换分区很大,则可能需要十分钟到一个小时。在执行此操作时,您的系统会缓慢爬行。打开终端并终止进程变得不可能。发生这种情况时,我通常会拔掉电源线。
因此,由于在系统OOM时无论如何我都会丢失数据,所以我更喜欢前一种选择,因为它至少具有(高)恢复的机会。
认为具有交换区域会对性能产生负面影响是一种常见的误解。严重影响性能的是没有足够的RAM。交换区域本身对性能没有负面影响,除非您不关心可靠性。即使您认为自己有足够的RAM(并且没有报告RAM不足),也会对性能产生积极影响。
本质上要考虑三种情况:
1:有足够的RAM来满足内部内核的需求,所有应用程序都可以在RAM上拥有其工作页面集,并且仍具有“可用” RAM以便缓冲区高速缓存存储大多数文件系统热数据。
2:除了没有足够的可用RAM使缓冲区高速缓存完全有效之外,其他与上述相同。
3:没有足够的RAM甚至无法存储您的应用程序使用的页面。
在情况1中,这应该是生产机器的标准,具有或没有交换区域都不会改变任何东西(至少在基于Linux的操作系统和其他过量使用内存的操作系统上)。
在情况2中,具有交换区域可以通过允许系统分出非常不常用的页面,然后允许缓冲区高速缓存更好地发挥其作用来提高整体性能。
在情况3中,具有交换区域可以使应用程序继续运行,但会因分页而导致性能下降。另一方面,缺少交换区域(或足够大的交换区域)将使应用程序随机崩溃。此外,根据OS的设置,如果对RAM的需求很高,则OOM杀手可能还会决定杀死最占用内存的应用程序,甚至没有机会保存它们(您的)关键数据。
后一种情况是您必须选择的一种情况。当然,在某些用例中,优先选择终止进程,如系统,响应时间至关重要,而丢失事务/进程也没什么大不了的。
但是,我倾向于相信在大多数情况下,最好能够让用户/管理员有机会注意到RAM不足并采取相应的措施,而又不会丢失数据。
如果您不想使用交换分区,则可以使用交换文件:存储在常规文件中并用作交换空间的文件系统映像。
以下文章详细说明了如何执行此操作:
这有点危险,但是您可以在没有交换空间的情况下运行。但是,如果最终超过了内存量,您的系统将几乎立即崩溃,而不会发出通知。
交换基本上为您提供了扩展空间,但速度却慢得多。如果超出限制,您将开始进行交换,这实际上会耗尽系统的生命。但是,通过消除错误的进程,您仍然可以保存系统。
我记得,有些程序坚持分配(但不使用)交换空间,其中有些是数据库程序。同样,由于没有交换空间,您可能会限制可能运行的程序。
最后,看起来SWAP是便宜的,因为您不必备份该区域。(我希望您是备份系统的优秀系统管理员之一)。
因此创建它。
我的经验法则曾经是2 *内存大小.....但是现在,在很多情况下,我可以使用1 *内存大小,但通常使用1.5 *(内存大小)。您不必创造那么多的数量,但是我会...尤其是如果您正在从事任何生产类型的工作。
哦,是的,对于休眠状态,需要进行交换以保存整个内存映像。因此,如果您考虑使用h8ibernate,则其大小应至少为(1 *内存大小)+100MB。100MB用于处理过程中可能需要的开销。
一旦出现内存压力,Linux交换似乎有相当高的要求。症状是,如果活动进程几乎使用了所有RAM,则系统将严重停止运行,并且硬盘将运行异常。
为什么?
没有交换时,无法从RAM逐出没有备份文件的页面(通常是通过动态内存分配)。即使实际上很快再次需要它们,内核也会求助于带有备份文件的页面。e。即使没有交换也要破坏!
结论:总是要交换一下。
对于粗略的指导,对于大小,请使用4到8 GB之间的空间,即使对于具有大量RAM的系统,假设您不休眠。有关更多详细信息,请参见Red Hat有关交换空间的文档。