首页 存档 技术 查看内容

vmstat:一个标准的报告虚拟内存统计工具

2018-3-30 13:00 |来自: 互联网 257 0

摘要: vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。-- Magesh Marutham ...

vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。
-- Magesh Maruthamuthu

编译自:http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
作者: Magesh Maruthamuthu
译者: geekpi


什么是 RAM?

在智能手机世界,我们每一个人都知道 RAM。因此,我不想深入介绍,这样我就简要概括下。RAM 代表“随机访问内存Random Access Memory”,是一种计算机数据存储,它会存储经常使用的程序来提升系统性能。

什么是虚拟内存?

虚拟内存是一种内存管理方式,计算机通过临时将最近未使用的程序数据从 RAM 转移到硬盘,以平衡或管理内存的短缺。

什么是 vmstat?

vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。

在 Linux 中安装 Sysstat

Linux 中没有独立的vmstat包。它与sysstat绑定在一起,并在大多数发行版的默认仓库上都有。如果还没有安装,只要基于你的发行版输入下面的命令。

  1. [在 CentOS/RHEL 中安装 vmstat]

  2. $ sudo yum install sysstat

  3. [在 Fedora 中安装 vmstat]

  4. $ sudo dnf install sysstat

  5. [在 Debian/Ubuntu 中安装 vmstat]

  6. $ sudo apt-get install sysstat

  7. [在 Arch Linux 中安装 vmstat]

  8. $ sudo pacman -S sysstat

  9. [在 Mageia 中安装 vmstat]

  10. $ sudo urpmi sysstat

  11. [在 openSUSE 中安装 vmstat]

  12. $ sudo zypper install sysstat

不带参数运行 vmstat

假设你已经成功安装 vmstat,在终端中不带参数运行vmstat,它会向你展示 vmstat 的默认结果。

  1. # vmstat

  2. procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

  3. r b swpd free buff cache si so bi bo in cs us sy id wa

  4. 2 0 79496 1614120 139240 787928 0 0 23 10 0 0 11 1 88 0

当你看到上面的输出,你可能已经大致了解了它是什么以及它的目的。不要担心,我们将深入解释每个参数,以便你可以了解 vmstat 的用途和目的。

procs:procs 中有rb列,它报告进程统计信息。在上面的输出中,在运行队列(r)中有两个进程在等待 CPU 并有零个休眠进程(b)。通常,它不应该超过处理器(或核心)的数量,如果你发现异常,最好使用top 命令[1]进一步地排除故障。

  • r:等待运行的进程数。

  • b:休眠状态下的进程数。

memory:memory 下有报告内存统计的swpdfreebuffcache列。你可以用free -m命令看到同样的信息。在上面的内存统计中,统计数据以千字节表示,这有点难以理解,最好添加M参数来看到以兆字节为单位的统计数据。

  • swpd:使用的虚拟内存量。

  • free:空闲内存量。

  • buff:用作缓冲区的内存量。

  • cache:用作高速缓存的内存量。

  • inact:非活动内存的数量。

  • active:活动内存量。

swap:swap 有siso列,用于报告交换内存统计信息。你可以用free -m命令看到相同的信息。

  • si:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存)。

  • so:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存)。

I/O:I/O 有bibo列,它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息。如果你发现有巨大的 I/O 读写,最好使用iotop[2]iostat[3]命令来查看。

  • bi:从块设备接收的块数。

  • bo:发送到块设备的块数。

system:system 有incs列,它报告每秒的系统操作。

  • in:每秒的系统中断数,包括时钟中断。

  • cs:发送到块设备的块数。

CPU:CPU 有csussyidwa列,报告(所用的) CPU 资源占总 CPU 时间的百分比。如果你发现异常,最好使用topfree命令。

  • cs:每秒的系统中断数,包括时钟。

  • us:发送到块设备的块数。

  • sy:用作高速缓存的内存量。

  • id:非活动内存量。

  • wa:活动内存量。

以 MB 方式输出

默认情况下,vmstat 以千字节为单位显示内存统计,这是非常难以理解的,最好添加-S m参数以获取以兆字节为单位的统计。

  1. # vmstat -S m

  2. procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

  3. r b swpd free buff cache si so bi bo in cs us sy id wa

  4. 1 0 103 371 406 2116 0 0 40 15 0 0 11 1 87 0

以延迟方式运行 vmstat 获取更好的统计信息

默认情况下,vmstat 的单次统计信息不足以进一步进行故障排除,因此,添加更新延迟(延迟是更新之间的延迟,以秒为单位)以定期捕获活动。如果你想以 2 秒延迟运行 vmstat ,只需使用下面的命令(如果你想要更长的延迟,你可以根据你的愿望改变)。

以下命令将每 2 秒运行一次,直到退出。

  1. # vmstat 2

  2. procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

  3. r b swpd free buff cache si so bi bo in cs us sy id wa

  4. 1 0 105500 325776 416016 2166912 0 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除


路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部