linux中btt工具详解
在之前的文章中介绍了如何使用blktrace 以及其工作原理和架构。我们知道blktrace 跟踪块设备的统计信息,每个CPU会有一个文件存储,然后通过blkparse可以将这些文件整合成一个文件来显示。
不过blkparse显示的文件过于庞大,而通过btt分析后会发现监控数据变得更加有意义。
1. 示例
监控获得数据
#blktrace -d /dev/sda -o sdatest
合并多个文件
#blkparse -i sdatest -d sdatest.bin
#btt -i sdatest.bin
2. 输出简要信息
第一部分平均时间
IO时间主要是分为三个区域:
n  插入或合并IO到请求队列的时间,计算从块层到插入,即Q2I(Q2I=Q2G+G2I)
n  请求队列到驱动的时间,即是I2D。
n  驱动和设备时间,即是D2C.
此外还有还有Q2Q表示IO交到块层的时间。系统等待请求的时间在Q2G中。一般情况下Q2C=Q2I+I2D+D2C,说一般情况因为有些IO会会执行merge。
把大写字母函数的表,再次方便查找:
Act | Description |
A | IO was remapped to a different device |
B | IO bounced |
C | IO completion |
D | IO issued to driver |
F | IO front merged with request on queue |
G | Get request |
I | IO inserted onto request queue |
M | IO back merged with request on queue |
P | Plug request |
Q | IO handled by request queue code |
S | Sleep request |
T | Unplug due to timeout |
U | Unplug request |
X | Split |
显示所有IO的平均时间,如下
==================== All Devices ====================
ALL MIN AVG MAX N
--------------- ------------- ------------- ------------- -----------
Q2Q 0.000001946 0.091683105 2.044408235 23
Q2G 0.000000414 0.000033828 0.000674679 25
G2I 0.000000102 0.000144889 0.002673577 25
Q2M 0.000000182 0.000000856 0.000002371 4
I2D 0.000000470 0.004403646 0.005128490 16
M2D 0.000004614 0.003767183 0.005123517 4
D2C 0.000103260 0.003153379 0.043896995 20
Q2C 0.000105885 0.007446862 0.043903980 20
第二部分设备损耗
第一部分中得到设备的平均延时,第二部分得到各个阶段消耗比例得到定性分析,如下图:
==================== Device Overhead ====================
DEV | Q2G G2I Q2M I2D D2C
---------- | --------- --------- --------- --------- ---------
( 8, 0) | 0.5678% 2.4320% 0.0023% 47.3074% 42.3451%
---------- | --------- --------- --------- --------- ---------
Overall | 0.5678% 2.4320% 0.0023% 47.3074% 42.3451%
第三部分设备合并信息
==================== Device Merge Information ====================
DEV | #Q #D Ratio | BLKmin BLKavg BLKmax Total
---------- | -------- -------- ------- | -------- -------- -------- --------
( 8, 0) | 25 25 1.0 | 1 672 2560 16808
Q表示传入的IO请求,D表示合并后发出的请求,此外还能看到平均IO块大小为672。
第四部分磁盘寻道讯息
用于显示连续队列和提交IO之间的扇区距离。NSEEKS表示提交到驱动的IO寻道次数, MEAS表示IO之间距离,MEDIA为0表示向前和向后寻道次数一样,MODE中数值表示块IO中连续的扇区,这部分比较晦涩。
包含Q2Q和D2D两部分,Q2Q是到达的IO请求之间,D2D是驱动中处理的IO.请求
==================== Device Q2Q Seek Information ====================
DEV | NSEEKS MEAN MEDIAN | MODE
---------- | --------------- --------------- --------------- | ---------------
( 8, 0) | 24 5406419.2 0 | 0(8)
---------- | --------------- --------------- --------------- | ---------------
Overall | NSEEKS MEAN MEDIAN | MODE
Average | 24 5406419.2 0 | 0(8)
==================== Device D2D Seek Information ====================
DEV | NSEEKS MEAN MEDIAN | MODE
---------- | --------------- --------------- --------------- | ---------------
( 8, 0) | 25 5190101.0 0 | 0(9)
---------- | --------------- --------------- --------------- | ---------------
Overall | NSEEKS MEAN MEDIAN | MODE
Average | 25 5190101.0 0 | 0(9)
第五部分请求队列阻塞信息
队列不是无限的的,必然存在队列阻塞情况,这个就是现实队列阻塞,不能被驱动处理。这里的统计信息就是现实不能被处理的比例,如下图:
==================== Plug Information ====================
DEV | # Plugs # Timer Us | % Time Q Plugged
---------- | ---------- ---------- | ----------------
( 8, 0) | 12( 0) | 0.032358934%
DEV | IOs/Unp IOs/Unp(to)
---------- | ---------- ----------
( 8, 0) | 2.1 0.0
---------- | ---------- ----------
Overall | IOs/Unp IOs/Unp(to)
Average | 2.1 0.0
第六部分队列中IO调度
有时候需要关注请求在IO调度上花费的时间。
DEV | Avg Reqs @ Q
---------- | -------------
( 8, 0) | 4.4
详细数据
使用--all-data或-A可以显示更详细信息。
可以显示每个设备的在各个阶段的统计数据。
3. 活动数据文件
活动数据文件的格式容易被画图和分析,如下:
# Total System
# Total System : q activity
0.000000624 0.0
0.000000624 0.4
0.004054842 0.4
0.004054842 0.0
2.048463077 0.0
2.048463077 0.4
2.108712044 0.4
2.108712044 0.0
文件中数据是划分成对的,每对包含队列信息和完成信息。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 基础动画之帧动画详解
在上一篇 Android 基础动画之补间动画详解 主要介绍了补间动画的基本属性以及补间动画在Android起始设计之初带来的一些问题。本篇文章主要介绍的是Android的帧动画。 帧动画,我们从字面意思来理解,帧:就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。简单点说就是类似幻灯片播放的那种效果,因此帧动画的本质就是将一张张的图片,通过代码对这些图片进行连续的活动(这样就形成了动画) 假设现在有这样一个效果如图,这个动画就类似手机WIFI连接信号,从一格到满格 效果图 那么,使用帧动画的方式该如何实现该效果? xml方式实现 文件名:anim_list.xml (文件存放路径: main/res/drawable) anim_list.xml <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:on...
- 下一篇
Android实现局域网二维码分享图片(带密码验证)
最近接到一个需求,需要实现一个局域网的图片二维码分享功能;具体怎么样呢,先看下面的效果图: 由于是局域网,请使用真机,如果有两个手机更好了,连接同个局域网就可以看到;如果是只有一个手机,那就电脑上看把, html 的布局有点丑,因为主要是 适配手机,我也不擅长这一块,见怪不怪吧。 一、需求分析 要实现局域网,一般就是搭建个 ServerSocket,设备连接时输出网址即可 二维码分享,没啥好说,zxing . 咦,好像就没了啊,关键是局域网这个服务器了, 搭建 Android 的局域网,自己写的话,估计调试都调到很久,github 搜了一下,主要有三个,AndServer ,国人写的,思路比较适合我们,但有时会遇到连接超时的问题,不知道是不是我网络的问题;还有 NanoHttpd 和 AndroidAsync,NanoHttpd 适合java,且调试不好调试,最后选择了 AndroidAsync,接入简单,而且接口也比较好用。(以上只是个人观点),但 AndroidAsync 关于服务器方面的资料还是比较少的,所以得看源码了,不过这里也做了一些封装,到时可以参考一下。 二、代码配置 局...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果