linux 下进程io分析(dmesg相关、block_dump相关)

环境相关:
OS:CentOS release 6.9

1. 需求

当系统IO频繁时,想要获取最耗IO的进程信息时,可以使用dstat命令或者其他系统命令,这些命令都是获取系统底层数据然后进行汇总展示。本文介绍打开block_dump,通过查看dmesg信息定位高IO的方法。

2. 具体操作

开启block_dump:

echo 1 > /proc/sys/vm/block_dump

查看dmesg信息,寻找规律:

dmesg -c
# 打印dmesg当前信息后清除缓存中留存的当前信息
# 查看信息,发现有dirtied inode文件句柄占用信息、WRITE block块写入信息等
# 块写入信息就是我们需要分析的信息

使用awk命令做这类信息的几种分析:

dmesg -c|awk '/WRITE block/{a[$1]+=$4}END{for(i in a) print i,a[i]}'|column -t
# 如下方的输出信息截取
# jbd2/sda3-8(315):  211293280
# flush-8:0(705):    355218184
# 第一列是进程名和PID,第二列是当前dmesg信息中,这些进程写入的块的数量

dmesg -c|awk '/WRITE block/{a[$6]+=$4}END{for(i in a) print i,a[i]}'|column -t
# 如下方的输出信息截取
# sda3  2276570920
# 第一列是被写入的设备,第二列是当前dmesg信息中,这些设备写入的块的数量

dmesg -c|awk '/WRITE block/{a[$1" "$6]+=$4}END{for(i in a) print i,a[i]}'|column -t
# 如下方的输出信息截取
# flush-8:0(705):    sda3  1836672752
# jbd2/sda3-8(315):  sda3  2050043504
# 第一列是进程名和PID,第二列是被写入的设备,第三列是当前dmesg信息中,写入的块的数量

3. 收尾

最后需要手动关闭block_dump功能:

echo 0 > /proc/sys/vm/block_dump

[TOC]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值