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 的交换区。
该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 秒内根本没有使用交换。