Trace回放

来源:互联网 发布:开源crm系统 java 编辑:程序博客网 时间:2024/06/03 02:51

Trace回放

1        概述

1.1        Trace的概念

这里说的Trace指的是IO Trace。Trace的解释是在真实系统运行一段时间内磁盘所接受的IO请求的记录[1]

Trace的格式有很多,比如SPC Trace文本规范[2]。SPC格式的trace的每条IO请求记录包含5个域,分别为:

1.       设备号;

2.       逻辑块地址(LBA),以扇区为单位;

3.       请求数据的长度,以字节为单位;

4.       请求类型,读请求或写请求,用w或r表示;

5.       请求下达的时间戳。格式为x.xxxxxx,单位为秒,小数点后有六位,精确到us。

1.2        Trace 的回放

Trace回放的目的就是让我们的系统模拟真实的工作负载,从而测试系统的性能。Trace回放主要的测试指标为io的平均响应时间。我们主要通过在某些请求段中的IO平均响应时间或某段时间内的IO平均响应时间来评价系统。

Trace回放的方式主要有两种:

1.       压力回放,忽略时间戳的回放,不间断的回放每条请求。

2.       守时回放,保证请求在时间戳之前不会发送。

1.3        Trace 的处理

我们获得的trace不一定适合我们研究的系统。如在SPC Trace中有设备号,可能我们的系统并没有这么多设备或者设备大小和trace中的不一致等。所以我们需要处理我们获得的trace文件,使之适合我们的系统。

对于trace的处理方式主要有如下几种[1]

1.      单盘

a.      直接忽视设备号,每个请求都视为访问同一设备

优点:实现简单

缺点:丧失了原先的局部性,可以造成性能下降

b.      将磁盘扩展,第二个设备视为直接第一个设备的衍生,并依次类推。即新的逻辑块地址=块设备号×总块数+旧逻辑块地址

优点:可能保留了局部性。

缺点:需要进行换算,实现会比较复杂,需要比较大的磁盘。

2.      多盘

对于多盘,如果盘数恰好相等,则无数转换;

如果盘数不等,可以先将其压缩为单盘,然后按照单盘的方式来回放。

关于Trace的处理可以参加实验室的资料,里面的工具,脚本自己也没看,实验室资料自己也不便公开,等自己查看后,相关代码再放在自己的github上。

2        Trace回放方式

2.1        FIO和Blktrace模拟块设备的访问模式

基本思想就是使用Blktrace来录制真实应用对设备的访问模式,fio负责读入这些模式,同时重放模拟对设备的访问。这个部分主要参考文献[4]。

关于Blktrace如何录制设备的访问模式,可以参考blktrace的man手册,以及blktrace的User Guide(在/usr/share/doc/目录下,源码url:  git://git.kernel.dk/blktrace.git,可以直接在源码中的doc中make生成pdf的User Guide)。文章[5]中也介绍了blktrace和blkparse的搭配使用。Blkparse是将blktrace的输出转化为有格式的输出。

2.2        直接使用FIO回放trace

将trace文件格式转化为FIO的trace文件格式,直接回放,但是采用FIO只能压力回放,也即去掉了traceIO中的时间间隔。本以为可以利用FIOtrace格式种的waitaction来完成守时回放,但是通过测试,发现有问题。

2.3      采用btrecord+btreplay来回放trace文件

Btrecord的原始功能是将blktrace的输出转化为模式访问流,然后再利用btreplay来回放模式访问流。

可以通过修改btrecord的代码,直接将trace文件作为btrecord的输入,然后再利用btreplay来回放btrecord的输出文件,同时在btreplay的代码中增加统计代码。这样就变相完成了trace文件的回放。

Btrecord和btreplay的代码相对比较简单,容易修改。

Btrecord的代码修改主要就是在处理输入的trace文件上,将文件转化为btreplay的输入流。而btreplay代码本身在功能是不需要修改的,但是代码本身有bug,修复了bug。

3        参考文献

[1].    浅析trace的处理. http://blog.csdn.net/it_yuan/article/details/8535626

[2].  UMassTraceRepository. http://traces.cs.umass.edu/index.php/Storage/Storage.

[3].    Blue, Whale. trace 工具. http://10.10.1.9/svn/bwlab/research/bwraid/trace-player/trace/

[4].    Linux下Fio和Blktrace模拟块设备的访问模式. http://blog.yufeng.info/archives/1112

[5].  blktrace工具学习与使用 http://blog.chinaunix.net/uid-28412198-id-3763127.html

0 0