xref: /aosp_15_r20/external/blktrace/btreplay/doc/btreplay.tex (revision 1a3d31e37cc95e9919fd86900a2b6a555f55952c)
1*1a3d31e3SAndroid Build Coastguard Worker%
2*1a3d31e3SAndroid Build Coastguard Worker% Copyright (C) 2007 Alan D. Brunelle <[email protected]>
3*1a3d31e3SAndroid Build Coastguard Worker%
4*1a3d31e3SAndroid Build Coastguard Worker%  This program is free software; you can redistribute it and/or modify
5*1a3d31e3SAndroid Build Coastguard Worker%  it under the terms of the GNU General Public License as published by
6*1a3d31e3SAndroid Build Coastguard Worker%  the Free Software Foundation; either version 2 of the License, or
7*1a3d31e3SAndroid Build Coastguard Worker%  (at your option) any later version.
8*1a3d31e3SAndroid Build Coastguard Worker%
9*1a3d31e3SAndroid Build Coastguard Worker%  This program is distributed in the hope that it will be useful,
10*1a3d31e3SAndroid Build Coastguard Worker%  but WITHOUT ANY WARRANTY; without even the implied warranty of
11*1a3d31e3SAndroid Build Coastguard Worker%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12*1a3d31e3SAndroid Build Coastguard Worker%  GNU General Public License for more details.
13*1a3d31e3SAndroid Build Coastguard Worker%
14*1a3d31e3SAndroid Build Coastguard Worker%  You should have received a copy of the GNU General Public License
15*1a3d31e3SAndroid Build Coastguard Worker%  along with this program; if not, write to the Free Software
16*1a3d31e3SAndroid Build Coastguard Worker%  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17*1a3d31e3SAndroid Build Coastguard Worker%
18*1a3d31e3SAndroid Build Coastguard Worker%  vi :set textwidth=75
19*1a3d31e3SAndroid Build Coastguard Worker%
20*1a3d31e3SAndroid Build Coastguard Worker\documentclass{article}
21*1a3d31e3SAndroid Build Coastguard Worker\usepackage{multirow,graphicx,placeins}
22*1a3d31e3SAndroid Build Coastguard Worker
23*1a3d31e3SAndroid Build Coastguard Worker\begin{document}
24*1a3d31e3SAndroid Build Coastguard Worker%---------------------
25*1a3d31e3SAndroid Build Coastguard Worker\title{\texttt{btrecord} and \texttt{btreplay} User Guide}
26*1a3d31e3SAndroid Build Coastguard Worker\author{Alan D. Brunelle ([email protected])}
27*1a3d31e3SAndroid Build Coastguard Worker\date{\today}
28*1a3d31e3SAndroid Build Coastguard Worker\maketitle
29*1a3d31e3SAndroid Build Coastguard Worker\begin{abstract}
30*1a3d31e3SAndroid Build Coastguard Worker\input{abstract.tex}
31*1a3d31e3SAndroid Build Coastguard Worker\end{abstract}
32*1a3d31e3SAndroid Build Coastguard Worker\thispagestyle{empty}\newpage
33*1a3d31e3SAndroid Build Coastguard Worker%---------------------
34*1a3d31e3SAndroid Build Coastguard Worker\tableofcontents\thispagestyle{empty}\newpage
35*1a3d31e3SAndroid Build Coastguard Worker%---------------------
36*1a3d31e3SAndroid Build Coastguard Worker\section{Introduction}
37*1a3d31e3SAndroid Build Coastguard Worker\input{abstract.tex}
38*1a3d31e3SAndroid Build Coastguard Worker
39*1a3d31e3SAndroid Build Coastguard Worker\bigskip
40*1a3d31e3SAndroid Build Coastguard WorkerThis document presents the command line overview for
41*1a3d31e3SAndroid Build Coastguard Worker\texttt{btrecord} and \texttt{btreplay}, and shows some commonly used
42*1a3d31e3SAndroid Build Coastguard Workerexample usages of it in everyday work here at OSLO's Scalability and
43*1a3d31e3SAndroid Build Coastguard WorkerPerformance Group.
44*1a3d31e3SAndroid Build Coastguard Worker
45*1a3d31e3SAndroid Build Coastguard Worker\subsection*{Build Note}
46*1a3d31e3SAndroid Build Coastguard Worker
47*1a3d31e3SAndroid Build Coastguard WorkerTo build these tools, one needs to
48*1a3d31e3SAndroid Build Coastguard Workerplace the source directory next to a valid
49*1a3d31e3SAndroid Build Coastguard Worker\texttt{blktrace}\footnote{\texttt{git://git.kernel.dk/blktrace.git}}
50*1a3d31e3SAndroid Build Coastguard Workerdirectory, as it includes \texttt{../blktrace} in the \texttt{Makefile}.
51*1a3d31e3SAndroid Build Coastguard Worker
52*1a3d31e3SAndroid Build Coastguard Worker
53*1a3d31e3SAndroid Build Coastguard Worker%---------------------
54*1a3d31e3SAndroid Build Coastguard Worker\newpage\section{\texttt{btrecord} and \texttt{btreplay} Operating Model}
55*1a3d31e3SAndroid Build Coastguard Worker
56*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{blktrace} utility provides the ability to collect detailed
57*1a3d31e3SAndroid Build Coastguard Workertraces from the kernel for each IO processed by the block IO layer. The
58*1a3d31e3SAndroid Build Coastguard Workertraces provide a complete timeline for each IO processed, including
59*1a3d31e3SAndroid Build Coastguard Workerdetailed information concerning when an IO was first received by the block
60*1a3d31e3SAndroid Build Coastguard WorkerIO layer -- indicating the device, CPU number, time stamp, IO direction,
61*1a3d31e3SAndroid Build Coastguard Workersector number and IO size (number of sectors). Using this information,
62*1a3d31e3SAndroid Build Coastguard Workerone is able to \emph{replay} the IO again on the same machine or another
63*1a3d31e3SAndroid Build Coastguard Workerset up entirely.
64*1a3d31e3SAndroid Build Coastguard Worker
65*1a3d31e3SAndroid Build Coastguard Worker\subsection{Basic Workflow}
66*1a3d31e3SAndroid Build Coastguard WorkerThe basic operating work-flow to replay IOs would be something like:
67*1a3d31e3SAndroid Build Coastguard Worker
68*1a3d31e3SAndroid Build Coastguard Worker\begin{enumerate}
69*1a3d31e3SAndroid Build Coastguard Worker  \item Run \texttt{blktrace} to collect traces. Here you specify the
70*1a3d31e3SAndroid Build Coastguard Worker  device or devices that you wish to trace and later replay IOs upon. Note:
71*1a3d31e3SAndroid Build Coastguard Worker  the only traces you are interested in are \emph{QUEUE} requests --
72*1a3d31e3SAndroid Build Coastguard Worker  thus, to save system resources (including storage for traces), one could
73*1a3d31e3SAndroid Build Coastguard Worker  specify the \texttt{-a queue} command line option to \texttt{blktrace}.
74*1a3d31e3SAndroid Build Coastguard Worker
75*1a3d31e3SAndroid Build Coastguard Worker  \item While \texttt{blktrace} is running, you run the workload that you
76*1a3d31e3SAndroid Build Coastguard Worker  are interested in.
77*1a3d31e3SAndroid Build Coastguard Worker
78*1a3d31e3SAndroid Build Coastguard Worker  \item When the work load has completed, you stop the \texttt{blktrace}
79*1a3d31e3SAndroid Build Coastguard Worker  utility (thus saving all traces over the complete workload).
80*1a3d31e3SAndroid Build Coastguard Worker
81*1a3d31e3SAndroid Build Coastguard Worker  \item You extract the pertinent IO information from the traces saved by
82*1a3d31e3SAndroid Build Coastguard Worker  \texttt{blktrace} using the \texttt{btrecord} utility. This will parse
83*1a3d31e3SAndroid Build Coastguard Worker  each trace file created by \texttt{blktrace}, and craft IO descriptions
84*1a3d31e3SAndroid Build Coastguard Worker  to be used in the next phase of the workload processing.
85*1a3d31e3SAndroid Build Coastguard Worker
86*1a3d31e3SAndroid Build Coastguard Worker  \item Once \texttt{btrecord} has successfully created a series of data
87*1a3d31e3SAndroid Build Coastguard Worker  files to be processed, you can run the \texttt{btreplay} utility which
88*1a3d31e3SAndroid Build Coastguard Worker  attempts to generate the same IOs seen during the sample workload phase.
89*1a3d31e3SAndroid Build Coastguard Worker\end{enumerate}
90*1a3d31e3SAndroid Build Coastguard Worker
91*1a3d31e3SAndroid Build Coastguard Worker\subsection{IO Stream Replay Characteristics}
92*1a3d31e3SAndroid Build Coastguard Worker  The major characteristics of the IO stream that are kept intact include:
93*1a3d31e3SAndroid Build Coastguard Worker
94*1a3d31e3SAndroid Build Coastguard Worker  \begin{description}
95*1a3d31e3SAndroid Build Coastguard Worker    \item[Device] The IOs are replayed on the same device as was seen
96*1a3d31e3SAndroid Build Coastguard Worker    during the sample workload.
97*1a3d31e3SAndroid Build Coastguard Worker
98*1a3d31e3SAndroid Build Coastguard Worker    \item[IO direction] The same IO direction (read/write) is maintained.
99*1a3d31e3SAndroid Build Coastguard Worker
100*1a3d31e3SAndroid Build Coastguard Worker    \item[IO offset] The same device offset is maintained.
101*1a3d31e3SAndroid Build Coastguard Worker
102*1a3d31e3SAndroid Build Coastguard Worker    \item[IO size] The same number of sectors are transferred.
103*1a3d31e3SAndroid Build Coastguard Worker
104*1a3d31e3SAndroid Build Coastguard Worker    \item[Time differential] The time stamps stored during the
105*1a3d31e3SAndroid Build Coastguard Worker    \texttt{blktrace} run are used to determine the amount of time between
106*1a3d31e3SAndroid Build Coastguard Worker    IOs during the sample workload. \texttt{btreplay} \emph{attempts} to
107*1a3d31e3SAndroid Build Coastguard Worker    maintain the same time differential between IOs, but no guarantees as
108*1a3d31e3SAndroid Build Coastguard Worker    to complete accuracy are provided by the utility.
109*1a3d31e3SAndroid Build Coastguard Worker
110*1a3d31e3SAndroid Build Coastguard Worker    \item[Device IO Stream Ordering] All IOs on a device are submitted in
111*1a3d31e3SAndroid Build Coastguard Worker    the precise order they were seen during the sample workload run.
112*1a3d31e3SAndroid Build Coastguard Worker  \end{description}
113*1a3d31e3SAndroid Build Coastguard Worker
114*1a3d31e3SAndroid Build Coastguard Worker  As noted above, the time between IOs may not be accurately maintained
115*1a3d31e3SAndroid Build Coastguard Worker  during replays. In addition the actual ordering of IOs \emph{between}
116*1a3d31e3SAndroid Build Coastguard Worker  devices is not necessarily maintained. (Each device with an IO stream
117*1a3d31e3SAndroid Build Coastguard Worker  maintains its own concept of time, and thus there may be slippage of the
118*1a3d31e3SAndroid Build Coastguard Worker  time kept between managing threads.)
119*1a3d31e3SAndroid Build Coastguard Worker
120*1a3d31e3SAndroid Build Coastguard Worker  \begin{quotation}
121*1a3d31e3SAndroid Build Coastguard Worker    We have prototyped a different approach, wherein a single managing
122*1a3d31e3SAndroid Build Coastguard Worker    thread handles all IOs across all devices. This approach, while
123*1a3d31e3SAndroid Build Coastguard Worker    guaranteeing correct ordering of IOs across all devices, resulted in
124*1a3d31e3SAndroid Build Coastguard Worker    much worse timing on a per IO basis.
125*1a3d31e3SAndroid Build Coastguard Worker  \end{quotation}
126*1a3d31e3SAndroid Build Coastguard Worker
127*1a3d31e3SAndroid Build Coastguard Worker\subsection{\texttt{btrecord/btreplay} Method of Operation}
128*1a3d31e3SAndroid Build Coastguard Worker
129*1a3d31e3SAndroid Build Coastguard WorkerAs noted above, \texttt{btrecord} extracts \texttt{QUEUE} operations from
130*1a3d31e3SAndroid Build Coastguard Worker\texttt{blktrace} output. These \texttt{QUEUE} operations indicate the
131*1a3d31e3SAndroid Build Coastguard Workerentrance of IOs into the block IO layer. In order to replay these IOs with
132*1a3d31e3SAndroid Build Coastguard Workersome accuracy in regards to ordering and timeliness, we decided to take
133*1a3d31e3SAndroid Build Coastguard Workermultiple sequential (in time) IOs and put them in a single \emph{bunch} of
134*1a3d31e3SAndroid Build Coastguard WorkerIOs that will be processed as a single \emph{asynchronous IO} call to the
135*1a3d31e3SAndroid Build Coastguard Workerkernel\footnote{Attempts to do them individually resulted in too large of a
136*1a3d31e3SAndroid Build Coastguard Workerturnaround time penalty (user-space to kernel and back). Note that in a
137*1a3d31e3SAndroid Build Coastguard Workernumber of workloads, the IOs are coming in from the page cache handling
138*1a3d31e3SAndroid Build Coastguard Workercode, and thus are submitted to the block IO layer with \emph{very small}
139*1a3d31e3SAndroid Build Coastguard Workertime intervals between issues.}. To manage the size of the \emph{bunches},
140*1a3d31e3SAndroid Build Coastguard Workerthe \texttt{btrecord} utility provides you with two controlling knobs:
141*1a3d31e3SAndroid Build Coastguard Worker
142*1a3d31e3SAndroid Build Coastguard Worker\begin{description}
143*1a3d31e3SAndroid Build Coastguard Worker  \item[\texttt{--max-bunch-time}] This is the amount of time to encompass
144*1a3d31e3SAndroid Build Coastguard Worker  in one bunch -- only IOs within the time specified are eligible
145*1a3d31e3SAndroid Build Coastguard Worker  for \emph{bunching.} The default time is 10 milliseconds (10,000,000
146*1a3d31e3SAndroid Build Coastguard Worker  nanoseconds). Refer to section~\ref{sec:c-o-m} on page~\pageref{sec:c-o-m}
147*1a3d31e3SAndroid Build Coastguard Worker  for more information.
148*1a3d31e3SAndroid Build Coastguard Worker
149*1a3d31e3SAndroid Build Coastguard Worker  \item[\texttt{--max-pkts}] A \emph{bunch} size can be anywhere from
150*1a3d31e3SAndroid Build Coastguard Worker  1 to 512 packets in size and by default we max a bunch to contain no
151*1a3d31e3SAndroid Build Coastguard Worker  more than 8 individual IOs. With this option, one can increase or
152*1a3d31e3SAndroid Build Coastguard Worker  decrease the maximum \emph{bunch} size.  Refer to section~\ref{sec:c-o-M}
153*1a3d31e3SAndroid Build Coastguard Worker  on page~\pageref{sec:c-o-M} for more information.
154*1a3d31e3SAndroid Build Coastguard Worker\end{description}
155*1a3d31e3SAndroid Build Coastguard Worker
156*1a3d31e3SAndroid Build Coastguard WorkerEach input data file (one per device per CPU) results in a new record
157*1a3d31e3SAndroid Build Coastguard Workerdata file (again, one per device per CPU) which contains information
158*1a3d31e3SAndroid Build Coastguard Workerabout \emph{bunches} of IOs to be replayed. \texttt{btreplay} operates on
159*1a3d31e3SAndroid Build Coastguard Workerthese record data files by spawning a new pair of threads per file. One
160*1a3d31e3SAndroid Build Coastguard Workerthread manages the submitting of AIOs per bunch in the record data file,
161*1a3d31e3SAndroid Build Coastguard Workerwhile the other thread manages reclaiming AIOs completed\footnote{We
162*1a3d31e3SAndroid Build Coastguard Workerhave found that having the same thread do both results in a further
163*1a3d31e3SAndroid Build Coastguard Workerreduction in replay timing accuracy.}.
164*1a3d31e3SAndroid Build Coastguard Worker
165*1a3d31e3SAndroid Build Coastguard WorkerEach submitting thread simply reads the input file of \emph{bunches}
166*1a3d31e3SAndroid Build Coastguard Workerrecorded by \texttt{btrecord}, and attempts to faithfully reproduce the
167*1a3d31e3SAndroid Build Coastguard Workerordering and timing of IOs seen during the sample workload. The reclaiming
168*1a3d31e3SAndroid Build Coastguard Workerthread simply waits for AIO completions, freeing up resources for the
169*1a3d31e3SAndroid Build Coastguard Workersubmitting thread to utilize to submit new AIOs.
170*1a3d31e3SAndroid Build Coastguard Worker
171*1a3d31e3SAndroid Build Coastguard WorkerThe number of CPUs being used on the replay system can be different from
172*1a3d31e3SAndroid Build Coastguard Workerthe number on the recorded system. To help with mappings here the
173*1a3d31e3SAndroid Build Coastguard Worker\texttt{--cpus} option allows one to state how many CPUs on the replay
174*1a3d31e3SAndroid Build Coastguard Workersystem to utilize. If the number of CPUs on the replay system is less than
175*1a3d31e3SAndroid Build Coastguard Workeron the recording system, we wrap CPU IDs. This \emph{may} result in an
176*1a3d31e3SAndroid Build Coastguard Workeroverload of CPU processing capabilities on the replay system. (Refer to
177*1a3d31e3SAndroid Build Coastguard Workersection~\ref{sec:p-o-c} on page~\pageref{sec:p-o-c} for more details about the
178*1a3d31e3SAndroid Build Coastguard Worker\texttt{--cpus} option.)
179*1a3d31e3SAndroid Build Coastguard Worker
180*1a3d31e3SAndroid Build Coastguard Worker\newpage\subsection{Known Deficiencies and Proposed Possible Fixes}
181*1a3d31e3SAndroid Build Coastguard Worker
182*1a3d31e3SAndroid Build Coastguard WorkerThe overall known deficiencies with this current set of utilities is
183*1a3d31e3SAndroid Build Coastguard Workeroutlined here, in some cases ideas on additions and/or improvements are
184*1a3d31e3SAndroid Build Coastguard Workerincluded as well.
185*1a3d31e3SAndroid Build Coastguard Worker
186*1a3d31e3SAndroid Build Coastguard Worker\begin{enumerate}
187*1a3d31e3SAndroid Build Coastguard Worker  \item Lack of IO ordering across devices.
188*1a3d31e3SAndroid Build Coastguard Worker
189*1a3d31e3SAndroid Build Coastguard Worker  \begin{quote}
190*1a3d31e3SAndroid Build Coastguard Worker    \emph{We could institute the notion of global time across threads,
191*1a3d31e3SAndroid Build Coastguard Worker    and thus ensure IO ordering across devices, with some reduction in
192*1a3d31e3SAndroid Build Coastguard Worker    timing accuracy.}
193*1a3d31e3SAndroid Build Coastguard Worker  \end{quote}
194*1a3d31e3SAndroid Build Coastguard Worker
195*1a3d31e3SAndroid Build Coastguard Worker  \item Lack of IO timing accuracy -- additional time between IO bunches.
196*1a3d31e3SAndroid Build Coastguard Worker
197*1a3d31e3SAndroid Build Coastguard Worker  \begin{quote}
198*1a3d31e3SAndroid Build Coastguard Worker    \emph{This is the primary problem with any IO replay mechanism -- how
199*1a3d31e3SAndroid Build Coastguard Worker    to guarantee per-IO timing accuracy with respect to other replayed IOs?
200*1a3d31e3SAndroid Build Coastguard Worker    One idea to reduce errors in this area would be to push the IO replay
201*1a3d31e3SAndroid Build Coastguard Worker    into the kernel, where you \emph{may} receive more responsive timings.}
202*1a3d31e3SAndroid Build Coastguard Worker  \end{quote}
203*1a3d31e3SAndroid Build Coastguard Worker
204*1a3d31e3SAndroid Build Coastguard Worker  \item Bunching of IOs results in reduced time amongst IOs within a bunch.
205*1a3d31e3SAndroid Build Coastguard Worker
206*1a3d31e3SAndroid Build Coastguard Worker  \begin{quote}
207*1a3d31e3SAndroid Build Coastguard Worker    \emph{The user has \emph{some} control over this (via the
208*1a3d31e3SAndroid Build Coastguard Worker    \texttt{--max-pkts} option). One \emph{could} simply specify
209*1a3d31e3SAndroid Build Coastguard Worker    \texttt{-max-pkts=1} and then each IO would be treated individually. Of
210*1a3d31e3SAndroid Build Coastguard Worker    course, this would probably then run into the problem of excessive
211*1a3d31e3SAndroid Build Coastguard Worker    inter-IO times.}
212*1a3d31e3SAndroid Build Coastguard Worker  \end{quote}
213*1a3d31e3SAndroid Build Coastguard Worker
214*1a3d31e3SAndroid Build Coastguard Worker  \item 1-to-1 mapping of devices -- for now the devices on the replay
215*1a3d31e3SAndroid Build Coastguard Worker  machine must be the same as on the recording machine.
216*1a3d31e3SAndroid Build Coastguard Worker
217*1a3d31e3SAndroid Build Coastguard Worker  \begin{quote}
218*1a3d31e3SAndroid Build Coastguard Worker    \emph{It should be relatively trivial to add in the notion of
219*1a3d31e3SAndroid Build Coastguard Worker    mapping -- simply include a file that is read which maps devices
220*1a3d31e3SAndroid Build Coastguard Worker    on one machine to devices (with offsets and sizes) on the replay
221*1a3d31e3SAndroid Build Coastguard Worker    machine\footnote{The notion of an offset and device size to replay on
222*1a3d31e3SAndroid Build Coastguard Worker    could be used to both allow for a single device to masquerade as more
223*1a3d31e3SAndroid Build Coastguard Worker    than one device, and could be utilized in case the replay device is
224*1a3d31e3SAndroid Build Coastguard Worker    smaller than the recorded device.}.}
225*1a3d31e3SAndroid Build Coastguard Worker
226*1a3d31e3SAndroid Build Coastguard Worker    \medskip\emph{One could also add in the notion of CPU mappings as well --
227*1a3d31e3SAndroid Build Coastguard Worker    device $D_{rec}$ managed by CPU $C_{rec}$ on the recorded system
228*1a3d31e3SAndroid Build Coastguard Worker    shall be replayed on device $D_{rep}$ and CPU $C_{rep}$ on the
229*1a3d31e3SAndroid Build Coastguard Worker    replay machine.}
230*1a3d31e3SAndroid Build Coastguard Worker
231*1a3d31e3SAndroid Build Coastguard Worker    \bigskip
232*1a3d31e3SAndroid Build Coastguard Worker    \begin{quote}
233*1a3d31e3SAndroid Build Coastguard Worker      With version 0.9.1 we now support the \texttt{-M} option to do this
234*1a3d31e3SAndroid Build Coastguard Worker      -- see section~\ref{sec:p-o-M} on page~\pageref{sec:p-o-M} for more
235*1a3d31e3SAndroid Build Coastguard Worker      information on device mapping.
236*1a3d31e3SAndroid Build Coastguard Worker    \end{quote}
237*1a3d31e3SAndroid Build Coastguard Worker  \end{quote}
238*1a3d31e3SAndroid Build Coastguard Worker
239*1a3d31e3SAndroid Build Coastguard Worker\end{enumerate}
240*1a3d31e3SAndroid Build Coastguard Worker
241*1a3d31e3SAndroid Build Coastguard Worker%---------------------
242*1a3d31e3SAndroid Build Coastguard Worker\newpage\section{\label{sec:command-line}Command Line Options}
243*1a3d31e3SAndroid Build Coastguard Worker\subsection{\texttt{btrecord} Command Line Options}
244*1a3d31e3SAndroid Build Coastguard Worker\begin{figure}[h!]
245*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
246*1a3d31e3SAndroid Build Coastguard WorkerUsage: btrecord -- version 0.9.3
247*1a3d31e3SAndroid Build Coastguard Worker
248*1a3d31e3SAndroid Build Coastguard Worker	[ -d <dir>  : --input-directory=<dir> ] Default: .
249*1a3d31e3SAndroid Build Coastguard Worker	[ -D <dir>  : --output-directory=<dir>] Default: .
250*1a3d31e3SAndroid Build Coastguard Worker	[ -F        : --find-traces           ] Default: Off
251*1a3d31e3SAndroid Build Coastguard Worker	[ -h        : --help                  ] Default: Off
252*1a3d31e3SAndroid Build Coastguard Worker	[ -m <nsec> : --max-bunch-time=<nsec> ] Default: 10 msec
253*1a3d31e3SAndroid Build Coastguard Worker	[ -M <pkts> : --max-pkts=<pkts>       ] Default: 8
254*1a3d31e3SAndroid Build Coastguard Worker	[ -o <base> : --output-base=<base>    ] Default: replay
255*1a3d31e3SAndroid Build Coastguard Worker	[ -v        : --verbose               ] Default: Off
256*1a3d31e3SAndroid Build Coastguard Worker	[ -V        : --version               ] Default: Off
257*1a3d31e3SAndroid Build Coastguard Worker	<dev>...                                Default: None
258*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
259*1a3d31e3SAndroid Build Coastguard Worker\caption{\label{fig:btrecord--help}\texttt{btrecord --help} Output}
260*1a3d31e3SAndroid Build Coastguard Worker\end{figure}
261*1a3d31e3SAndroid Build Coastguard Worker\FloatBarrier
262*1a3d31e3SAndroid Build Coastguard Worker
263*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-d}\texttt{-d} or
264*1a3d31e3SAndroid Build Coastguard Worker\texttt{--input-directory}\\Set Input Directory}
265*1a3d31e3SAndroid Build Coastguard Worker
266*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-d} option requires a single parameter providing the directory
267*1a3d31e3SAndroid Build Coastguard Workername for where input files are to be found. The default directory is the
268*1a3d31e3SAndroid Build Coastguard Workercurrent directory (\texttt{.}).
269*1a3d31e3SAndroid Build Coastguard Worker
270*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-D}\texttt{-D} or
271*1a3d31e3SAndroid Build Coastguard Worker\texttt{--output-directory}\\Set Output Directory}
272*1a3d31e3SAndroid Build Coastguard Worker
273*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-D} option requires a single parameter providing the directory
274*1a3d31e3SAndroid Build Coastguard Workername for where output files are to be placed. The default directory is the
275*1a3d31e3SAndroid Build Coastguard Workercurrent directory (\texttt{.}).
276*1a3d31e3SAndroid Build Coastguard Worker
277*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-F} or \texttt{--find-traces}\\Find Trace Files
278*1a3d31e3SAndroid Build Coastguard WorkerAutomatically}
279*1a3d31e3SAndroid Build Coastguard Worker
280*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-F} option instructs \texttt{btrecord} to go find all the
281*1a3d31e3SAndroid Build Coastguard Workertrace files in the directory specified (either via the \texttt{-d}
282*1a3d31e3SAndroid Build Coastguard Workeroption, or in the default directory '.').
283*1a3d31e3SAndroid Build Coastguard Worker
284*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-h} or \texttt{--help}\\Display Help Message}
285*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-V} or \texttt{--version}\\Display
286*1a3d31e3SAndroid Build Coastguard Worker\texttt{btrecord}Version}
287*1a3d31e3SAndroid Build Coastguard Worker
288*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-h} option displays the command line options and
289*1a3d31e3SAndroid Build Coastguard Workerdefaults, as presented in figure~\ref{fig:btrecord--help} on
290*1a3d31e3SAndroid Build Coastguard Workerpage~\pageref{fig:btrecord--help}.
291*1a3d31e3SAndroid Build Coastguard Worker
292*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-V} option displays the \texttt{btreplay} version, as shown here:
293*1a3d31e3SAndroid Build Coastguard Worker
294*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
295*1a3d31e3SAndroid Build Coastguard Worker$ btrecord --version
296*1a3d31e3SAndroid Build Coastguard Workerbtrecord -- version 0.9.0
297*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
298*1a3d31e3SAndroid Build Coastguard Worker
299*1a3d31e3SAndroid Build Coastguard WorkerBoth commands exit immediately after processing the option.
300*1a3d31e3SAndroid Build Coastguard Worker
301*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-m}\texttt{-m} or
302*1a3d31e3SAndroid Build Coastguard Worker\texttt{--max-bunch-time}\\Set Maximum Time Per Bunch}
303*1a3d31e3SAndroid Build Coastguard Worker
304*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-m} option requires a single parameter which specifies an
305*1a3d31e3SAndroid Build Coastguard Workeramount of time (in nanoseconds) to include in any one bunch of IOs that
306*1a3d31e3SAndroid Build Coastguard Workerare to be processed. The smaller the value, the smaller the number of
307*1a3d31e3SAndroid Build Coastguard WorkerIOs processed at one time -- perhaps yielding in more realistic replay.
308*1a3d31e3SAndroid Build Coastguard WorkerHowever, after a certain point the amount of overhead per bunch may result
309*1a3d31e3SAndroid Build Coastguard Workerin additional real replay time, thus yielding less accurate replay times.
310*1a3d31e3SAndroid Build Coastguard Worker
311*1a3d31e3SAndroid Build Coastguard WorkerThe default value is 10,000,000 nanoseconds (10 milliseconds).
312*1a3d31e3SAndroid Build Coastguard Worker
313*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-M}\texttt{-M} or
314*1a3d31e3SAndroid Build Coastguard Worker\texttt{--max-pkts}\\Set Maximum Packets Per Bunch}
315*1a3d31e3SAndroid Build Coastguard Worker
316*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-M} option requires a single parameter which specifies the
317*1a3d31e3SAndroid Build Coastguard Workermaximum number of IOs to store in a single bunch. As with the \texttt{-m}
318*1a3d31e3SAndroid Build Coastguard Workeroption (section~\ref{sec:c-o-m}), smaller values \emph{may} or \emph{may not}
319*1a3d31e3SAndroid Build Coastguard Workeryield more accurate replay times.
320*1a3d31e3SAndroid Build Coastguard Worker
321*1a3d31e3SAndroid Build Coastguard WorkerThe default value is 8, with a maximum value of up to 512 being supported.
322*1a3d31e3SAndroid Build Coastguard Worker
323*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-o}\texttt{-o} or
324*1a3d31e3SAndroid Build Coastguard Worker\texttt{--output-base}\\Set Base Name for Output Files}
325*1a3d31e3SAndroid Build Coastguard Worker
326*1a3d31e3SAndroid Build Coastguard WorkerEach output file has 3 fields:
327*1a3d31e3SAndroid Build Coastguard Worker
328*1a3d31e3SAndroid Build Coastguard Worker\begin{enumerate}
329*1a3d31e3SAndroid Build Coastguard Worker  \item Device identifier (taken directly from the device name of the
330*1a3d31e3SAndroid Build Coastguard Worker  \texttt{blktrace} output file).
331*1a3d31e3SAndroid Build Coastguard Worker
332*1a3d31e3SAndroid Build Coastguard Worker  \item \texttt{btrecord} base name -- by default ``replay''.
333*1a3d31e3SAndroid Build Coastguard Worker
334*1a3d31e3SAndroid Build Coastguard Worker  \item And the CPU number (again, taken directly from the
335*1a3d31e3SAndroid Build Coastguard Worker  \texttt{blktrace} output file name).
336*1a3d31e3SAndroid Build Coastguard Worker\end{enumerate}
337*1a3d31e3SAndroid Build Coastguard Worker
338*1a3d31e3SAndroid Build Coastguard WorkerThis option requires a single parameter that will override the default name
339*1a3d31e3SAndroid Build Coastguard Worker(replay), and replace it with the specified value.
340*1a3d31e3SAndroid Build Coastguard Worker
341*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:c-o-v}\texttt{-v} or
342*1a3d31e3SAndroid Build Coastguard Worker\texttt{--verbose}\\Select Verbose Output}
343*1a3d31e3SAndroid Build Coastguard Worker
344*1a3d31e3SAndroid Build Coastguard WorkerThis option will output some simple statistics at the end of a successful
345*1a3d31e3SAndroid Build Coastguard Workerrun. Figure~\ref{fig:verb-out} (page~\pageref{fig:verb-out}) shows
346*1a3d31e3SAndroid Build Coastguard Workeran example of some output, while figure~\ref{fig:verb-defs}
347*1a3d31e3SAndroid Build Coastguard Worker(page~\pageref{fig:verb-defs}) shows what the fields mean.
348*1a3d31e3SAndroid Build Coastguard Worker
349*1a3d31e3SAndroid Build Coastguard Worker\begin{figure}[h!]
350*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
351*1a3d31e3SAndroid Build Coastguard Workersdab:0: 580661 pkts (tot), 126030 pkts (replay), 89809 bunches, 1.4 pkts/bunch
352*1a3d31e3SAndroid Build Coastguard Workersdab:1: 2559775 pkts (tot), 430172 pkts (replay), 293029 bunches, 1.5 pkts/bunch
353*1a3d31e3SAndroid Build Coastguard Workersdab:2: 653559 pkts (tot), 136522 pkts (replay), 102288 bunches, 1.3 pkts/bunch
354*1a3d31e3SAndroid Build Coastguard Workersdab:3: 474773 pkts (tot), 117849 pkts (replay), 69572 bunches, 1.7 pkts/bunch
355*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
356*1a3d31e3SAndroid Build Coastguard Worker\caption{\label{fig:verb-out}Verbose Output Example}
357*1a3d31e3SAndroid Build Coastguard Worker\end{figure}
358*1a3d31e3SAndroid Build Coastguard Worker\FloatBarrier
359*1a3d31e3SAndroid Build Coastguard Worker
360*1a3d31e3SAndroid Build Coastguard Worker\begin{figure}[h!]
361*1a3d31e3SAndroid Build Coastguard Worker\begin{description}
362*1a3d31e3SAndroid Build Coastguard Worker  \item[Field 1] The first field contains the device name and CPU
363*1a3d31e3SAndroid Build Coastguard Worker  identifier. Thus: \texttt{sdab:0:} means the device \texttt{sdab} and
364*1a3d31e3SAndroid Build Coastguard Worker  traces on CPU 0.
365*1a3d31e3SAndroid Build Coastguard Worker
366*1a3d31e3SAndroid Build Coastguard Worker  \item[Field 2] The second field contains the total number of packets
367*1a3d31e3SAndroid Build Coastguard Worker  processed for each device file.
368*1a3d31e3SAndroid Build Coastguard Worker
369*1a3d31e3SAndroid Build Coastguard Worker  \item[Field 3] The next field shows the number of packets eligible for
370*1a3d31e3SAndroid Build Coastguard Worker  replay.
371*1a3d31e3SAndroid Build Coastguard Worker
372*1a3d31e3SAndroid Build Coastguard Worker  \item[Field 4] The fourth field contains the total number of IO bunches.
373*1a3d31e3SAndroid Build Coastguard Worker
374*1a3d31e3SAndroid Build Coastguard Worker  \item[Field 5] The last field shows the average number of IOs per bunch
375*1a3d31e3SAndroid Build Coastguard Worker  recorded.
376*1a3d31e3SAndroid Build Coastguard Worker\end{description}
377*1a3d31e3SAndroid Build Coastguard Worker\caption{\label{fig:verb-defs}Verbose Field Definitions}
378*1a3d31e3SAndroid Build Coastguard Worker\end{figure}
379*1a3d31e3SAndroid Build Coastguard Worker\FloatBarrier
380*1a3d31e3SAndroid Build Coastguard Worker
381*1a3d31e3SAndroid Build Coastguard Worker%---------------------
382*1a3d31e3SAndroid Build Coastguard Worker\newpage\subsection{\texttt{btreplay} Command Line Options}
383*1a3d31e3SAndroid Build Coastguard Worker\begin{figure}[h!]
384*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
385*1a3d31e3SAndroid Build Coastguard WorkerUsage: btreplay -- version 0.9.3
386*1a3d31e3SAndroid Build Coastguard Worker
387*1a3d31e3SAndroid Build Coastguard Worker	[ -c <cpus> : --cpus=<cpus>           ] Default: 1
388*1a3d31e3SAndroid Build Coastguard Worker	[ -d <dir>  : --input-directory=<dir> ] Default: .
389*1a3d31e3SAndroid Build Coastguard Worker	[ -F        : --find-records          ] Default: Off
390*1a3d31e3SAndroid Build Coastguard Worker	[ -h        : --help                  ] Default: Off
391*1a3d31e3SAndroid Build Coastguard Worker	[ -i <base> : --input-base=<base>     ] Default: replay
392*1a3d31e3SAndroid Build Coastguard Worker	[ -I <iters>: --iterations=<iters>    ] Default: 1
393*1a3d31e3SAndroid Build Coastguard Worker	[ -M <file> : --map-devs=<file>       ] Default: None
394*1a3d31e3SAndroid Build Coastguard Worker	[ -N        : --no-stalls             ] Default: Off
395*1a3d31e3SAndroid Build Coastguard Worker	[ -x <int>  : --acc-factor=<int>      ] Default: 1
396*1a3d31e3SAndroid Build Coastguard Worker	[ -v        : --verbose               ] Default: Off
397*1a3d31e3SAndroid Build Coastguard Worker	[ -V        : --version               ] Default: Off
398*1a3d31e3SAndroid Build Coastguard Worker	[ -W        : --write-enable          ] Default: Off
399*1a3d31e3SAndroid Build Coastguard Worker	<dev...>                                Default: None
400*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
401*1a3d31e3SAndroid Build Coastguard Worker\caption{\label{fig:btreplay--help}\texttt{btreplay --help} Output}
402*1a3d31e3SAndroid Build Coastguard Worker\end{figure}
403*1a3d31e3SAndroid Build Coastguard Worker\FloatBarrier
404*1a3d31e3SAndroid Build Coastguard Worker
405*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-c}\texttt{-c} or
406*1a3d31e3SAndroid Build Coastguard Worker\texttt{--cpus}\\Set Number of CPUs to Use}
407*1a3d31e3SAndroid Build Coastguard Worker
408*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-d}\texttt{-d} or
409*1a3d31e3SAndroid Build Coastguard Worker\texttt{--input-directory}\\Set Input Directory}
410*1a3d31e3SAndroid Build Coastguard Worker
411*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-d} option requires a single parameter providing the directory
412*1a3d31e3SAndroid Build Coastguard Workername for where input files are to be found. The default directory is the
413*1a3d31e3SAndroid Build Coastguard Workercurrent directory (\texttt{.}).
414*1a3d31e3SAndroid Build Coastguard Worker
415*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-F} or \texttt{--find-records}\\Find RecordFiles
416*1a3d31e3SAndroid Build Coastguard WorkerAutomatically}
417*1a3d31e3SAndroid Build Coastguard Worker
418*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-F} option instructs \texttt{btreplay} to go find all the
419*1a3d31e3SAndroid Build Coastguard Workerrecord files in the directory specified (either via the \texttt{-d}
420*1a3d31e3SAndroid Build Coastguard Workeroption, or in the default directory '.').
421*1a3d31e3SAndroid Build Coastguard Worker
422*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-h} or \texttt{--help}\\Display Help Message}
423*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\texttt{-V} or \texttt{--version}\\Display
424*1a3d31e3SAndroid Build Coastguard Worker\texttt{btreplay}Version}
425*1a3d31e3SAndroid Build Coastguard Worker
426*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-h} option displays the command line options and
427*1a3d31e3SAndroid Build Coastguard Workerdefaults, as presented in figure~\ref{fig:btreplay--help} on
428*1a3d31e3SAndroid Build Coastguard Workerpage~\pageref{fig:btreplay--help}.
429*1a3d31e3SAndroid Build Coastguard Worker
430*1a3d31e3SAndroid Build Coastguard WorkerThe \texttt{-V} option displays the \texttt{btreplay} version, as show here:
431*1a3d31e3SAndroid Build Coastguard Worker
432*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
433*1a3d31e3SAndroid Build Coastguard Worker$ btreplay --version
434*1a3d31e3SAndroid Build Coastguard Workerbtreplay -- version 0.9.0
435*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
436*1a3d31e3SAndroid Build Coastguard Worker
437*1a3d31e3SAndroid Build Coastguard WorkerBoth commands exit immediately after processing the option.
438*1a3d31e3SAndroid Build Coastguard Worker
439*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-i}\texttt{-i} or
440*1a3d31e3SAndroid Build Coastguard Worker\texttt{--input-base}\\Set Base Name for Input Files}
441*1a3d31e3SAndroid Build Coastguard Worker
442*1a3d31e3SAndroid Build Coastguard WorkerEach input file has 3 fields:
443*1a3d31e3SAndroid Build Coastguard Worker
444*1a3d31e3SAndroid Build Coastguard Worker\begin{enumerate}
445*1a3d31e3SAndroid Build Coastguard Worker  \item Device identifier (taken directly from the device name of the
446*1a3d31e3SAndroid Build Coastguard Worker  \texttt{blktrace} output file).
447*1a3d31e3SAndroid Build Coastguard Worker
448*1a3d31e3SAndroid Build Coastguard Worker  \item \texttt{btrecord} base name -- by default ``replay''.
449*1a3d31e3SAndroid Build Coastguard Worker
450*1a3d31e3SAndroid Build Coastguard Worker  \item And the CPU number (again, taken directly from the
451*1a3d31e3SAndroid Build Coastguard Worker  \texttt{blktrace} output file name).
452*1a3d31e3SAndroid Build Coastguard Worker\end{enumerate}
453*1a3d31e3SAndroid Build Coastguard Worker
454*1a3d31e3SAndroid Build Coastguard WorkerThis option requires a single parameter that will override the default name
455*1a3d31e3SAndroid Build Coastguard Worker(replay), and replace it with the specified value.
456*1a3d31e3SAndroid Build Coastguard Worker
457*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-I}\texttt{-I} or
458*1a3d31e3SAndroid Build Coastguard Worker\texttt{--iterations}\\Set Number of Iterations to Run}
459*1a3d31e3SAndroid Build Coastguard Worker
460*1a3d31e3SAndroid Build Coastguard WorkerThis option requires a single parameter which specifies the number of times
461*1a3d31e3SAndroid Build Coastguard Workerto run through the input files. The default value is 1.
462*1a3d31e3SAndroid Build Coastguard Worker
463*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-M}\texttt{-M} or \texttt{map-devs}\\
464*1a3d31e3SAndroid Build Coastguard WorkerSpecify Device Mappings}
465*1a3d31e3SAndroid Build Coastguard Worker
466*1a3d31e3SAndroid Build Coastguard WorkerThis option requires a single parameter which specifies the name of a
467*1a3d31e3SAndroid Build Coastguard Workerfile containing device mappings. The file must be very simply managed, with
468*1a3d31e3SAndroid Build Coastguard Workerjust two pieces of data per line:
469*1a3d31e3SAndroid Build Coastguard Worker
470*1a3d31e3SAndroid Build Coastguard Worker\begin{enumerate}
471*1a3d31e3SAndroid Build Coastguard Worker  \item The device name on the recorded system (with the \texttt{'/dev/'}
472*1a3d31e3SAndroid Build Coastguard Worker  removed). Example: \texttt{/dev/sda} would just be \texttt{sda}.
473*1a3d31e3SAndroid Build Coastguard Worker
474*1a3d31e3SAndroid Build Coastguard Worker  \item The device name on the replay system to use (again, without the
475*1a3d31e3SAndroid Build Coastguard Worker  \texttt{'/dev/'} path prepended).
476*1a3d31e3SAndroid Build Coastguard Worker\end{enumerate}
477*1a3d31e3SAndroid Build Coastguard Worker
478*1a3d31e3SAndroid Build Coastguard WorkerAn example file for when one would map devices \texttt{/dev/sda} and
479*1a3d31e3SAndroid Build Coastguard Worker\texttt{/dev/sdb} on the recorded system to \texttt{dev/sdg} and
480*1a3d31e3SAndroid Build Coastguard Worker\texttt{sdh} on the replay system would be:
481*1a3d31e3SAndroid Build Coastguard Worker
482*1a3d31e3SAndroid Build Coastguard Worker\begin{verbatim}
483*1a3d31e3SAndroid Build Coastguard Workersda sdg
484*1a3d31e3SAndroid Build Coastguard Workersdb sdh
485*1a3d31e3SAndroid Build Coastguard Worker\end{verbatim}
486*1a3d31e3SAndroid Build Coastguard Worker
487*1a3d31e3SAndroid Build Coastguard WorkerThe only entries in the file that are allowed are these two element lines
488*1a3d31e3SAndroid Build Coastguard Worker-- we do not (yet?) support the notion of blank lines, or comment lines, or
489*1a3d31e3SAndroid Build Coastguard Workerthe like.
490*1a3d31e3SAndroid Build Coastguard Worker
491*1a3d31e3SAndroid Build Coastguard WorkerThe utility \emph{does} allow for multiple \texttt{-M} options to be
492*1a3d31e3SAndroid Build Coastguard Workersupplied on the command line.
493*1a3d31e3SAndroid Build Coastguard Worker
494*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:o-N}\texttt{-N} or \texttt{--no-stalls}\\Disable
495*1a3d31e3SAndroid Build Coastguard WorkerPre-bunch Stalls}
496*1a3d31e3SAndroid Build Coastguard Worker
497*1a3d31e3SAndroid Build Coastguard WorkerWhen specified on the command line, all pre-bunch stall indicators will be
498*1a3d31e3SAndroid Build Coastguard Workerignored. IOs will be replayed without inter-bunch delays.
499*1a3d31e3SAndroid Build Coastguard Worker
500*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:o-x}\texttt{-x} or \texttt{--acc-factor}\\Acceleration
501*1a3d31e3SAndroid Build Coastguard WorkerFactor}
502*1a3d31e3SAndroid Build Coastguard Worker
503*1a3d31e3SAndroid Build Coastguard Worker  While the \texttt{--no-stalls} option allows the traces to be replayed
504*1a3d31e3SAndroid Build Coastguard Worker  with no waiting time, this option specifies some acceleration factor
505*1a3d31e3SAndroid Build Coastguard Worker  to be used. If the value of two is used, then the stall time is
506*1a3d31e3SAndroid Build Coastguard Worker  divided by half resulting in a reduction of the execution time by
507*1a3d31e3SAndroid Build Coastguard Worker  this factor. Note that if this number is too high, the results will
508*1a3d31e3SAndroid Build Coastguard Worker  be equivalent of not having stall.
509*1a3d31e3SAndroid Build Coastguard Worker
510*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-v}\texttt{-v} or
511*1a3d31e3SAndroid Build Coastguard Worker\texttt{--verbose}\\Select Verbose Output}
512*1a3d31e3SAndroid Build Coastguard Worker
513*1a3d31e3SAndroid Build Coastguard WorkerWhen specified on the command line, this option instructs \texttt{btreplay}
514*1a3d31e3SAndroid Build Coastguard Workerto store information concerning each \emph{stall} and IO operation
515*1a3d31e3SAndroid Build Coastguard Workerperformed by \texttt{btreplay}. The name of each file so created will be
516*1a3d31e3SAndroid Build Coastguard Workerthe input file name used with an extension of \texttt{.rep} appended onto
517*1a3d31e3SAndroid Build Coastguard Workerit. Thus, an input file of the name \texttt{sdab.replay.3} would generate a
518*1a3d31e3SAndroid Build Coastguard Workerverbose output file with the name \texttt{sdab.replay.3.rep} in the
519*1a3d31e3SAndroid Build Coastguard Workerdirectory specified for input files.
520*1a3d31e3SAndroid Build Coastguard Worker
521*1a3d31e3SAndroid Build Coastguard WorkerIn addition, \texttt{btreplay} will also output to \texttt{stderr} the
522*1a3d31e3SAndroid Build Coastguard Workernames of the input files being processed.
523*1a3d31e3SAndroid Build Coastguard Worker
524*1a3d31e3SAndroid Build Coastguard Worker\subsubsection{\label{sec:p-o-W}\texttt{-W} or
525*1a3d31e3SAndroid Build Coastguard Worker\texttt{--write-enable}\\Enable Writing During Replay}
526*1a3d31e3SAndroid Build Coastguard Worker
527*1a3d31e3SAndroid Build Coastguard WorkerAs a precautionary measure, by default \texttt{btreplay} will \emph{not}
528*1a3d31e3SAndroid Build Coastguard Workerprocess \emph{write} requests. In order to enable \texttt{btreplay} to
529*1a3d31e3SAndroid Build Coastguard Workeractually \emph{write} to devices one must explicitly specify the
530*1a3d31e3SAndroid Build Coastguard Worker\texttt{-W} option.
531*1a3d31e3SAndroid Build Coastguard Worker
532*1a3d31e3SAndroid Build Coastguard Worker\end{document}
533