IO命令性能优化学习

五个命令

top命令、vmstat命令、iostat命令、iotop命令、pt-ioprofile命令

一、top命令

它对于所有正在运行的进行和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的资源占用情况等信息

使用

1.adb shell
2.top

演示

top命令所显示
Tasks: 459 total 进程总数
  1 running 正在运行的进程数
  456 sleeping 睡眠的进程数
  0 stopped 停止的进程数
  2 zombie 僵尸进程数
  Cpu(s):
  800% cpu 总量
  2% us 用户空间占用CPU百分比
  32% sy 内核空间占用CPU百分比
  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
  762% id 空闲CPU百分比

二、vmstat命令

用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况

使用

adb shell
vmstat -n 2 3

-n 2:每两秒查看一次
3:查看三次

演示

在这里插入图片描述

类别参数含义注意事项
procsr正在运行和等待CPU时间片的进程原则上1核的CPU运行队列不要超过2,总运行数不要超过核心数2倍,否则被视为系统压力过大
b处在非中断睡眠状态的进程数等待资源分配
cpuus用户进程所占用的cpu百分比
sy系统CPU使用时间如果us+sy>80%,可能存在CPU不足
idCPU闲置时间
Memoryswpd虚拟内存使用情况单位:kb
free空闲的内存单位:kb
buff被分配用来缓存的内存单位:kb
Swapsi从磁盘交换到内存的交换页数量单位:kb/s
so从内存交换到磁盘的交换页数量单位:kb/s
iobi发送到块设备的块数块/s
bo从块设备接收到的块数块/s
systemin每秒的中断数,包括时钟中断
cs每秒的环境(上下文)切换次数

三、iostat

iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。

使用

iostat [选项] [<时间间隔>] [<次数>]

命令参数

  • -c: 显示CPU使用情况
  • -d: 显示磁盘使用情况、
  • -N: 显示磁盘阵列(LVM) 信息
  • -n: 显示NFS 使用情况
  • -k: 以 KB 为单位显示
  • -m: 以 M 为单位显示
  • -t: 报告每秒向终端读取和写入的字符数和CPU的信息
  • -V: 显示版本信息
  • -x: 显示详细信息
  • -p:[磁盘] 显示磁盘和分区的情况

含义

在这里插入图片描述
(图源网络,侵删)

  1. CPU 参数概念
    %user:CPU处在用户模式下的时间百分比。
    %nice:CPU处在带NICE值的用户模式下的时间百分比。
    %system:CPU处在系统模式下的时间百分比。
    %iowait:CPU等待输入输出完成时间的百分比。
    %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
    %idle:CPU空闲时间百分比。
  2. disk 参数概念
    device:磁盘名称
    tps:每秒钟发送到的I/O请求数.
    Blk_read/s:每秒读取的block数.
    Blk_wrtn/s:每秒写入的block数.
    Blk_read:读入的block总数.
    Blk_wrtn:写入的block总数.

备注

若%idle参数占值较大,说明CPU目前较为空闲。
若#iowait高,说明现在有io瓶颈。
若%idle不高但是系统比较卡,可能是CPU在等待内存分配容量,应该增加内存。

四、iotop

使用

首先第一点,iotop是一个类似于top的工具,用于查看实时的磁盘活动。iotop 监控 Linux 内核输出的 I/O 使用信息,并且显示一个系统中进程或线程的当前 I/O 使用情况。它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程花费的时间的百分比。

那么首先需要进行安装(安装yum用的python版本要是2.7版本,一开始我直接下载最新的3.11版本结果不能用,提示需要2.7)

yum install iotop

安装完毕后进行使用,基础款直接输入iotop

其他命令参数如下

参数作用
-o只显示正在产生I/O的进程或线程,运行过程中,可以通过按o随时切换
-b非交互式下运行,一般用来记录日志
-n NUM设置监控(显示)次数,主要用于非交互式,默认无限
-d SEC设置显示的间隔秒数,支持非整数
-p PID只显示指定进程(PID)的信息
-u USER显示指定用户的进程信息
-P只显示进程,不显示所有线程
-a累积的I/O,显示从iotop启动后每个进程累积的I/O总数,便于诊断问题
-k显示使用KB单位
-t非交互模式下,加上时间戳
-q只在第一次监测时显示列名. 去除头部一些行:这个参数可以设置最多3次来移除头部行:-q列头部只在最初交互显示一次;-qq列头部不显示;-qqq,I/O的总结不显示

以上参考文章https://blog.csdn.net/weixin_56270746/article/details/125233625

交互模式

如果在启动时命令指令没有带-b参数,则可以在接口的运行过程中进行如下交互:
1.排序字段:使用键盘左右箭头控制排序的字段(排序字段右侧有">“或”<",例如: IO>)
2.排序方式:“r"键可以控制升序还是降序排列(”>“表示降序,”<"表示升序);
3.仅显示有IO发生的进程:"o"控制是否仅显示发生IO的进程;
4.进程/线程:"p"键控制线程号/进程号的(PID/TID)
5.累积流量:"a"键控制是否显示累积IO量,更加利于查看问题
6.强制刷新:"q"键退出,除了这些键之外的任意键都会强制刷新。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值