Linux:不创建交换分区?

Mih*_*scu 11 linux swap swappiness

我想知道,因为我听说当您外出或 RAM 时使用交换,并且交换太多不好,因为我有很多 RAM(8GB)....

如果我不创建交换分区怎么办?

另外,我需要它来冬眠还是不是必须的?

Dav*_*rtz 16

现代操作系统需要交换空间来有效利用 RAM。即使您的系统有足够的 RAM,浪费 RAM 也会导致缓冲区缓存变小,这意味着磁盘 I/O 增加。因此,无论您拥有多少 RAM,您仍然希望系统能够有效地使用它。有效地使用它意味着从 RAM 中取出极不可能被访问的东西。

当您启动典型系统时,会启动大量服务。程序运行初始化代码并在此过程中修改私有内存映射。其中许多服务将永远不会再次运行。他们中的许多人不会运行几个小时。如果没有交换,操作系统别无选择,只能将与这些服务关联的修改后的私有内存映射永远保留在 RAM 中。那是永远不能用作磁盘缓存的 RAM。

因此,无论您是否需要,您都希望交换。

  • *“所以无论您是否需要,您都想要交换。”* - 似乎您已经证明他是否需要交换都需要交换。 (9认同)
  • 假设我有足够的 RAM 并且可以承受浪费 2GB。为什么我需要交换文件? (2认同)

小智 14

几年来,我一直在运行一个没有任何交换的桌面系统,它运行得很好!有一些不同的行为;其中一些是有利的,而另一些可能会伤害您。这一切都取决于你在做什么。

一个主要区别是当内存耗尽时系统的行为方式:

如果没有交换分区,OOM 杀手立即运行。如果你有一个程序泄漏内存,那很可能就是那个被杀死的程序。发生这种情况后,您几乎可以立即恢复系统。

如果一个交换分区,内核推动内存中的内容进行掉期。错误的进程可以继续分配内存。这种情况会一直发生,直到交换用完为止,如果您有一个很大的交换分区,这可能需要十分钟到一个小时。在执行此操作时,您的系统会缓慢到爬行。打开终端并终止进程变得不可能。发生这种情况时,我通常会拔掉电源线。

因此,由于无论如何我都会在系统 OOM 时丢失我的数据,因此我更喜欢前一个选项,因为它至少有(高)恢复机会。

  • 终于有一个符合我自己经验的有意义的回应。我无法理解“你必须有一个交换分区”背后的基本原理。除非我们想休眠系统。 (3认同)
  • 这也是我的经历。 Linux 不能很好地处理交换抖动,无法让您自行终止有问题的程序。让 OOM 杀手自己完成会更可靠。当然,这是一个糟糕的设计 - 更好的设计是冻结有问题的进程而不是杀死它,并提供一个漂亮的 GUI 来允许您解冻或杀死它,但是......Linux。 (2认同)

psu*_*usi 5

休眠需要交换,否则没有它你也可以过得很好。