Linux1天1命令—3.vmstat

vmstat 是virtual meomory statistics的缩写,意为虚拟内存统计

功能:在给定时间对操作系统的虚拟内存、进程、CPU、IO读写活动进行监控

特点:linux/unix都能用;有别于top,不看单一进程,看整体;低开销工具


基本用法

- 使用:一般通过两个数字参数(间隔时间和次数)完成监控,也可以其他方式使用

- vmstat                // 单次查看
- vmstat 3              // 每3秒查看1次;动态
- vmstat 5 10           // 每5秒查看1次,查看10次;动态

 

输出字段

[root@wg ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 3029876 199616 690980    0    0     0     2    3    2  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0    41 1009   39  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     3 1004   36  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     4 1004   36  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     6 1003   33  0  0 100  0  0

--- 说明 ---

# Procs        进程
  - r:         运行队列中进程数量
  - b:         等待队列中进程数量 

# Memory       内存
  - swpd       使用虚拟内存大小
  - free       可用虚拟内存大小
  - buff       用于缓冲内存大小
  - cache      用于缓存内存大小

# Swap         交换内存
  - si         每秒从交换区写到内存的大小
  - so         每秒写入交换区的内存的大小

# IO           输入输出(现在linux版本块大小为1024b)
  - bi         每秒读取的块数
  - bo         每秒写入的块数    

# System       系统
  - in         每秒终端数,包括时钟中断
  - cs         每秒上下文切换数

# CPU          (用百分比表示)
  - us         用户进程执行时间(user time)
  - sy         系统进程执行时间(system time)
  - id         空闲时间(包括IO等待时间,中央处理器的空闲时间);百分比表示,一般id+us+sy=100
  - wa         表示等待使用CPU的百分比(该数值大说明CPU不足)
  - st         表示被偷走的CPU所占百分比(该值一般为0,不用关注)

# 备注:
  - 如果r经常大于4,且id经常少于40,表示cpu负荷很重
  - 如果bi,bo长期不等于0,表示内存不足
  - 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。 // 不懂,原作这里..,disk来的没头没脑

『 Linux具有高稳定性,可靠性和很好的可伸缩性和扩展性,能针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。』
 

虚拟内存和物理内存(虚拟内存回头补)

 

用法详解

1、vmstat -a 显示活跃和非活跃内存

vmstat -a 5 5   // 每5秒执行1次,5次,比基础命令增加inact和active显示
- inact: 非活跃内存大小
- active: 活跃的内存大小

2、vmstat -f 显示从系统启动至今的fork数量

vmstat -f        // 结果xxx forks
- linux下创建进程的系统调用是fork
- 数据从/proc/stat中的processes字段里取得

3、vmstat -s 查看内存使用详细信息

vmstat -s
- 信息分别来自/proc/meminfo,/proc/stat和/proc/vmstat

4、vmstat -d 显示磁盘相关统计信息(读/写?)

vmstat -d 
- 信息主要来自于/proc/diskstats
- merged表示一次来自于合并的写/读请求
- 一般系统会把多个连接/邻近的读/写请求合并到一起来操作

5、vmstat -p 显示指定磁盘分区统计信息

vmstat -p /dev/sda1          // 显示/dev/sda1分区信息
- 信息主要来自于/proc/diskstats
- reads:来自于这个分区的读的次数
- read sectors:来自于这个分区的读扇区的次数
- writes:来自于这个分区的写的次数
- requested writes:来自于这个分区的写请求次数

6、vmstat -m 查看系统的slab信息

vmstat -m
- 信息来自于/proc/slabinfo

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

7、vmstat -S 使用指定单位显示

vmstat -a -S M      // 以兆为单位显示内存
- 参数有 k、K、m、M,分别代表1000102410000001048576字节(byte)
- 默认单位为K(1024 bytes)

8、vmstat -V:显示vmstat版本信息

posted @   梵高de画笔  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示