我很疑惑,因为我听说当 RAM 用完时会使用交换,而交换太多是不好的,因为我有很多 RAM(8GB)...
如果我不创建交换分区会怎么样?
另外,我是否需要它来休眠或者它不是必需的?
答案1
现代操作系统需要交换空间来有效利用 RAM。即使您的系统有足够的 RAM,浪费 RAM 也会导致缓冲区缓存变小,这意味着磁盘 I/O 增加。因此,无论您有多少 RAM,您仍然希望系统能够高效地使用它。高效使用它意味着将极不可能被访问的内容从 RAM 中取出。
当你启动一个典型的系统时,大量的服务就会启动。程序运行初始化代码并修改进程中的私有内存映射。这些服务中的许多将绝不再次运行。其中许多服务几个小时内都不会运行。如果没有交换,操作系统别无选择,只能将与这些服务相关的已修改的私有内存映射永远保留在 RAM 中。这些 RAM 永远不能用作磁盘缓存。
因此,无论是否需要,您都希望进行交换。
答案2
我已经运行桌面系统几年了,没有任何交换,而且运行良好!有一些行为有所不同;其中一些是有利的,而另一些可能会对你有害。这完全取决于你在做什么。
一个主要的区别是内存耗尽时系统的行为:
如果没有交换分区,OOM 终止程序会立即运行。如果您有一个程序泄漏内存,则很可能会被终止。这种情况发生后,您几乎可以立即恢复系统。
如果有是交换分区,内核将内存内容推送到交换分区。错误的进程可以继续分配内存。这种情况会一直发生,直到交换分区用完,如果您有一个很大的交换分区,这可能需要十分钟到一个小时。在执行此操作时,您的系统会变得非常缓慢。无法打开终端并终止进程。发生这种情况时,我通常会拔掉电源线。
因为我将丢失我的数据无论如何当系统 OOM 时,我更喜欢前一种选择,至少有(较高的)恢复机会。
答案3
休眠时需要交换,否则没有它你也可以很好地运行。
答案4
如果您不想使用交换分区,则可以使用交换文件:存储在常规文件上并用作交换空间的文件系统映像。
以下文章详细说明了如何操作:
- Linux 添加交换文件 – 操作方法
- 如何在没有交换分区的情况下使用休眠功能(这也使用交换文件)