6.3. 使用交换空间

初始化的交换空间通过 swapon 命令投入使用。此命令告知内核可以使用该交换空间。交换空间的路径作为参数给出,因此要在临时交换文件上开始交换,可以使用以下命令。

$ swapon /extra-swap
$
可以通过在以下文件中列出交换空间来自动使用它们/etc/fstab文件。
/dev/hda8        none        swap        sw     0     0
/swapfile        none        swap        sw     0     0
启动脚本将运行 swapon -a 命令,这将启动在 /etc/fstab 中列出的所有交换空间上的交换。因此,swapon 命令通常仅在需要额外交换空间时使用。

您可以使用 free 命令监视交换空间的使用情况。它将告诉您已使用的交换空间总量。

$ free
             total       used       free     shared   
 buffers
Mem:         15152      14896        256      12404       2528
-/+ buffers:            12368       2784
Swap:        32452       6684      25768
$
输出的第一行(内存)显示物理内存。“total”列不显示内核使用的物理内存,通常约为 1 兆字节。“used”列显示已使用的内存量(第二行不计算缓冲区)。“free”列显示完全未使用的内存。“shared”列显示多个进程共享的内存量;越多越好。“buffers”列显示磁盘缓冲区缓存的当前大小。

最后一行(交换)显示交换空间的类似信息。如果此行全部为零,则您的交换空间未激活。

相同的信息可以通过 top 命令获得,或者使用 proc 文件系统中的文件/proc/meminfo。目前很难获得有关特定交换空间使用情况的信息。

可以使用 swapoff 命令从使用中移除交换空间。通常没有必要这样做,除非是临时交换空间。交换空间中正在使用的任何页面都会首先被换入;如果物理内存不足以容纳它们,则它们将被换出(到其他交换空间)。如果没有足够的虚拟内存来容纳所有页面,Linux 将开始颠簸;过一段时间后它应该会恢复,但与此同时系统将无法使用。在从使用中移除交换空间之前,您应该检查(例如,使用 free 命令)是否有足够的可用内存。

所有通过 swapon -a 命令自动使用的交换空间都可以通过 swapoff -a 命令从使用中移除;它会查看文件/etc/fstab以查找要移除的内容。任何手动使用的交换空间将保持使用状态。

有时即使有大量可用物理内存,也可能使用大量交换空间。例如,如果某一点需要交换,但后来占用大量物理内存的大进程终止并释放内存,则可能会发生这种情况。换出的数据不会自动换入,直到需要时才会换入,因此物理内存可能会长时间保持空闲状态。无需担心这一点,但了解正在发生的事情可能会让人感到安慰。