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监控
相关推荐
没有bug.的程序员19 小时前
HashMap 源码深度剖析:红黑树转换机制与高并发性能陷阱
java·性能优化·并发编程·源码分析·红黑树·hashmap·技术深度
yaoxin52112319 小时前
294. Java Stream API - 对流进行归约
java·开发语言
曹轲恒19 小时前
Thread.sleep() 方法详解
java·开发语言
Coder_Boy_19 小时前
基于SpringAI的在线考试系统-考试模块前端页面交互设计及优化
java·数据库·人工智能·spring boot
小小仙。20 小时前
IT自学第十九天
java·开发语言
悟空码字20 小时前
SpringBoot集成Hera,分布式应用监控与追踪解决方案
java·springboot·编程技术·后端开发·hera
砚边数影20 小时前
Java基础强化(三):多线程并发 —— AI 数据批量读取性能优化
java·数据库·人工智能·ai·性能优化·ai编程
RisunJan20 小时前
Linux命令-jwhois(查询域名和IP地址注册信息)
linux·tcp/ip
悟能不能悟20 小时前
.jrxml和.jasper文件是什么关系
java
Run_Teenage20 小时前
认识ELF格式文件,理解库链接过程
linux·运维·服务器