summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-07-01spelling and grammar fixes for btreplay.texJeff Moyer
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-05-27Put message notes from kernel into a separate file for easy trackingAlan D. Brunelle
Also made made_dev_hdr standard for all usages.
2008-05-27Added in new message updates to the documentation.Alan D. Brunelle
2008-05-27Added in handling of MESSAGE notesAlan D. Brunelle
Sample output: 8,16 1 691118 17.417000000 0 C R 2660776 + 8 [0] 8,16 1 691119 17.417000000 0 D R 2660792 + 8 [swapper] 8,16 1 691120 17.417000000 4688 U N [dd] 42 8,16 1 0 17.418000000 0 m N elv switch: noop 8,16 1 691121 17.418000000 4638 C R 2660784 + 8 [0] 8,16 1 691122 17.418000000 4638 D R 2660800 + 8 [bash] 8,16 1 691123 17.418000000 4638 C R 2660792 + 8 [0] Thanks to Carl Henrik Lunde <chlunde@ping.uio.no> for adding in sequence printing & time-stamp correction.
2008-05-21Handled no difference in seek timesAlan D. Brunelle
For some reason recent kernels (2.6.25.4, for example) we've lost a lot of resolution in our blktrace times. This can result in lots of things happening "simultaneously." This change at least tries to handle the case where all the seeks happen at once. Probably have other issues that need to be looked into...
2008-05-21Added in -m option, seeks-per-secondAlan D. Brunelle
btt can now output data files containing seeks-per-second information.
2008-05-18blkparse: cope with missing process notify eventJens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-05-12Fixed percentage calculations for phases of an I/OAlan D. Brunelle
2008-05-09Added S2G times + fixed up -X output to include X2XAlan D. Brunelle
Including Q2Q, Q2G, S2G, G2I, Q2M, I2D, M2D, D2C, Q2C. S2G is part of Q2G, and shows the number of times we had to sleep to get a request. Ignored 0-byte I/Os - coming from barrier I/Os...
2008-05-08Added -X option - generate easily parseable fileAlan D. Brunelle
Writes a portion of the default output into a separate file that more easily parsed.
2008-05-05Add -x accellerator optionLuis Useche
This patch adds a new functionality to the btreplay tool, the -x option. This parameter accelerate the replication by the factor specified. This means that the stall time is divided by the number introduced. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-05-05Fix problem with -w optionLuis Useche
This patch fixes the problem when the -w option is used in the file mode (i.e., no fifo mode). It just consists of moving the checking of the stopwatch_end after the time is updated with genesis. This also includes the checking of the stopwatch_start. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-05-05eliminate check of empty -F formatLuis Useche
This patch eliminates the checking of -F format when it is empty. I am using this in order to blank out the events that I do not want for certain act mask. Note that there is no real motivation to have this checking. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-04-02blkparse: Introduce optional accounting of PC requestsChristof Schmitt
The current blkparse lists only PC requests, but does not account for number of PC requests and the size of the attached data. This patch introduces optional accounting for PC requests. If any PC event was encountered, the summary output will also include data from PC requests. For PC completion events the amount of transferred data is not available, since the kernel uses the data_len field as residual bytes count on event completion. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-04-02blkparse: Add PC requests to depth traceChristof Schmitt
The PC requests use the same queue and also contribute to the queue length, so they should be added to the queue depth trace. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-22Fix section of btrecord and btreplay man pagesBas Zoetekouw
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-22Don't like btrecord against libaio and librt, as it doesn't use any of their ↵Bas Zoetekouw
symbols Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-22Really commit the changes to btt.1Bas Zoetekouw
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-22Added man page for bno_plot and updated btt man page to refer to bno_plotBas Zoetekouw
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-02-13Cleanups: Fixed IOPs in btt left over at end of runAlan D. Brunelle
o Using valgrind, determined we had Q IOPs left over that weren't used. Added "all" list, and then deleted these at end. o Removed old debug stuff (COUNT_IOS, DEBUG, ...) o Fixed a bunch of white space at end of lines. Signed-off-by: Alan D. Brunelle <alan.brunelle@hp.com>
2008-02-13btt: fix missing cleanup callAaron Carroll
clean_args() exists but is never called, thus any files opened in args remain open while the buffers backing those files are closed. Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
2008-02-13btt: fix iostat interval defaultAaron Carroll
Change the default iostat interval from 1ns to 1s, which is the default implied by btt.1 and common sense. Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>
2008-02-12Added info about bno_plot.py and clean upsAlan D. Brunelle
o Added description of bno_plot.py, including sample screenshot o Various spelling clean ups o Updated sample btt output o Cleaned up table of contents
2008-02-08Merge branch 'bno_plot.submit'Alan D. Brunelle
2008-02-05Added new IOs per unplug tableAlan D. Brunelle
==================== Plug Information ==================== DEV | # Plugs # Timer Us | % Time Q Plugged ---------- | ---------- ---------- | ---------------- ( 8, 0) | 1171( 123) | 0.280946640% ( 8, 32) | 4( 0) | 0.000325469% ---------- | ---------- ---------- | ---------------- Overall | # Plugs # Timer Us | % Time Q Plugged Average | 587( 61) | 0.140636055% DEV | IOs/Unp IOs/Unp(to) ---------- | ---------- ---------- ( 8, 0) | 9.2 8.8 ( 8, 32) | 2.5 0.0 ---------- | ---------- ---------- DEV | IOs/Unp IOs/Unp(to) Overall | 9.2 8.8
2008-02-05Added bno_plot.py - generate interactive 3D plot of IO blocks and sizesAlan D. Brunelle
bno_plot.py [ -h | --help ] [ -K | --keys-below ] [ -v | --verbose ] [ <file...> ] Utilizes gnuplot to generate a 3D plot of the block number output from btt. If no <files> are specified, it will utilize all files generated after btt was run with -B blknos (meaning: all files of the form blknos*[rw].dat). The -K option forces bno_plot.py to put the keys below the graph, typicall all keys for input files are put in the upper right corner of the graph. If the number of devices exceed 10, then bno_plot.py will automatically push the keys under the graph. To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt.
2008-01-31UNPLUG does the timing stuff, UNPLUG TIMEOUT only does timeoutAlan D. Brunelle
Each UNPLUG TIMEOUT should be followed by an UNPLUG, so we were getting double information on time outs.
2008-01-31Fixed excess bucket information for unplug histograms.Alan D. Brunelle
2008-01-03Fix Q counts during requeue and merges.Dave Boutcher
It looks to me like btt doesn't correctly keep track of the number of requests currently in the queue for a device. n_act_q gets incremented in trace_queue and decremented in trace_issue, but I think it also needs to get updated in trace_merge and trace_requeue. The one thing I'm not sure about is whether we want r_iop->dip->n_qs++ in the new handle_requeue routine. The following patch makes the "active requests at Q" count a little more sane for me. This is against git as of yesterday. Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
2007-12-10Separated out g/i/m trace handling.Alan D. Brunelle
Also separated out DM-device calculations.
2007-12-09btreplay/btrecord man pagesBas Zoetekouw
Attached are manpages for the btreplay and btrecord utilities for inclusion in the git repo. I'm about to upload anew version to Debian which will include these manpages, too. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-12-06Merge branch 'master' into add-q2dAlan D. Brunelle
2007-12-06Remove strange make dependencyJoshua Root
Listing "-lpthread" as a dependency in a make rule doesn't make much sense. Signed-off-by: Joshua Root <jmr@gelato.unsw.edu.au> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-12-05Added in Q2D histograms (requires -A)Alan D. Brunelle
As an example, the buckets are in seconds: ==================== Q2D Histogram ==================== DEV | <.005 <.010 <.025 <.050 <.075 <.100 <.250 <.500 < 1.0 >=1.0 --------- | ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ( 66, 80) | 61.2 7.9 12.1 7.9 3.0 1.4 1.5 0.2 0.0 4.6 ( 65,192) | 42.3 5.0 8.7 30.0 8.9 3.0 1.8 0.1 0.0 0.1 ( 65,128) | 34.3 5.3 8.9 32.0 9.7 3.7 5.3 0.6 0.0 0.1 ( 66, 0) | 45.5 9.9 19.0 14.8 4.6 1.2 0.3 0.0 0.0 4.7 ( 65, 48) | 50.2 4.6 7.2 27.6 6.9 2.1 1.1 0.0 0.0 0.1 ( 66, 32) | 66.4 6.7 10.9 7.0 2.5 1.1 0.6 0.1 0.0 4.7 ( 65,224) | 33.9 9.6 20.6 17.8 7.3 3.1 3.3 0.5 0.1 3.8 ( 65,112) | 35.3 5.2 8.7 30.8 9.3 3.9 5.6 0.9 0.1 0.1 ( 65, 80) | 57.9 4.6 6.6 25.2 4.7 0.8 0.2 0.0 0.0 0.1 ( 65,240) | 62.6 8.1 13.1 7.7 2.3 0.6 0.5 0.0 0.0 5.1 ( 66,112) | 59.6 8.0 13.1 8.6 3.3 1.5 1.2 0.1 0.0 4.6 ( 65,144) | 45.8 5.1 7.9 29.3 7.8 2.5 1.4 0.0 0.0 0.1 ( 65,176) | 43.2 5.2 8.9 30.8 8.3 2.5 1.0 0.0 0.0 0.1 ( 66, 16) | 77.0 5.4 7.4 3.3 0.7 0.3 0.7 0.1 0.0 5.0 ( 65, 96) | 54.6 4.9 7.2 26.6 5.3 1.0 0.2 0.0 0.0 0.1 ( 66, 48) | 71.0 6.8 10.5 5.4 0.9 0.1 0.1 0.0 0.0 5.2 ( 65,208) | 43.5 5.6 8.5 31.0 7.2 2.2 1.9 0.0 0.0 0.1 ( 66,128) | 69.5 7.0 10.3 6.2 1.5 0.3 0.1 0.0 0.0 5.0 ( 65, 64) | 59.9 4.2 6.0 24.6 4.2 0.8 0.1 0.0 0.0 0.1 ( 66, 64) | 62.6 8.1 12.7 7.9 2.4 0.6 0.1 0.0 0.0 5.4 ========== | ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== AVG | 52.9 6.2 10.0 20.1 5.3 1.7 1.4 0.2 0.0 2.1
2007-11-14memset() must be done after NULL checkJens Axboe
Pointed out by Jan Blunck <jblunck@suse.de> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-11-13Added active requests at Q information.Alan D. Brunelle
An important consideration when analyzing block IO schedulers is to know how many requests the scheduler has to work with. The metric provided in this section details how many requests (on average) were being held by the IO scheduler when an incoming IO request was being handled. To determine this, btt keeps track of how many Q requests came in, and subtacts requests that have been issued (D). Sample: ==================== Active Requests At Q Information ==================== DEV | Avg Reqs @ Q ---------- | ------------- ( 65, 80) | 12.0 ( 65,240) | 16.9 ( 65,112) | 13.3 ( 66, 64) | 32.8 ( 66, 80) | 21.5 ( 65, 96) | 8.6 ( 66, 16) | 16.2 ( 65, 64) | 20.4 ( 66, 96) | 18.3 ( 65,176) | 17.4 ( 66, 32) | 13.6 ( 65,144) | 13.4 ( 66, 0) | 21.4 ( 65,192) | 19.4 ( 66,128) | 18.4 ( 66,144) | 16.2 ( 65,128) | 8.0 ( 66,112) | 44.2 ---------- | ------------- Overall | Avgs Reqs @ Q Average | 17.4 Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
2007-11-08Fixed REMAP to update Q2A & fixed #Q calculationsAlan D. Brunelle
2007-10-29blktrace segfaultAneesh Kumar K.V
Core was generated by `blktrace -d /dev/hdc'. Program terminated with signal 11, Segmentation fault. #0 0xb7e4cdec in ?? () (gdb) where #0 0xb7e4cdec in ?? () #1 0xb7dbf000 in ?? () #2 0x00021000 in ?? () #3 0xb7dee6e8 in ?? () #4 0x0804ecf0 in ?? () #5 0x00000001 in ?? () #6 0x6c616367 in ?? () #7 0xbfee3f68 in ?? () #8 0xb7f51300 in ?? () #9 0x00000168 in ?? () #10 0x0804ecf0 in ?? () #11 0x00000001 in ?? () #12 0xbfee3f88 in ?? () #13 0xbfee3f68 in ?? () #14 0x080499dc in close_thread (tip=0xb7f1eff4) at blktrace.c:637 Backtrace stopped: frame did not save the PC (gdb) the below diff fix the same. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-10Added O_NOATIME to replay fileAlan D. Brunelle
Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
2007-10-10Fix segfault in replay_sub when verbose is 1Joshua Root
tip->vfp is only initialised when verbose > 1, so we must only use it under the same circumstance. Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com>
2007-10-05Merge branch 'master' of git://brick.kernel.dk/data/git/blktraceAlan D. Brunelle
2007-10-05Converted fatal to an inline functionAlan D. Brunelle
Removes warning from gcc-4.2.1
2007-10-05Converted fatal from macro to inlineAlan D. Brunelle
Hopefully this will fix a gcc-4.2.1 warning. Signed-off-by: Alan D. Brunelle <adb@korik.(none)>
2007-10-02Add btrecord/btreplay capabilityAlan D. Brunelle
These facilities allow one to attempt to replay a stream of IOs captured with blktrace. The general workflow is: 1. Initiate blktrace to capture traces 2. Do whatever to generate initial IO stream... 3. Stop blktrace 4. Run btrecord to convert traces into IO records 5. Run btreplay to replay IOs The IO stream characteristics during replay will try to respect the following characteristics of the original IO stream: 1. The IOs will target the same device(s) as originally seen. [One can alter this behavior by specifyin the -M option to btreplay, which allows one to remap IOs slated to one set of devices to a specified other set of devices.] 2. IO direction: the IOs will follow the same read/write (from-device/to-device) characteristics of the originating flow. [Note: By default replay will /not/ do writes, one must specify the -W option to do this. THis is a meager attempt to stop someone from shooting themselves in the foot (with a very large-caliber weapon).] 3. IO offset & size are maintained. 4. CPU: IOs are submitted on the originating CPU whenever possible. [Note: Since we are using asynchronous IO, IOs may be routed to another CPU prior to being processed by the block IO layer.] In order to try and replicate inter-IO timing as much as possible, btrecord will combine IOs "close in time" into one set, or bunch, of IOs. Then btreplay will replay all the IOs in one go (via asynchronous direct IO - io_submit). The size of the bunches are configurable via the -m flag to btrecord (which specifies the a time-based bunch size) and/or the -M flag (which specifies the maximum amount of IOs to put into a bunch). At the low-end, specifying '-M 1' instructs btrecord to act like fio - replay each IO as an individual unit. Besides the potential to remap devices (utilizing the -M option to replay, as noted above), one can also limit the number of CPUs on the replay machine - so if you have fewer CPUs on the replay machine you specify the -c option to btreplay. Lastly, one can specify the -N option to btreplay to instruct it to ignore inter-IO (inter-bunch of IOs) timings. Thus, this instructs btreplay to replay the bunches as fast as possible, ignoring the original delays between original IOs. The utilities include a write-up in the docs directory. Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-02Added list_splice to btt/list.hAlan D. Brunelle
list_splice is needed for the addition of btrecord/btreplay. Signed-off-by: Alan D. Brunelle <Alan.Brunelle@hp.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-01btt manpagesBas Zoetekouw
Attached is an update for the btt.1 man page that should bring the man page in sync with the TeX documentation. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-10-01Fix compilation on m68kBas Zoetekouw
Missing defines for store_barrier() Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-09-10Major revamping (ver 2.0)Alan D. Brunelle
After a lot of fighting with maintaining a tree-styled design (each trace having it's own node), it was just getting too cumbersome to work in all circumstances. Taking a clue from blkparse itself, I decided to just keep track of IOs at queue time, and updating fields based upon later traces. The attached (large) patch works much faster, handles larger test cases with less failures, and is managing some pretty large jobs I'm working on (large Oracle-based DB analysis - 32-way box w/ lots of storage). I've also added a Q2Q seek distance feature - it's come in handy when comparing results of IO scheduler choice: We can see what the incoming IO seek distances are (at queue time), and then see how the scheduler itself manages things (via merges & sorting) by looking at D2D seek distances generated. As noted in the subject, I arbitrarily bumped this to version 2.00 as the innards are so different. The documentation (btt/doc/btt.tex) has been updated to reflect some minor output changes. I also fixed a bug dealing with process name notification: there was a problem that if a new PID came up with a name that was previously seen, btt wouldn't keep track of it right. [When running with Oracle, a lot of processes have the same name but different PIDs of course.] Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-08-28blktrace 0.99.3blktrace-0.99.3Jens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2007-08-28blktrace man page: mention buffer size / number of buffers defaults.Jens Axboe
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>