blktrace 编译与使用【转】

转自:https://www.cnblogs.com/linhaostudy/p/16182795.html

正文

在对ssd性能调优过程中,有使用到blktrace,本文对blktrace做一个记录
回到顶部

文章目录

  1. blktrace介绍
  2. blktrace aarch64移植
  3. 使用
  4. 实例
  5. 数据分析
  6. blktrace分析ssd性能差的问题实例

回到顶部

1. blktrace介绍

我们首先需要知道提交到 block I/O层的每个I/O执行的具体操作,如下图所示

blktrace 编译与使用【转】

blktrace功能如下:

  1. 提供关于单个I/O的详细的block layer信息
  2. 低开销内核跟踪机制(在I/O压力相对较大的情况下,对应用程序性能的影响不到2%)
  3. 可配置:
  4. 可以指定一个或多个物理设备或逻辑设备
  5. 用户可选择事件-可以在事件获取和/或格式化输出时指定过滤器
  6. 同时支持”实时”和”回放”跟踪

blktrace总体架构如下:

blktrace 编译与使用【转】
回到顶部

2. blktrace aarch64移植

首先对blktrace,blkparse ,btt做个简单的介绍,blktrace负责采集,blkparse负责对采集的数据进行解析,而btt能够协助分析统计

blktrace选项如下,常用的使用有

  • -d dev #添加一个设备追踪
  • -o file #指定输出文件的名字
root@a1000:~# blktrace

blkparse选项如下,常用的使用有

  • -i input #输入包含跟踪数据的文件
  • -o output #输出文件。如果未给出,则输出为标准输出
root@a1000:~# blkparse -h
Usage: blkparse

-i <file>           |

折叠

btt选项如下,常用的使用有

  • -i input #输入文件
root@a1000:~# btt -h
Usage: btt
[ -a               | --seek-absolute ]
[ -A               | --all-data ]
[ -B <output name> | --dump-blocknos=<output name> ]
[ -d <seconds>     | --range-delta=<seconds> ]
[ -D      | --devices= ]
[ -e      | --exes=  ]
[ -h               | --help ]
[ -i <input name>  | --input-file=<input name> ]
[ -I <output name> | --iostat=<output name> ]
[ -l <output name> | --d2c-latencies=<output name> ]
[ -L <freq>        | --periodic-latencies=<freq> ]
[ -m <output name> | --seeks-per-second=<output name> ]
[ -M <dev map>     | --dev-maps=<dev map>
[ -o <output name> | --output-file=<output name> ]
[ -p <output name> | --per-io-dump=<output name> ]
[ -P <output name> | --per-io-trees=<output name> ]
[ -q <output name> | --q2c-latencies=<output name> ]
[ -Q <output name> | --active-queue-depth=<output name> ]
[ -r               | --no-remaps ]
[ -s <output name> | --seeks=<output name> ]
[ -S <interval>    | --iostat-interval=<interval> ]
[ -t <sec>         | --time-start=<sec> ]
[ -T <sec>         | --time-end=<sec> ]
[ -u <output name> | --unplug-hist=<output name> ]
[ -V               | --version ]
[ -v               | --verbose ]
[ -X               | --easy-parse-avgs ]
[ -z <output name> | --q2d-latencies=<output name> ]
[ -Z               | --do-active

回到顶部

4. 实例

  1. 对/dev/nvme0n1p1进行采集,随后执行dd命令。
root@a1000:~
  1. 利用blkparse对blktrace采集的文件进行解析,其中-d 是输出二进制文件,方便btt分析,-o 是将blkparse解析的数据放入nvme_data中,可自行分析。
root@a1000:~

nvme_data原始数据内容如下:

blktrace 编译与使用【转】
  1. btt解析nvme.blktrace.bin
root@a1000:~# btt -i nvme.blktrace.bin
==================== All Devices ====================

            ALL           MIN           AVG           MAX           N

折叠
回到顶部

5. 数据分析

blktrace 编译与使用【转】

第7个字段在上图中没有标出来,它表示操作类型,具体含义是:

“R” for Read, “W” for Write, “D” for block, “B” for Barrier operation。

第6个字段Event解释如下:

blktrace 编译与使用【转】
 Q------->G------------>I--------->M------------------->D----------------------------->C
 |-Q time-|-Insert time-|
 |--------- merge time ------------|-merge with other IO|
 |----------------scheduler time time-------------------|---driver,adapter,storagetime--|

 |----------------------- await time in iostat output ----------------------------------|

其中:
Q2Q — time between requests sent to the block layer
Q2G — time from a block I/O is queued to the time it gets a request allocated for it
G2I — time from a request is allocated to the time it is Inserted into the device’s queue
Q2M — time from a block I/O is queued to the time it gets merged with an existing request
I2D — time from a request is inserted into the device’s queue to the time it is actually issued to the device
M2D — time from a block I/O is merged with an exiting request until the request is issued to the device
D2C — service time of the request by the device
Q2C — total time spent in the block layer for a request

blkparse解析出来的数据依旧是很难直接进行分析的,btt是对这些数据做一个总结。
回到顶部

6. blktrace分析ssd性能差的问题实例

如果您觉得阅读本文对您有帮助,请点一下"推荐"按钮,您的"推荐"将是我最大的写作动力!

Original: https://www.cnblogs.com/sky-heaven/p/16423322.html
Author: sky-heaven
Title: blktrace 编译与使用【转】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545650/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ffmpeg fails with error “max delay reached. need to consume packet”

    rtsp服务默认使用udp协议,容易丢包,报这个错误。改为tcp,则解决。 ffmpeg-设置rtsp推流/拉流使用的协议类型(TCP/UDP)(转) 拉流(设置TCP/UDP) …

    技术杂谈 2023年5月31日
    086
  • 编程中常见的Foo,是什么意思?

    语意不清,学起来心里老是有疙疙瘩瘩的感觉,于是查吧,终于揭开了这两个东西的不正常关系,讲个各个处在闹心中的初学者们听吧。 参考了众多的网络资料,最后,明确的告诉大家,foo和bar…

    技术杂谈 2023年5月31日
    085
  • clang 分四步编译main.c

    这里用的clang/clang++ 分四步编译main.c/main.cpp文件 1.1 C++源文件 #include int main() { std::cout <&l…

    技术杂谈 2023年7月10日
    054
  • 百钱买百鸡问题

    百钱买百鸡问题 题目:公元前5世纪末,中国古代数学家张丘建在他的《算经》中提出了著名的 “百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,…

    技术杂谈 2023年7月11日
    089
  • HTML:1.初识web

    认识WEB 「网页」主要是由 &#x6587;&#x5B57;、 &#x56FE;&#x50CF;和 &#x8D85;&#x94FE…

    技术杂谈 2023年7月11日
    051
  • ubuntu下vscode安装go插件失败解决办法

    mac环境下设置GOSUMDB,可能会导致不会库到校验不通过 go env -w GOSUMDB=gosum.io+ce6e7565+AY5qEHUk/qmHc5btzW45JVo…

    技术杂谈 2023年6月21日
    093
  • 导航规划之CH算法介绍

    1 CH算法的基本原理 CH(Contraction Hierarchies)算法是 Robert Geisberger、Peter Sanders、Dominik Schulte…

    技术杂谈 2023年5月31日
    0123
  • 离职交接,心态要好

    话说今年经历了几次项目交接?主动和被动的都算! 实在是没想到,都到年底快收尾的时候,还要突然接手离职人员的项目; 不断拉扯和管理内心情绪,避免原地裂开; 年度中再次经历突发的交接事…

    技术杂谈 2023年7月23日
    057
  • Java-SpringBoot-使用多态给项目解耦

    Java-SpringBoot-使用多态给项目解耦 提及 今天在打算维护一下智慧社区这个项目的时候,想到项目是使用Satoken这个开箱即用的授权和认证的组件,因为在项目开启的时候…

    技术杂谈 2023年6月21日
    0101
  • 统计本周每天的数据

    MySQL5.7 目前有两个思路: 穷举本周每天的日期,left join 数据表 指定统计的时间范围、按照时间间隔进行统计(类似ES桶聚合date_histogram) 思路一(…

    技术杂谈 2023年7月25日
    071
  • 定时同步和定时备份xcopy

    每天定时同步数据 每天定时备份目录,将该目录下所有文件拷贝到备份目录(以当前时间命名),并删除早于14天的备份 Original: https://www.cnblogs.com/…

    技术杂谈 2023年5月31日
    084
  • 关于code review

    关于code review背景:我们组是属于技术平台,后端一共就4个研发,主要是给整个部门提供基础库,以及解决方案,所以代码量不多,对代码要求质量比较高,组内成员整体水平也比较高,…

    技术杂谈 2023年5月31日
    086
  • 三分钟图解事务隔离级别,看一遍就懂

    前文说过,”锁” 是数据库系统区别于文件系统的一个关键特性,其对象是 事务,用来锁定的是数据库中的对象,如表、页、行等。锁确实提高了并发性,但是却不可避免地…

    技术杂谈 2023年7月25日
    077
  • Swift对比Dart

    Dart、Swift 目前是开发用的比较多的语言,他们都是比较现代化的语言,在语法方面都比较像,本文会对其语言进行一下对比,便于记忆和语言过渡。本次的对比是基于最新Dart和Swi…

    技术杂谈 2023年6月1日
    073
  • 数据库

    建库操作 #创建数据库(默认字符集编码) create database test20210420 #创建数据库的时候指定字符集编码以及字符校验规则 create database…

    技术杂谈 2023年6月21日
    099
  • airflow sample to pass metadata to task. —–XCOM

    At first, let us take a look at one sample which one we do not need to pass the metadata h…

    技术杂谈 2023年5月31日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球