linux常用命令——vmstat

    科技2025-06-22  13

    1.vmstat介绍

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析

    2.命令格式

    vmstat  [刷新延时   刷新次数]

    3.命令参数

    -a 开启显示active/inactive memory。

    -f 显示此系统启动以来的forks的总数,包括fork、vfork和clone system calls

    -m 显示slabinfo信息

    -n 只显示头信息,不周期性显示.也就是说开启这个参数,只显示头部信息一次。

    -s 显示各种事件计数器表和内存统计信息,这显示不重复。

    -d 显示磁盘统计数据(内核要求2.5.70 或以上)

    -w 可以扩大字段长度,当内存较大时,默认长度不够完全展示内存。

    -p 显示磁盘分区数据(disk partition statistics )

    -S 参数S控制输出性能指标的单位,k(1000) K(1024) 或 M(1048576) 默认单位为K(1024 bytes)

    -V 查看vmstat命令的版本

    4.基本用法演示

    每1秒刷新一次,共刷新3次

    实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了。

    每2秒刷新一次,直到手动停止:

    字段说明:

    Procs(进程):

    r: 运行队列中进程数量 b: 等待IO的进程数量

    Memory(内存):

    swpd: 使用虚拟内存大小 free: 可用内存大小 buff: 用作缓冲的内存大小 cache: 用作缓存的内存大小

    Swap:

    si: 每秒从交换区写到内存的大小

    so: 每秒写入交换区的内存大小 1

    IO:(现在的Linux版本块的大小为1024bytes)

    bi: 每秒读取的块数 bo: 每秒写入的块数

    系统:

    in: 每秒中断数,包括时钟中断。【interrupt】 cs: 每秒上下文切换数。 【count/second】

    CPU(以百分比表示):

    us: 用户进程执行时间(user time) sy: 系统进程执行时间(system time) id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。 wa: 等待IO时间

    备注:

    如果r经常大于4,id经常少于40,表示cpu的负荷很重。 如果bi,bo长期不等于0,表示内存不足。 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。 Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。 显示活跃和非活跃内存

    vmstat -a 2 5 【-a 显示活跃和非活跃内存,所显示的内容除增加inact和active】显示从系统启动至今的fork数量

    vmstat -f 【 linux下创建进程的系统调用是fork】说明: 信息是从/proc/stat中的processes字段里取得的

    查看内存使用的详细信息

    vmstat -s 【显示内存相关统计信息及多种系统活动数量】说明:这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat

    查看磁盘的读/写

    vmstat -d 【查看磁盘的读写】说明:这些信息主要来自于/proc/diskstats.

    查看/dev/sda1磁盘的读/写

    vmstat -p /dev/sda1 【显示指定磁盘分区统计信息】说明:这些信息主要来自于/proc/diskstats.

    reads:来自于这个分区的读的次数。

    read sectors:来自于这个分区的读扇区的次数。

    writes:来自于这个分区的写的次数。

    requested writes:来自于这个分区的写请求次数。

    查看系统的slab信息

    vmstat -m

    说明:这些信息主要来自于/proc/slabinfo

    slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。

    查看进程路径

    [root@localhost ~]# netstat -an | grep 2158

    [root@localhost ~]# ll /proc/2158

    cwd符号链接的是进程运行目录;

    exe符号连接就是执行程序的绝对路径;

    cmdline就是程序运行时输入的命令行命令;

    environ记录了进程运行时的环境变量;

    fd目录下是进程打开或使用的文件的符号连接。

    lsof -p 2158

    Processed: 0.011, SQL: 8