根据 的手册页vmstat,“swpd”表示使用的虚拟内存量。据我了解,在大多数情况下,除非物理 CPU 空间不足,否则它应该为零。
我不知道为什么。即使我有 700 多个进程,CPU 也几乎 100% 未使用。

总共使用了大约190M的swap。与250G的总大小相比,它并没有那么大。
那么这是否意味着即使 CPU 空闲,某些进程也会使用虚拟交换?
交换与 CPU 利用率无关。交换是写入磁盘的内存。
CPU 可以直接访问普通 RAM,而且 RAM 与 Swap 相比速度极快。这就是为什么我们有 RAM - 作为 CPU 需要访问的数据的快速缓冲区。
Swap 允许内核将未使用的内存写入磁盘,以便在需要时检索。这是一个代价高昂的过程,因为与内存相比,磁盘速度非常慢,但它也允许使用比物理内存更多的内存。
此外,有些东西可能永远不会被使用,但尚未分配内存空间。通常内核会换掉不使用的东西。
190MB用SWAP不是问题。问题是计算机是否必须写出东西来交换,然后再次检索它。
我的笔记本电脑目前有 445MB 写入交换空间,但仍有超过 3GiB 未使用的内存 - 显然内核在某个阶段发现了一些未使用的东西,并决定将其换掉。
简而言之:不要关心交换使用,除非:
free -m 显示可用内存量非常低free -m来自我的笔记本电脑的快速示例:
$ free -m
total used free shared buffers cached
Mem: 7702 7454 247 582 230 3477
-/+ buffers/cache: 3746 3955
Swap: 8191 445 7746
Run Code Online (Sandbox Code Playgroud)
如我们所见,有 247MiB 免费。但这并不是故事的全部。此外,还有超过 3GiB 的缓存,如果内核需要更多内存来做某事,可以非常快速地释放缓存。因此,实际可用内存量为 3955MiB,如 下的第二行所示free。您还会看到使用的交换。
简而言之:不要关心交换空间的使用,除非您遇到问题,例如软件响应非常缓慢 - 这是颠簸的好兆头。
要检查抖动,您可以运行vmstat -s以显示统计信息。你会看到两行,像这样:
174085 pages swapped in
569123 pages swapped out
Run Code Online (Sandbox Code Playgroud)
这是写入交换区和从交换区读取的页数。只要这些数字没有快速增加,一切都很好 - 交换为您提供更多内存用于实际应用程序和缓存,从而加速您的系统。