Linux性能监控的工具集和分析命令工具

目录

常见磁盘IO性能指标

磁盘读写常见指标

  • IOPS(Input/Output Operations per Second)
    • 指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,有顺序IOPS和随机IOPS
    • 比如100次/秒,那iops就是100次/秒,例如数据库类应用等典型场景重点提升这个指标,下面是阿里云盘性能
  • 吞吐量/带宽(Throughput)
    • 是指单位时间内可以成功传输的数据数量,单位为MB/s
    • 如 一个硬盘的读写 IO 是 1MB,硬盘的 IOPS 是 100,那么硬盘总的吞吐率就是 100MB/s
      • 带宽 = IOPS * IO大小
  • 访问时延(Latency)
    • 是指IO请求从发出到收到响应的间隔时间,常以毫秒ms或者微妙us为单位
    • 硬盘响应时间 = 硬盘访问时间 + IO排队延迟,过高的时延会导致应用性能下降或报错
    • 普通的HDD磁盘,随机IO读写延迟是10毫秒,IO带宽大约100MB/秒,随机IOPS一般在100左右
  • 使用率 Utilization
    • 指磁盘处理 I/O 的时间百分比,过高的使用率 ,常规字段 Utilization-缩写%util 表示
    • 如超过 80%意味着磁盘 I/O 存在性能瓶颈
  • I/O 等待队列长度 Queue Length
    • 表示等待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,就会增大队列长度
  • 饱和度
    • 磁盘处理 I/O 的繁忙程度,过高的饱和度说明磁盘存在严重的性能瓶颈
    • 当饱和度为 100% 时,磁盘无法接受新的 I/O 请求
    • 注意:使用率和饱和度是完全不同的
      • 使用率只考虑有没有IO,不考虑IO的大小;当使用率是100%时,磁盘也可能接收新的IO请求

sysstat提供了Linux性能监控的工具集

【全局命令】 iostat

复制代码
- 查看系统综合的磁盘IO情况
- iostat [参数] [时间] [次数]    ` iostat -p ALL -h`
- 参数说明
参数 说明
-c 仅显示CPU状态统计信息
-d 仅显示磁盘统计信息
-k 或 -m 以Kb 或 Mb为单位显示,常用 -h 可读性高
-p 指定显示IO的设备,ALL表示显示所有
-x 显示详细信息
  • 显示信息,iostat不能直接得到磁盘饱和度
字段 说明
【重要】r/s 每秒发送给磁盘的读请求次数 , r/s+ w/s 是磁盘 IOPS
【重要】w/s 每秒发送给磁盘的写请求次数,r/s+ w/s 是磁盘 IOPS
【重要】rkB/s 每秒从磁盘读取的数据量,rkB/s+wkB/s 是吞吐量
【重要】wkB/s 每秒向磁盘写入的数据量,rkB/s+wkB/s 是吞吐量
【重要】r_await 读请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间 r_await+w_await ,是RT响应时间
【重要】w_await 写请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间 r_await+w_await ,是RT响应时间
【重要】aqu-sz 平均请求队列长度
rareq-sz 平均读请求大小
wareq-sz 平均写请求大小
【重要】%util 磁盘处理I/O的时间百分比,表示的是磁盘的忙碌情况;如果>80% 就是磁盘可能处于忙碌状态 一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的

多核CPU监控的核心工具 mpstat

参数 说明 示例
-P {cpu | ALL} 指定要监控的CPU核心 cpu:CPU编号(从0开始) ALL:所有CPU核心 mpstat -P 0 监控0号核心 mpstat -P ALL 监控所有核心
间隔时间 数据采集间隔(秒) mpstat 2 每2秒刷新一次
次数 采集次数,不指定则持续运行 mpstat 2 5 每2秒采集,共5次
-u 显示CPU利用率(默认参数,通常省略) mpstat -u 1
字段 说明
CPU CPU核心编号(all表示所有核心平均值)
%usr 用户态CPU时间(运行应用程序代码)
%nice 低优先级(nice值>0)用户进程CPU时间
%sys 内核态CPU时间(系统调用、内核线程)
%iowait CPU等待I/O完成的时间(重要!>5%需关注)
%irq 硬件中断处理时间
%soft 软中断处理时间(网络包处理、调度等)
%steal 虚拟化环境中被宿主机抢占的时间(>10%表示虚拟机竞争激烈)
%guest 运行虚拟CPU的时间(虚拟机客户机)
%gnice 低优先级虚拟CPU时间
%idle CPU空闲时间(等待任务)

进程级资源监控 pidstat

  • 语法与参数
bash 复制代码
pidstat [选项] [间隔时间] [次数]
类别 参数 说明 关键指标
CPU监控 -u 进程CPU使用率(默认选项) %usr, %system, %CPU
内存监控 -r 页错误与内存使用 minflt/s, majflt/s, VSZ, RSS, %MEM
I/O监控 -d 磁盘I/O统计 kB_rd/s, kB_wr/s, kB_ccwr/s
上下文切换 -w 进程上下文切换 cswch/s, nvcswch/s
进程筛选 -p <PID> 监控指定进程 可指定多个PID,逗号分隔
-p ALL 监控所有进程
线程监控 -t 显示线程详细信息 TGID(线程组ID), TID(线程ID)
命令显示 -l 显示完整命令行 便于识别进程
输出格式 -h 水平输出(无换行) 便于脚本处理
间隔控制 间隔 采样间隔(秒) 1 表示1秒
次数 采样次数 5 表示采样5次后退出
  • 监控所有进程的CPU使用率,每2秒刷新
字段 说明
%usr 进程在用户态的CPU使用率(运行应用程序代码)
%system 进程在内核态的CPU使用率(执行系统调用)
%guest 进程在虚拟机中运行的CPU使用率
%wait 进程等待运行的时间百分比(Linux 2.6.26+)
%CPU 进程总的CPU使用率 = %usr + %system + %guest
CPU 进程最后运行的CPU核心编号

磁盘IO常见指标和分析命令工具介绍

局部命令 iotop

  • 查看当前系统的各个进程 使用磁盘IO的情况
  • 安装 yum install -y iotop
  • iotop -o -d 3 每3秒刷新下各个进程磁盘IO情况
  • 参数
参数 说明
-o 只显示正在读写磁盘的程序
-d 跟一个数值,表示iotop命令刷新的时间
字段 说明
Total DISK READ 从磁盘中读取的总速率
Total DISK WRITE 往磁盘里写入的总速率
Actual DISK READ 从磁盘中读取的实际速率
Actual DISK WRITE 往磁盘里写入的实际速率
TID 线程ID,按 p 可以转换成进程ID
PRIO 优先级
USER 线程所有者
DISK READ 进程从磁盘中读取的速率
DISK WRITE 进程往磁盘里写入的速率
SWAPIN 进程swap交换百分比
IO> IO等待所占用的百分比
COMMAND 具体的进程命令

总结

  • 【全局】iostat是系统级别的IO监控
  • 【局部】iotop是进程级别IO监控
相关推荐
企微自动化2 分钟前
企业微信二次开发:深度解析外部群主动推送的实现路径
java·开发语言·企业微信
_修铁路的2 分钟前
【Poi-tl】 Word模板填充导出
java·word·poi-tl
武子康4 分钟前
Java-216 RocketMQ 4.5.1 在 JDK9+ 从0到1全流程启动踩坑全解:脚本兼容修复(GC 参数/CLASSPATH/ext.dirs)
java·大数据·分布式·消息队列·系统架构·rocketmq·java-rocketmq
austin流川枫5 分钟前
🔥MySQL的大表优化方案 (实战分享)
java·mysql·性能优化
码界奇点7 分钟前
基于Spring Boot和Vue.js的视频点播管理系统设计与实现
java·vue.js·spring boot·后端·spring·毕业设计·源代码管理
爱吃山竹的大肚肚8 分钟前
MySQL 支持的各类索引
java·数据库·sql·mysql·spring·spring cloud
程序员水自流12 分钟前
MySQL常用内置函数详细介绍
java·数据库·mysql
知识分享小能手12 分钟前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04 的软件包管理 —— 全面详解(9)
linux·学习·ubuntu
廋到被风吹走13 分钟前
【Spring】Spring Boot详细介绍
java·spring boot·spring
期待のcode15 分钟前
Java中的继承
java·开发语言