为什么 vmstat 的 swpd 不为零

为什么 vmstat 的 swpd 不为零

根据手册页vmstat,“swpd”表示使用的虚拟内存量。据我了解,大多数情况下它应该为零,除非物理 CPU 空间不足。

但是,我刚刚发现我的服务器的“swpd”值不为零。
在此处输入图片描述

我不知道为什么。即使我有 700 多个进程,CPU 也几乎 100% 未被使用。
在此处输入图片描述

总的来说,交换区使用了大约 190M。与总大小 250G 相比,这个大小并不算大。

那么,这是否意味着即使 CPU 空闲,某些进程也会使用虚拟交换?

答案1

交换与 CPU 利用率无关。交换是写入磁盘的内存。

CPU 可以直接访问普通 RAM,与交换相比,RAM 的速度极快。这就是我们使用 RAM 的原因 - 作为 CPU 需要访问的数据的快速缓冲区。

交换允许内核将未使用的内存写入磁盘,以便在需要时检索。这是一个昂贵的过程,因为与内存相比,磁盘速度极慢,但它也允许使用比物理内存更多的内存。

此外,有些东西可能永远不会被使用,但却被分配了内存空间。通常内核会交换出那些没有使用的东西。

190MB 的 SWAP 使用量不是问题。问题在于计算机是否必须将内容写入交换区并再次检索。

我的笔记本电脑目前有 445MB 写入交换空间,但还有超过 3GiB 的未使用内存 - 显然内核在某个阶段发现了一些未使用的东西,并决定将其交换出去。

简而言之:不要关心交换的使用情况,除非:

  1. 你会看到频繁鞭笞
  2. 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

我们可以看到,有 247MiB 可用。但这并不是全部。此外,还有超过 3GiB 的缓存可以释放非常如果内核需要更多内存来做某事,它会迅速释放内存。因此,实际可用内存量为 3955MiB,如 下的第二行所示free。您还可以看到使用的交换空间。

简而言之:不要关心交换空间的使用情况,除非您遇到问题,例如软件响应非常缓慢 - 这是软件抖动的明显迹象。

要检查抖动情况,您可以运行vmstat -s以显示统计信息。您将看到两行,如下所示:

   174085 pages swapped in
   569123 pages swapped out

这是写入交换和从交换读取的页面数。只要这些数字没有快速增加,一切都很好 - 交换给你更多的用于实际应用程序的内存和可加快系统速度的缓存。

相关内容