详解mpstat、iostat、sar、vmstat命令的使用

2024-02-10 11:48

本文主要是介绍详解mpstat、iostat、sar、vmstat命令的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mpstat是Multiprocessor Statistics的缩写,是实时监控工具,报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CPU的平均状况的信息,而且能够有查看特定的cpu信息,mpstat最大的特点是:可以查看多核心的cpu中每个计算核心的统计数据;而且类似工具vmstat只能查看系统的整体cpu情况。


实例:查看多核cpu当前运行的状况,每两秒更新一次,一共更新5次

[plain]  view plain copy
  1. # mpstat 2 5  
  2. Linux 3.10.0-327.el7.x86_64 (yankerp)   11/01/2017      _x86_64_        (1 CPU)  
  3.   
  4. 07:13:28 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle  
  5. 07:13:30 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00  
  6. 07:13:32 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00  
  7. 07:13:34 PM  all    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00  
  8. 07:13:36 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00  
  9. 07:13:38 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00  
  10. Average:     all    0.10    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.80  


字段的含义

  • %user      在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
  • %nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
  • %sys       在internal时间段里,内核时间(%)       (system/total)*100
  • %iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
  • %irq         在internal时间段里,硬中断时间(%)     (irq/total)*100
  • %soft       在internal时间段里,软中断时间(%)     (softirq/total)*100
  • %idle       在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

iostat主要用于建库系统设备的io负载情况,sostat首次运行时会显示自系统启动开始的各项统计信息,之后UI女性ipstat将显示自上次运行该命令以后的统计信息,用户可以通过指定统计的次数和时间来获得所需的统计信息

语法:iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

命令使用
[root@yankerp ~]# iostat -d -k 2 6
参数-d表示显示设备磁盘的使用状态;-k表示某些使用block为单位的列强制使用kilobytes为单位,2表示数据每隔2秒刷新一次 6表示一共刷新6次

[plain]  view plain copy
  1. # iostat -d -k 2 6  
  2. Linux 3.10.0-327.el7.x86_64 (yankerp)   11/01/2017      _x86_64_        (1 CPU)  
  3.   
  4. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  5. sda              36.71      1375.40      1777.96    9519457   12305674  
  6. scd0              0.00         0.01         0.00         66          0  
  7. dm-0             48.01      1346.02      1708.81    9316107   11827069  
  8. dm-1             23.42        27.75        66.29     192056     458804  
  9.   
  10. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  11. sda               0.50         0.00         2.01          0          4  
  12. scd0              0.00         0.00         0.00          0          0  
  13. dm-0              0.50         0.00         2.01          0          4  
  14. dm-1              0.00         0.00         0.00          0          0  
  15.   
  16. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  17. sda               0.00         0.00         0.00          0          0  
  18. scd0              0.00         0.00         0.00          0          0  
  19. dm-0              0.00         0.00         0.00          0          0  
  20. dm-1              0.00         0.00         0.00          0          0  
  21.   
  22. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  23. sda               0.00         0.00         0.00          0          0  
  24. scd0              0.00         0.00         0.00          0          0  
  25. dm-0              0.00         0.00         0.00          0          0  
  26. dm-1              0.00         0.00         0.00          0          0  
  27.   
  28. Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
  29. sda               0.00         0.00         0.00          0          0  
  30. scd0              0.00         0.00         0.00          0          0  
  31. dm-0              0.00         0.00         0.00          0          0  
  32. dm-1              0.00         0.00         0.00          0          0  

输出信息意义
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。


如果想把K单位换成M那么也是可以的

[root@yankerp ~]# iostat -d -m 2 6



使用iostat查看cpu统计信息使用-C参数

[plain]  view plain copy
  1. # iostat -c 2 6  



-X参数
iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据。
[root@yankerp ~]# iostat -d -x -k 1 6


sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等,sar命令有sysstat安装包安装。

sar命令使用一些参数可以使用sar --help来查看 

Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

  • -A:所有报告的总和
  • -b:显示I/O和传递速率的统计信息
  • -B:显示换页状态
  • -d:输出每一块磁盘的使用信息
  • -e:设置显示报告的结束时间
  • -f:从制定的文件读取报告
  • -i:设置状态信息刷新的间隔时间
  • -P:报告每个CPU的状态
  • -R:显示内存状态
  • –u:输出cpu使用情况和统计信息
  • –v:显示索引节点、文件和其他内核表的状态
  • -w:显示交换分区的状态
  • -x:显示给定进程的装
  • -r:报告内存利用率的统计信息

列1:每2秒采样一次,连续4次,观察cpu的使用情况,并将采样的结果以二进制形式存入当前目录下的文件yankerp中,如下:

[plain]  view plain copy
  1. # sar -u -o yankerp 2 4  

# sar -u -f /root/yankerp 从二进制中调取



# sar -p 1 4报告每个cpu的状态,1秒一次一共4次


sar -q查看平均负载 



sar -r查看内存使用情况



sar -w查看系统swap分区的统计信息



sar -b查看I/O传递速率的信息



sar -d磁盘使用统计信息


默认监控: sar 5 5     //  CPU和IOWAIT统计状态 
(1) sar -b 5 5        // IO传送速率
(2) sar -B 5 5        // 页交换速率
(3) sar -c 5 5        // 进程创建的速率
(4) sar -d 5 5        // 块设备的活跃信息
(5) sar -n DEV 5 5    // 网路设备的状态信息
(6) sar -n SOCK 5 5   // SOCK的使用情况
(7) sar -n ALL 5 5    // 所有的网络状态信息
(8) sar -P ALL 5 5    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 5 5        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 5 5       // 内存和swap空间使用情况
(11) sar -R 5 5       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 5 5       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 5 5       // inode, file and other kernel tablesd的状态信息
(14) sar -w 5 5       // 每秒上下文交换的数目
(15) sar -W 5 5       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 5 5  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 5 5       // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f)

sar为转载文章,更多详细请参考原文:http://www.cnblogs.com/howhy/p/6396437.html 感谢博主的分享


vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

[root@yankerp ~]# vmstat  2 6


以上表示2秒采集一次一共6次

在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

[root@yankerp ~]# vmstat 2


这样的话就是2,秒执行一次,会一直的执行下去。

r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b 表示阻塞的进程

swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free   空闲的物理内存的大小

buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存

cache cache直接用来记忆我们打开的文件,给文件做缓冲

si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte

bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

in 每秒CPU的中断次数,包括时间中断

cs 每秒上下文切换次数

us 用户CPU时间

sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id  空闲 CPU时间

wt 等待IO CPU时间。

这篇关于详解mpstat、iostat、sar、vmstat命令的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697024

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本