详解Linux下的IO监控与分析:系统级+进程级+业务级+文件级IO
副标题[/!--empirenews.page--]
概述 学习优化,理解IO还是很重要的,今天抽空整理了一下这块内容,下面一起看看吧~ 下面这张经典的图源自 Linux Performance and Tuning Guidelines.pdf ![]() 各种IO监视工具在Linux IO 体系结构中的位置 1 、系统级IO监控 1.1、iostat
%util 代表磁盘繁忙程度。100% 表示磁盘繁忙, 0%表示磁盘空闲。但是注意,磁盘繁忙不代表磁盘(带宽)利用率高 argrq-sz 提交给驱动层的IO请求大小,一般不小于4K,不大于max(readahead_kb, max_sectors_kb) 可用于判断当前的IO模式,一般情况下,尤其是磁盘繁忙时, 越大代表顺序,越小代表随机 svctm 一次IO请求的服务时间,对于单块盘,完全随机读时,基本在7ms左右,既寻道+旋转延迟时间 1.2、各统计量之间关系 %util = ( r/s + w/s) * svctm / 1000 # 队列长度 = 到达率 * 平均服务时间 avgrq-sz = ( rMB/s + wMB/s) * 2048 / (r/s + w/s) # 2048 为 1M / 512 1.3、总结 iostat 统计的是通用块层经过合并(rrqm/s, wrqm/s)后,直接向设备提交的IO数据,可以反映系统整体的IO状况,但是有以下2个缺点:
2 、进程级IO监控 2.1、 iotop 和 pidstat (仅rhel6u系列) iotop 顾名思义, io版的top pidstat 顾名思义, 统计进程(pid)的stat,进程的stat自然包括进程的IO状况 这两个命令,都可以按进程统计IO状况,因此可以知道: 1)当前系统哪些进程在占用IO,百分比是多少? 2)占用IO的进程是在读?还是在写?读写量是多少? pidstat 参数很多,介绍几个比较常用的:
2.2、block_dump, iodump iotop 和 pidstat 都依赖于/proc/pid/io文件导出的统计信息, 这个对于老一些的内核是没有的,比如rhel5u2。 因此只好用以上2个命令来替代:
# dmesg
# 不停的dmesg -c
2.3、总结 从进程级IO监控 ,可以看出:
但是也没有办法跟业务层的read,write联系在一起,同时颗粒度较粗,没有办法知道当前进程读写了哪些文件? 耗时? 大小 ? 3、 业务级IO监控 3.1、ioprofile ioprofile 命令本质上是 lsof + strace, ioprofile 可以解决以下三个问题:
3.2、实例 假设某个行为会触发程序一次IO动作,例如: "一个页面点击,导致后台读取A,B,C文件" ./io_event # 假设模拟一次IO行为,读取A文件一次, B文件500次, C文件500次 ioprofile -p `pidof io_event` -c count # 读写次数 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows 8.站长网 aspzz.cn1预览版不支持卸载
- 在Windows 7上编辑IDLE(Python GUI)上下文菜单
- windows – 将RoboCopy与FtpUse结合使用
- Win7电脑开机一直在转圈进不去系统该怎么办?
- windows-server-2003 – 使用W2K3远程桌面/终端服务器更改一
- win10系统计算机无法更新的解决方案教程
- windows-server-2008 – 在Windows Server 2008上移动和更改
- Windows – 如何阻止Microsoft DNS报告版本号?
- Windows 10:如何解决远程过程调用错误和问题
- win8如何升级为win10正式版