Quantcast
Viewing all articles
Browse latest Browse all 11063

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


Image may be NSFW.
Clik here to view.
vmstat:一个标准的报告Linux系统虚拟内存统计工具

什么是 RAM?

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

什么是虚拟内存?

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

什么是 vmstat?

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

在 Linux 中安装 Sysstat

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

[在CentOS/RHEL中安装vmstat] $sudoyuminstallsysstat [在Fedora中安装vmstat] $sudodnfinstallsysstat [在Debian/Ubuntu中安装vmstat] $sudoapt-getinstallsysstat [在ArchLinux中安装vmstat] $sudopacman-Ssysstat [在Mageia中安装vmstat] $sudourpmisysstat [在openSUSE中安装vmstat] $sudozypperinstallsysstat 不带参数运行 vmstat

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

#vmstat procs-----------memory-------------swap-------io-----system------cpu---- rbswpdCodeSecfcachesisobiboincsussyidwa 2079496161412013924078792800231000111880

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

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

r:等待运行的进程数。 b:休眠状态下的进程数。

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

swpd:使用的虚拟内存量。 free:空闲内存量。 buff:用作缓冲区的内存量。 cache:用作高速缓存的内存量。 inact:非活动内存的数量。 active:活动内存量。

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

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

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

bi:从块设备接收的块数。 bo:发送到块设备的块数。

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

in:每秒的系统中断数,包括时钟中断。 cs:系统为了处理所以任务而上下文切换的数量。

CPU:CPU 有 us、sy、id 和 wa 列,报告(所用的) CPU 资源占总 CPU 时间的百分比。如果你发现异常,最好使用 top 和 free 命令。

us:处理器在非内核程序消耗的时间。 sy:处理器在内核相关任务上消耗的时间。 id:处理器的空闲时间。 wa:处理器在等待IO操作完成以继续处理任务上的时间。 以 MB 方式输出

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

#vmstat-Sm procs-----------memory-------------swap-------io-----system------cpu---- rbswpdCodeSecfcachesisobiboincsussyidwa 10103371406211600401500111870 以延迟方式运行 vmstat 获取更好的统计信息

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

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

#vmstat2 procs-----------memory-------------swap-------io-----system------cpu---- rbswpdCodeSecfcachesisobiboincsussyidwa 10105500325776416016216691200401500111870 0010550032564441601621669200001310831174111870 0010550030864841602421669280011615591453162820 00105500285948416032216693200012934100391900 00105500326620416040216694000127922106891900 0010550036670441604821669440001783595591900 0010550036645641605621669480012285991891900 0010550036645641605621669480001515391504172810 001055003652244160602166996001199841097111880 带延迟和计数运行 vmstat

或者,你可以带延迟和特定计数运行 vmstat,一旦达到给定的计数,然后自动退出。

以下命令将每 2 秒运行一次,10 次后自动退出。

#vmstat210 procs-----------memory-------------swap-------io-----system------cpu---- rbswpdCodeSecfcachesisobiboincsussyidwa 1079496158191615738081041200231001111880 20794961559464157380810416001118211749212770 007949615837681573848104160014668179991900 20794961556364157384810428001113921545152830 00794961583272157384810428001013071448142840 207949615820321573848104280014142460541960 10794961575848157384810428001019122407262710 007949615828841573848104360016967882591900 2079496156936815739281043200112692096991900 107949615836121574008104440073920012530202770 显示活动和非活动内存

默认情况下,vmstat 会显示除活动和非活动内存之外的内存统计信息。如果要查看活动和非活动内存统计信息,请在 vmstat 后添加 -a 参数。

#vmstat-a procs-----------memory-------------swap-------io-----system------cpu---- rbswpdfreeinactactivesisobiboincsussyidwa 10105500238759241514858411200401501111870 打印磁盘统计

在 vmstat 后面添加 -d 参数会以每个磁盘一行的方式显示统计(包含读、写和 IO)。

#vmstat-d disk-------------reads------------------------writes----------------IO------ totalmergedsectorsmstotalmergedsectorsmscursec ram00000000000 ram10000000000 ram20000000000 ram30000000000 ram40000000000 ram50000000000 ram60000000000 ram70000000000 ram80000000000 ram90000000000 ram100000000000 ram110000000000 ram120000000000 ram130000000000 ram140000000000 ram150000000000 loop00000000000 loop10000000000 loop20000000000 loop30000000000 loop40000000000 loop50000000000 loop60000000000 loop70000000000 fd00000000000 sda1660405090449725948821905745573230037054280937702160032056118189160040915 sdb25735757747998531247122045772353208502519128323736645890112509480182336 总结磁盘统计 在 vmstat 后面添加 -D 会显示全局统计(包括全部的磁盘、分区、全部读、合并的读、

Viewing all articles
Browse latest Browse all 11063

Trending Articles