我们透过blktrace来观察io行为的时候,第一件事情需要选择目标设备,以便分析该设备的io行为。具体使用可以参考我之前写的几篇:这里 这里 这里

blktrace分为内核部分和应用部分,应用部分收到我们要捕捉的设备名单,传给内核。内核分布在block层的各个tracepoint就会开始工作,把相关的数据透过relayfs传递到blktrace的应用部分,应用部分把这些数据记到磁盘,以便后续分析。架构参见下图:

从man blktrace中可以看到:

blktrace stores the extracted data into files stored in the local directory. The format of the file names is (by default) device.blktrace.cpu, where device is the base device name (e.g, if we are tracing /dev/sda, the base device name would be sda); and cpu identifies a CPU for the event stream

这时候问题就来了,如果我的机器只有一个设备,那么blktrace存数据文件这个动作就会影响到我们正常的IO行为。

通常我们的机器会有多个设备,所以我们会把数据放在不同的设备上,以避免互相干扰。如果实在只有一个盘,那么还可以把数据放在ramdisk里面。 但是ramdisk有大小的限制,还是不够好。

幸运的是blktrace提供通过网络的方式来保存数据文件,只不过文档没写明。

通过网络保存数据的时候,需要2个机器:
1. 一台运行blktrace server负责保存数据: blktrace -l
2. 一台运行blktrace client负责捕获目标设备: blktrace -h hostname 可选-s控制是否透过sendfile发送数据,在大数据量的情况下有性能优势,默认是透过send一个包一个包的发送。

我们来演示下,二个终端,一个模拟服务器,一个模拟客户端:
服务器终端上:

$ blktrace -l
server: waiting for connections...
server: connection from 127.0.0.1
server: end of run for 127.0.0.1:sda
=== sda ===
CPU : events, KiB data
CPU : events, KiB data
Total: events (dropped ), KiB data
$ tree 127.0.0.1----\:\:/
127.0.0.1----::/
├── sda.blktrace.
└── sda.blktrace. directories, files

客户端终端上:

$ sudo blktrace -d /dev/sda -h 127.0.0.1
blktrace: connecting to 127.0.0.1
blktrace: connected!
^C=== sda ===
CPU : events, KiB data
CPU : events, KiB data
Total: events (dropped ), KiB data

我们来验证下数据的准确性,在127.0.0.1-2012-02-28-08:15:00目录下操作:

$ blkrawverify sda
Verifying sda
CPU
CPU
Wrote output to sda.verify.out
$ cat sda.verify.out ---------------
Verifying sda
---------------------
Summary for cpu :
valid + invalid (100.0%) processed ---------------------
Summary for cpu :
valid + invalid (100.0%) processed

这样我们就顺利的在另外一台机器上抓到了目标机器上特定设备的io模式数据,可以进行后续的分析了。

祝玩得开心!

Post Footer automatically generated by wp-posturl plugin for wordpress.

blktrace未公开选项网络保存截取数据的更多相关文章

  1. PB Event ID 含义 内容浅析2 未公开的数据窗口事件

    原网址:https://www.cnblogs.com/lenya/archive/2010/11/12/3706971.html  (作者:Mark   Brown)         到目前为止,P ...

  2. 微软未公开的 SP

    一些用在SQL 2000的企业管理GUI中,并且不打算用于其他的流程.微软已预计将其中的一些存储过程从未来的SQL Server版本中删除(或已经删除了).虽然这些存储过程可能很有用并为你节省了很多时 ...

  3. 《当大数据遇见网络:大数据与SDN》

    总体结构: <当大数据遇见网络:大数据与SDN> 摘要 大数据和SDN无论是对于学术界还是工业界来说都极具吸引力.传统上人们都是分别在最前沿工作中研究这两个重要的领域.然而一方面,SDN的 ...

  4. CListCtrlEx:一个支持文件拖放和实时监视的列表控件——用未公开API函数实现Shell实时监视

    一.需求无论何时,当你在Explorer窗口中创建.删除或重命名一个文件夹/文件,或者插入拔除移动存储器时,Windows总是能非常快速地更新它所有的视图.有时候我们的程序中也需要这样的功能,以便当用 ...

  5. 应用程序首选项(application preference)及数据存储

    应用程序首选项(application preference)用来存储用户设置,考虑以下案例: a. 假设有一款MP3播放器程序,当用户调节了音量,当下次运行该程序时,可能希望保持上一次调节的音量值. ...

  6. 可怕!CPU暗藏了这些未公开的指令!

    大家好,我是轩辕. 我们知道,我们平时编程写的高级语言,是经过编译器编译以后,变成了CPU可以执行的机器指令: 而CPU能支持的指令,都在它的指令集里面了. 很久以来,我都在思考一个问题: CPU有没 ...

  7. Flutter网络请求和数据解析

    一:前言 - 什么是反射机制,Flutter为什么禁用反射机制? 在Flutter中它的网络请求和数据解析稍微的比较麻烦一点,因为Flutter不支持反射机制.相信大家都看到这么一条,就是Flutte ...

  8. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  9. SQL Server里一些未公开的扩展存储过程

    SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.com SQL Server里一些未公开的扩展存储过程 扩展存储过程(xp)是直接运行在SQL Server ...

随机推荐

  1. 《DSP using MATLAB》Problem 4.11

    代码: %% ---------------------------------------------------------------------------- %% Output Info a ...

  2. FutureTask的用法及两种常用的使用场景 + FutureTask的方法执行示意图

    from:  https://blog.csdn.net/linchunquan/article/details/22382487 FutureTask可用于异步获取执行结果或取消执行任务的场景.通过 ...

  3. frameset的用法

    碰到一个frameset的问题,因为我比较懒,就先从网上拿来一篇基础知识,呵呵,好记性不如烂笔头啊        所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESE ...

  4. test20181005 序列

    题意 考场30分 维护差值,考虑每次移动的变更,当前2-n位置上的差加1,1位置上的差减n-1. 然后要求的是绝对值的和,用吉司机线段树维护最大最小值.次大次小值. 期望复杂度\(O(n \log n ...

  5. python list 的查找, 搜索, 定位, 统计

    Python中是有查找功能的,四种方式:in.not in.count.index,前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hello'],为 ...

  6. 直接new一个对象出来

  7. HBase scan shell操作详解

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value) -- sf: column family ...

  8. 廖雪峰 ---- Python教程

    这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本. Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学 ...

  9. spark之 spark 2.2.0 Standalone安装、wordCount演示

    说明:前提安装好hadoop集群,可参考 http://blog.csdn.net/zhang123456456/article/details/77621487 一. scala 安装 1.下载 s ...

  10. Debug---Eclipse断点调试基础

    1.进入debug模式(基础知识列表)1.设置断点 2.启动servers端的debug模式 3.运行程序,在后台遇到断点时,进入debug调试状态 ========================= ...