| .TH BTREPLAY 8 "December 8, 2007" "blktrace git\-20071207142532" "" |
| |
| |
| .SH NAME |
| btreplay \- recreate IO loads recorded by blktrace |
| |
| |
| .SH SYNOPSIS |
| .B btreplay [ \fIoptions\fR ] <\fIdev\fR...> |
| |
| |
| .SH DESCRIPTION |
| |
| .P |
| The \fIbtrecord\fR and \fIbtreplay\fR tools provide the ability to |
| record and replay IOs captured by the \fIblktrace\fR utility. Attempts |
| are made to maintain ordering, CPU mappings and time-separation of IOs. |
| |
| |
| .P |
| The \fIblktrace\fR utility provides the ability to collect detailed |
| traces from the kernel for each IO processed by the block IO layer. The |
| traces provide a complete timeline for each IO processed, including |
| detailed information concerning when an IO was first received by the block |
| IO layer \(em indicating the device, CPU number, time stamp, IO direction, |
| sector number and IO size (number of sectors). Using this information, |
| one is able to \fBreplay\fR the IO again on the same machine or another |
| set up entirely. |
| |
| .P |
| The basic operating work-flow to replay IOs would be something like: |
| |
| .IP \- 2 |
| Run \fIblktrace\fR to collect traces. Here you specify the |
| device or devices that you wish to trace and later replay IOs upon. Note: |
| the only traces you are interested in are \fBQUEUE\fR requests \(em |
| thus, to save system resources (including storage for traces), one could |
| specify the \fI-a queue\fR command line option to \fIblktrace\fR. |
| |
| .IP \- 2 |
| While \fIblktrace\fR is running, you run the workload that you |
| are interested in. |
| |
| .IP \- 2 |
| When the work load has completed, you stop the \fIblktrace\fR |
| utility (thus saving all traces over the complete workload). |
| |
| .IP \- 2 |
| You extract the pertinent IO information from the traces saved by |
| \fIblktrace\fR using the \fIbtrecord\fR utility. This will parse |
| each trace file created by \fIblktrace\fR, and crafty IO descriptions |
| to be used in the next phase of the workload processing. |
| |
| .IP \- 2 |
| Once \fIbtrecord\fR has successfully created a series of data |
| files to be processed, you can run the \fIbtreplay\fR utility which |
| attempts to generate the same IOs seen during the sample workload phase. |
| |
| |
| .SH OPTIONS |
| |
| \-c <\fInum\fR> |
| .br |
| \-\-cpus=<\fInum\fR> |
| .RS |
| Set number of CPUs to use. |
| .RE |
| |
| \-d <\fIdir\fR> |
| .br |
| \-\-input\-directory=<\fIdir\fR> |
| .RS |
| Set input directory. |
| This option requires a single parameter providing the directory |
| name for where input files are to be found. The default directory is the |
| current directory (\fI.\fR). |
| .RE |
| |
| \-F |
| .br |
| \-\-find\-records |
| .RS |
| Find record files automatically |
| This option instructs \fIbtreplay\fR to go find all the record files in the |
| directory specified (either via the \fI-d\fR option, or in the default |
| directory (\fI.\fR). |
| .RE |
| |
| \-h |
| .br |
| \-\-help |
| .RS |
| Show help and exit. |
| .RE |
| |
| \-i <\fIbasename\fR> |
| .br |
| \-\-input\-base=<\fIbasename\fR> |
| .RS |
| Set base name for input files. |
| Each input file has 3 fields: |
| .IP 1. 3 |
| Device identifier (taken directly from the device name of the |
| \fIblktrace\fR output file). |
| .IP 2. 3 |
| \fIbtrecord\fR base name \(em by default ``replay''. |
| .IP 3. 3 |
| The CPU number (again, taken directly from the |
| \fIblktrace\fR output file name). |
| .P |
| This option requires a single parameter that will override the default name |
| (replay), and replace it with the specified value. |
| .RE |
| |
| \-I <\fInum\fR> |
| .br |
| \-\-iterations=<\fInum\fR> |
| .RS |
| Set number of iterations to run. |
| This option requires a single parameter which specifies the number of times |
| to run through the input files. The default value is 1 |
| .RE |
| |
| \-M <\fIfilename\fR> |
| .br |
| \-\-map\-devs=<\fIfilename\fR> |
| .RS |
| Specify device mappings. |
| This option requires a single parameter which specifies the name of a |
| file contain device mappings. The file must be very simply managed, with |
| just two pieces of data per line: |
| |
| .IP \- 2 |
| The device name on the recorded system (with the '\fI/dev/\fR' |
| removed). Example: \fI/dev/sda\fR would just be \fIsda\fR. |
| |
| .IP \- 2 |
| The device name on the replay system to use (again, without the |
| '\fI/dev/\fR' path prepended). |
| |
| .P |
| An example file for when one would map devices \fI/dev/sda\fR and |
| \fI/dev/sdb\fR on the recorded system to \fIdev/sdg\fR and |
| \fIsdh\fR on the replay system would be: |
| |
| .nf |
| .IP |
| sda sdg |
| sdb sdh |
| .fi |
| |
| .P |
| The only entries in the file that are allowed are these two element lines \(em |
| we do not (yet?) support the notion of blank lines, or comment lines, or the |
| like. |
| |
| .P |
| The utility allows for multiple \fI-M\fR options to be |
| supplied on the command line. |
| .RE |
| |
| \-N |
| .br |
| \-\-no\-stalls |
| .RS |
| Disable pre-bunch stalls. |
| When specified on the command line, all pre-bunch stall indicators will be |
| ignored. IOs will be replayed without inter-bunch delays. |
| .RE |
| |
| \-v |
| .br |
| \-\-verbose |
| .RS |
| Enable verbose output. |
| When specified on the command line, this option instructs \fIbtreplay\fR |
| to store information concerning each \fBstall\fR and IO operation |
| performed by \fIbtreplay\fR. The name of each file so created will be |
| the input file name used with an extension of \fI.rep\fR appended onto |
| it. Thus, an input file of the name \fIsdab.replay.3\fR would generate a |
| verbose output file with the name \fIsdab.replay.3.rep\fR in the |
| directory specified for input files. |
| .P |
| In addition, \fIbtreplay\fR will also output to \fIstderr\fR the |
| names of the input files being processed. |
| .RE |
| |
| \-V |
| .br |
| \-\-version |
| .RS |
| Show version number and exit. |
| .RE |
| |
| \-W |
| .br |
| \-\-write-enable |
| .RS |
| Enable writing during replay. |
| As a precautionary measure, by default \fIbtreplay\fR will not |
| process \fBwrite\fR requests. In order to enable \fIbtreplay\fR to |
| actually \fBwrite\fR to devices one must explicitly specify the |
| \fI\-W\fR option. |
| .RE |
| |
| |
| .SH AUTHORS |
| \fIbtreplay\fR was written by Alan D. Brunelle. This |
| man page was created from the \fIbtreplay\fR documentation by Bas Zoetekouw. |
| |
| |
| .SH "REPORTING BUGS" |
| Report bugs to <linux\-btrace@vger.kernel.org> |
| |
| .SH COPYRIGHT |
| Copyright \(co 2007 Alan D. Brunelle, Alan D. Brunelle and Nathan Scott. |
| .br |
| This is free software. You may redistribute copies of it under the terms of |
| the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. |
| There is NO WARRANTY, to the extent permitted by law. |
| .br |
| This manual page was created for Debian by Bas Zoetekouw. It was derived from |
| the documentation provided by the authors and it may be used, distributed and |
| modified under the terms of the GNU General Public License, version 2. |
| .br |
| On Debian systems, the text of the GNU General Public License can be found in |
| /usr/share/common\-licenses/GPL\-2. |
| |
| .SH "SEE ALSO" |
| The full documentation for btreplay can be found in /usr/share/doc/blktrace on Debian systems. |
| .br |
| blktrace (8), blkparse (1), btrecord (8) |
| |