我们还在服务器上需要交换分区吗?


36

我已经阅读了这个问题,但是在服务器而不是台式机或笔记本电脑的环境中提出了这个问题

如果笔记本电脑上安装了大量的RAM(例如8 GB),是否还需要交换空间?

Answers:


32

常见的误解是拥有交换空间会对系统性能产生负面影响。这是不正确的。只要您有足够的RAM,无论大小大小都有交换区都不会损害性能。影响性能的原因是RAM不足,无法有效使用交换空间。

  1. 如果您没有交换空间,而恰好在RAM之外,则内核将选择一个或多个它认为是不错的候选程序(尽管您可能会给出一些提示)并杀死它们。

  2. 如果您有交换空间并且内存不足,则内核将选择较少使用的内存页面,并将它们放在交换区域中以释放RAM。这将减慢系统速度,但不会影响您的应用程序。

我总是喜欢第2种情况,因为我感到不舒服地失去了部分或全部工作,因为内核认为我的应用程序值得一试。此外,由于当前平均磁盘大小在TB范围内,因此保留几个百分比的交换空间通常不是问题。


您的第一点是真的吗?内核会杀死正在运行的进程以释放RAM吗?为什么内核不使用磁盘空间而不是杀死活动进程?
多纳托2015年

4
@Donato是的,我的第一点是对的。如果没有配置交换空间(即磁盘),则不会选择使用磁盘空间释放RAM。
jlliagre

当我完成交换空间后会发生什么?退回情况1?
扎克

@Zac是的,除非您确实禁用了内存过量使用,否则在这种情况下第一个无法分配内存的进程将受到伤害。请注意,如果您配置了(大量)交换空间区域并碰巧使用了其中的大部分空间,那么一开始您可能会遇到严重的性能问题。
jlliagre '16

1
@Zac如果您用尽交换空间,则实际上与最初没有交换空间的情况相同。一个或多个进程将死亡。它们可能是oom杀手选择的,或者只是在错误的位置和错误的时间。通常,在交换用尽之前,经过适当监控的生产系统应先触发警报,然后再引起管理员响应。
jlliagre

9

如果您有3GB或更高的RAM,Ubuntu将自动不使用 Swap空间,因为它对于操作系统来说已经足够了。

现在您真的需要交换分区吗?

我认为答案是肯定的。因为您不知道将来要安装或做什么,这可能需要交换空间。另外,如果您打算使用休眠模式,则可能需要一些交换空间。实际上,您不必具有交换分区,但是建议您在正常操作中用完那么多内存。

有关是否需要进行交换的更多信息,请参见Ubuntu Swap FaqSwap Requirements


您是否有一个链接确认您的第一句话?
jlliagre


1
博客声明错误地引用了askunbutu的回复。没有证据表明user4124是Ubuntu开发人员。“(通常)不会使用”与“将自动禁用”完全不同。实际上,Ubuntu从不禁用交换功能,即使您有8GB或更多的RAM,它也会在需要时使用它。
jlliagre 2015年

@jlliagre这意味着交换空间已存在,但未使用。当我安装Xubuntu 14.04时,它创建了16GB的交换空间,并且从未使用过。参见图片
米奇

1
很高兴您更正了您的回复。绝对“不使用”与“禁用”不同。Ubuntu不会禁用交换,并且会在需要时使用它,而不管大小如何。
jlliagre

4

在过去的6年左右的时间里,我使用了具有至少8GB RAM的台式机系统。我不记得在正常使用情况下系统换出内存的情况-我经常使用htop监视资源使用情况。甚至在出于开发目的同时运行4个虚拟机(服务器)的情况下,也没有发生交换。

话虽如此,如果您正在运行的应用程序占用大量内存(例如,视频编辑,图像编辑,大型数据库表操作等),则可能会遇到系统内存不足的情况。在那种情况下,可能希望有一个交换空间。将其视为万不得已的安全网。考虑到当今系统的多terrab容量,交换分区中几GB的容量值是多少?比后悔更好安全:-)


2

拥有交换空间始终是一件好事。

在这里,我引用Michael Jang的RHCSA / RHCE认证学习指南

Linux交换空间

此空间用于扩展系统上的有效RAM数量,作为当前正在运行的程序的虚拟内存。但是您不能只购买额外的RAM并消除交换空间。即使您有千兆字节的RAM,Linux也会移动不常用的程序和数据来交换空间。

对于最大2GB的系统,默认交换空间大小是已安装RAM数量的两倍。超过2GB,即为RAM + 2GB。但是,这些规则不是“一成不变的”规则。具有数GB RAM的工作站通常只使用很少的交换空间。.但是,如果一次没有重启几个月或某些服务需求很高的系统,则可能会更频繁地使用它。


1
“即使您有千兆字节的RAM,Linux也会移动不常用的程序和数据来交换空间”。我假设在这里我们正在谈论加载到内存中的代码和数据。如果您有8GB RAM且仅运行常规应用程序,那么到底为什么要调出任何代码或数据页面以进行交换?
塔里克

1

这取决于您在系统上运行的内容。

如果您正在创建内容,则最好仍然分配交换空间,因此,如果确实用完了RAM,您的进程只会变慢而不是被杀死并可能丢失工作。

如果您的计算机仅运行程序,则您甚至不需要交换空间。我设计并构建了许多完全适合这种用法的类似自助服务终端的显示系统。我宁愿一个过程突然死掉也不愿变慢,因为这样我就可以检测到这种情况并进行纠正。


1

如果您需要交换空间或更多交换空间,则可以在文件系统上创建交换文件。当然,它们将不支持休眠,但是对于具有SSD驱动器和大量RAM的笔记本电脑来说,这是一种合理的方法。

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.