交换分区的重要性

lam*_*cro 34 filesystem swap disk hard-drive system-installation

  • 交换分区的目的是什么?
  • 我怎么知道我有足够的交换分区?不要太多/很少。

我的 Ubuntu PC 用于典型的东西:

  • 网络(电子邮件、脸书等)
  • 一些电影
  • 游戏很少见

ric*_*lla 15

交换分区有几个目的。

  • 它用作“备份”RAM。也就是说,如果您的计算机内存不足,它将使用交换区作为更多内存的临时来源。更具体地说,它会将 RAM 中未使用的项目“交换”到交换区域,以便为当时需要它的应用程序留出备用空间。这并不理想,因为到硬盘驱动器的数据传输速率明显低于普通 RAM 的数据传输速率。实际上,这意味着从交换区检索信息要慢得多。

  • 它在计算机休眠时使用。休眠涉及获取当前状态下的 RAM 映像(就像 ISO 表示映像),并将其保存到交换区。然后在计算机重新启动时重新加载此图像。

  • 为了最有用,交换区应至少为 (RAM * 1.5),但建议使用更多。例如,在我具有 3GB RAM 的系统上,我有一个 7.2GB 的交换区。


RAO*_*AOF 7

这与这个关于交换分区“正确”大小的问题非常接近。我的回答中的大部分信息都适用 - 基本上,如果您想休眠,您通常希望您的交换空间至少与您的 RAM 一样大,除此之外,像 1 GB 或 2 GB 这样的整数很容易就足够了。由于互换是这么多比RAM慢,如果你填补了交换的多个千兆字节电脑几乎肯定成为unusably缓慢。

也没有真正需要交换分区 - 交换文件(在主流 linux 文件系统上可用)提供相同的性能,并且如果您认为没有足够的空间,可以轻松添加更多交换空间。


hhl*_*hlp 4

这里有关于交换的非常深入的信息

有些人说你的内存是双倍的,但我个人推荐这个:

交换 = 1.5 X 总内存

例子 :

如果你有 2Gb 内存 -> 交换 = 1.5 x 2 = 3

PD:Ubuntu 桌面使用交换到休眠(PC 关闭,无需电源,程序状态已保存)。如果休眠对您很重要,请拥有比 ram + 交换溢出更多的交换空间。


msw*_*msw 2

free命令可以告诉您正在使用多少交换空间。以本机为例:

$ free -m
             total       used       free     buffers     cached
Mem:          1947       1863         84         312        758
-/+ buffers/cache:        792       1154
Swap:         4000          3       3997
Run Code Online (Sandbox Code Playgroud)

显示我有 2GB (1947m) RAM 并且系统已使用其中的大部分。然而,312m 用于 I/O 缓冲区,其余部分 (758m) 系统决定用磁盘缓存填充。

磁盘缓存很有趣,因为它使用快速内存​​而不是慢速磁盘来存储其内容。内容可以从磁盘中获取,但它们会保留下来以备需要时使用。这也意味着如有必要,可以立即回收 758m 的内存,因为系统知道它可以在磁盘上找到该数据。

这就是为什么第二行显示如果没有缓冲和缓存,我将有一半的 RAM (1154m) 可供使用。

第三行显示我有一个过大的交换分区(它在那里并且没有做任何事情),其中已使用了高达 3m 的空间。这是内核实际上不希望很快使用的东西,因此它被困在“后门廊”上。

free现在给你快照的同时,vmstat可以给你一个运行图:

$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3588  86236 316524 769132    0    0    14    13  126   81  4  1 95  0
 0  0   3588  83872 316532 770512    0    0     0    20  264 1229  3  1 96  0
Run Code Online (Sandbox Code Playgroud)

那里有很多信息,但有趣的是没有换入 (si) 或换出 (so) 流量。这意味着我在过去 10 秒内根本没有使用交换。