summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Andrew Price [Sat, 26 Apr 2014 17:22:53 +0000 (18:22 +0100)]
iowatcher: Rework --prog to make arg processing safer
Previously the --prog option required the program-to-be-run to be
specified as a single string. This meant that shell escaping would be
lost in translation and a sub-shell would be run. Rework --prog to not
take an argument and accept the arguments left after option processing
has ended as the argv for the program-to-be-run.
As we have the program as an argv, run_program2() can now be used to run
it, and now that run_program() is no longer used we can remove it and
remove the '2' from run_program2.
New usage example:
# iowatcher -p -t foo -d /dev/sda3 sleep 10
running blktrace blktrace -b 8192 -a queue -a complete -a issue -a notify -D . -d /dev/sda3 -o foo
running 'sleep' '10'
sleep exited with 0
...
Docs have been updated accordingly.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Sat, 26 Apr 2014 14:31:19 +0000 (15:31 +0100)]
iowatcher: Separate program running from waiting
Until now run_program2() was a replacement for system() so it always
waited for the process to end before returning. To make this function
more useful move the waiting code into a separate function and add a
mechanism to expect a specific exit code.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Sat, 26 Apr 2014 02:49:22 +0000 (03:49 +0100)]
iowatcher: Correct a couple of calloc calls
(Caught by Coverity.) tf->gdd_writes and tf->gdd_reads are arrays of
pointers so update their allocations to use the correct element size.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Sat, 26 Apr 2014 01:56:17 +0000 (02:56 +0100)]
iowatcher: Simplify temp movie directory creation
plot_io_movie() was calling create_movie_temp_dir() which unnecessarily
strdup()ed a string constant leaving plot_io_movie() to free it. Replace
the strdup() with a mutable char array and get rid of the free(). Merge
the few remaining lines which create the movie dir into plot_io_movie().
Also prune a duplicate declaration of start_mpstat() in tracers.h
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Fri, 28 Mar 2014 01:47:27 +0000 (01:47 +0000)]
iowatcher: Merge trace dumping functions into one
Now that combine_blktrace_devs() takes a list of traces it's fairly
generic so we might as well merge blktrace_to_dump() into it. The latter
can be replaced with a call using a list with a single entry.
combine_blktrace_devs() is renamed dump_traces() because that's what it
does.
Also eradicate the big global char array 'line' that was being used in a
bunch of places along with some more unnecessary strdup()s.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Fri, 28 Mar 2014 01:42:47 +0000 (01:42 +0000)]
iowatcher: Check program exit code properly
The return value of posix_spawnp() was being checked but the exit status
of the child process was being ignored. This adds checks and error
reporting based on the status that waitpid returns.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Thu, 27 Mar 2014 21:59:38 +0000 (21:59 +0000)]
iowatcher: Fix up directory trace processing
Similar to the fix for spaces in file names in commit
5d845e3, this
patch fixes processing of directories with spaces in their names by
using posix_spawnp() to run the blkparse command instead of system(). In
doing so, combine_blktrace_devs() and match_trace() have been reworked
to use a list structure instead of doing a lot of strdup()ing and string
appending.
Also make sure that trailing slashes are removed from the directory name
before attempting to use it as the base of the .dump filename.
Update the -t entry in the manpage to mention directory behaviour, too.
Signed-off-by: Andrew Price <anprice@redhat.com>
Jan Kara [Thu, 4 Apr 2013 10:18:28 +0000 (06:18 -0400)]
iowatcher: Handle REQUEUE events
When requeue event happens we have to decrease number of in-flight
requests. Otherwise they drift away.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 4 Apr 2013 10:18:27 +0000 (06:18 -0400)]
iowatcher: Make seconds unsigned
Compiler was giving some warnings about signed vs unsigned comparisons.
Although these were harmless, make seconds unsigned because they really
are.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 4 Apr 2013 10:18:26 +0000 (06:18 -0400)]
iowatcher: Remove duplicate defines from blkparse.c
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 4 Apr 2013 10:18:25 +0000 (06:18 -0400)]
iowatcher: Skip events beyond max_seconds
Skip events beyond max_seconds. This not only saves CPU time but also
prevents memory corruption because not all functions were checking that
given time is in the expected range. Also remove now unnecessary checks
in the called functions.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 4 Apr 2013 10:18:24 +0000 (06:18 -0400)]
iowatcher: Do not add events out of time range to the plot
If the event is out of time range that should be plotted, do not add it.
It will corrupt memory...
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 24 Sep 2013 19:30:35 +0000 (15:30 -0400)]
iowatcher: Fine tune the ticks
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 24 Sep 2013 19:30:23 +0000 (15:30 -0400)]
iowatcher: Update the README for a few new options
Andrew Price [Fri, 8 Nov 2013 10:06:54 +0000 (10:06 +0000)]
iowatcher: Fix processing of trace filenames containing spaces
blktrace_to_dump passes filenames containing spaces to blkparse via
system() so only the first chunk of the string is taken to be the
filename by the subprocess.
This switches to using posix_spawnp() so that we can present the
filename as an element of argv and avoid iowatcher failing in these
cases.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Wed, 6 Nov 2013 16:11:18 +0000 (16:11 +0000)]
iowatcher: Add bounds checking in find_step
Check the value of cur_mini_step is sane before using it as an index to
mini_step array.
Signed-off-by: Andrew Price <anprice@redhat.com>
Andrew Price [Thu, 5 Sep 2013 16:35:04 +0000 (17:35 +0100)]
iowatcher: Fix a label overflow in plot_io
The length of the label option wasn't being checked before strcpy()ing
it into a char[256]. Use strncpy instead.
Signed-off-by: Andrew Price <anprice@redhat.com>
Chris Mason [Mon, 21 Jan 2013 16:22:58 +0000 (11:22 -0500)]
iowatcher: Don't print a legend on the tput graphs during movies
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 21 Jan 2013 15:28:33 +0000 (10:28 -0500)]
iowatcher: Update the FSF address in all files
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 21 Jan 2013 15:17:44 +0000 (10:17 -0500)]
iowatcher: Update the COPYING file to the correct address
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 18 Jan 2013 16:08:39 +0000 (11:08 -0500)]
iowatcher: Add support for fio bandwith logs (-F logfile)
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Thu, 17 Jan 2013 17:45:42 +0000 (12:45 -0500)]
iowatcher: Fix formatting errors in the iowatcher.1 man page.
Thanks to Andrew Price for sending me the corrected version
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Thu, 17 Jan 2013 03:25:28 +0000 (22:25 -0500)]
iowatcher: Fix mpstat handling when the number of CPUs is not
in the mpstat output
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 15 Jan 2013 01:59:06 +0000 (20:59 -0500)]
iowatcher: Handle traces to more than once device at a time
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Nikita Danilov [Wed, 19 Dec 2012 18:27:21 +0000 (11:27 -0700)]
iowatcher: iowatcher: specify ffmpeg codec
Add -C option to specify ffmped video code to use.
Allow ffmpeg video codec to be specified on the command line. "libx264" is
default.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Andrew Price [Wed, 19 Dec 2012 18:54:45 +0000 (11:54 -0700)]
iowatcher: Add a man page for iowatcher
Adds a man page from iowatcher. Borrows some documentation from the
README file but covers all of the options found in main.c
Signed-off-by: Andrew Price <anprice@redhat.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 14 Jan 2013 21:05:13 +0000 (16:05 -0500)]
iowatcher: Fix spindle rotation in the movie mode
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 26 Oct 2012 19:23:40 +0000 (15:23 -0400)]
iowatcher: Fix some rounding errors around the max offset
set_gdd_bit makes sure that we don't try to set bits past the max offset
we used to allocate our gdd array.
But, it only does this when the function is first called, and the whole
byte range for the IO we're recording may go past max offset. This adds
a check to be sure we stay in the right range.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Tue, 23 Oct 2012 09:05:31 +0000 (11:05 +0200)]
iowatcher: Fix crash due to missing queue action
When queue action was missing from a trace, handling of dispatch didn't
quite get things right and crashed due to NULL pointer dereference.
Fix it.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 22 Oct 2012 15:51:41 +0000 (11:51 -0400)]
iowatcher: Add -K command line option to keep the movie svg files
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 22 Oct 2012 15:22:55 +0000 (11:22 -0400)]
iowatcher: Only hash IOs if there are completion or issue events
We use an IO hash table to keep track of the IOs in flight, and this is
used to calculate the latencies from when we issue the IO to when
we complete the IO.
But if there are no completion events, io is never removed from the hash
table. It grows very large and slows down the run.
Since we already scan all the events looking for outliers, this commit
checks for each major type of event during the scan. If there are
no completion and no issue events, we don't bother inserting things
into the hash table.
If there are no completion events, we clean up during the issue event.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Eric Sandeen [Thu, 18 Oct 2012 21:42:38 +0000 (15:42 -0600)]
iowatcher: iowatcher: support png2theora for videos
ffmpeg is not available on all distributions, so include Theora
as an option, via png2theora, if the output movie filename ends
in .ogg or .ogv
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Wed, 17 Oct 2012 19:45:49 +0000 (15:45 -0400)]
iowatcher: Fix path name handling when the trace files are in the current directory
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Yuanhan Liu [Fri, 12 Oct 2012 16:09:29 +0000 (10:09 -0600)]
iowatcher: Fix buffer overwrite issue
Current code allocates buffer for path based on strdup, which would let
the size of path equals to the size of blktrace_dest_dir. But the code
next that joins it with the filename of dump file, which would overwrite
the buffer, and triggered an issue like following:
$ ./iowatcher -t trace.dump -o trace.svg
Unable to find trace file ./trace.dumpY
^
Refactoring join_path a bit to fix this issue.
Cc: Liu Bo <liub.liubo@gmail.com>
Signed-off-by: Yuanhan Liu <yliu.null@gmail.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Liu Bo [Fri, 28 Sep 2012 03:55:14 +0000 (21:55 -0600)]
iowatcher: add blktrace destination options
Add 'D' for blktrace destination options so that we can save trace
in the destination directory.
Signed-off-by: Liu Bo <liub.liubo@gmail.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Mon, 10 Sep 2012 08:09:48 +0000 (10:09 +0200)]
iowatcher: Per process IO graphs
Add support for displaying different processes with different color in
the IO graph and movie.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 21 Sep 2012 18:03:50 +0000 (14:03 -0400)]
iowatcher: Make sure we add the xtick labels if we're only plotting IO
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 11 Sep 2012 01:01:02 +0000 (21:01 -0400)]
iowatcher: Merge branch 'jan'
Jan Kara's updates for xzoom and yzoom
Conflicts:
main.c
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 6 Sep 2012 16:23:05 +0000 (18:23 +0200)]
iowatcher: Add option to set action which should be displayed in the IO graph
Sometimes this is useful to see how IO scheduler or storage itself
changes the IO submitted by the application.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 6 Sep 2012 10:45:34 +0000 (12:45 +0200)]
iowatcher: Improve xticks logic
Ticks on x axis used integral step and fixed number of ticks. That generates
wrong results e.g. for 13s long trace with 10 ticks... Allow the code to
somewhat alter the number of ticks and also use non-integral step.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Fri, 31 Aug 2012 09:37:49 +0000 (11:37 +0200)]
iowatcher: Add options to limit time and sector range
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 6 Sep 2012 08:14:59 +0000 (10:14 +0200)]
iowatcher: Ignore trace records beyond max_seconds
Currently we report error when we find a trace record beyond max_seconds.
When we allow user to set end of displayed period, records after the end
of period are no longer a bug so just ignore them.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Wed, 5 Sep 2012 21:01:08 +0000 (23:01 +0200)]
iowatcher: Add possibility to limit seconds from below
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Wed, 5 Sep 2012 20:08:24 +0000 (22:08 +0200)]
iowatcher: Rename seconds to max_seconds
Later we will add min_seconds to complement this.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Sat, 1 Sep 2012 21:31:46 +0000 (23:31 +0200)]
iowatcher: Add support for limitting IO graph offset from below
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Sat, 1 Sep 2012 21:37:20 +0000 (23:37 +0200)]
iowatcher: Fix filtering of outliers from below
There are lots of trace actions which do not carry a sector with them (e.g.
plug, unplug, ...). Thus sector is 0 for them and that results in trimming
of outliers from below never working. Fix the problem by accounting only
Queue events in the outlier statistics.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Sat, 1 Sep 2012 21:35:55 +0000 (23:35 +0200)]
iowatcher: Define mask of trace action and use it instead of opencoding the constant
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Jan Kara [Thu, 30 Aug 2012 13:59:01 +0000 (15:59 +0200)]
iowatcher: Fix typo in option description
Short variant of --movie is -m, not -p.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 31 Aug 2012 00:42:30 +0000 (20:42 -0400)]
iowatcher: Check for null mpstat structs while generating plots
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 28 Aug 2012 06:15:11 +0000 (02:15 -0400)]
iowatcher: Add -c to split the graphs up into multiple columns
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 22:27:59 +0000 (18:27 -0400)]
iowatcher: Fix divide by zero while calculating averages
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 22:09:57 +0000 (18:09 -0400)]
iowatcher: Update the README and the --help output
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 21:39:58 +0000 (17:39 -0400)]
iowatcher: Start support for multiple colums of plots
The movie mode is updated to put extra plots on
the side.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 17:00:30 +0000 (13:00 -0400)]
iowatcher: Fix io line graphs at the edge of the X axis
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 16:53:51 +0000 (12:53 -0400)]
iowatcher: Fix the line graphs for values near the edges of the graph
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 27 Aug 2012 16:22:28 +0000 (12:22 -0400)]
iowatcher: Fix mpstat file permissions
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 24 Aug 2012 18:31:29 +0000 (14:31 -0400)]
iowatcher: Add initial support for flash tracing
This is incomplete, but it will catch messages from
the flash driver to find the actual chip an IO
was sent to.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 21 Aug 2012 19:19:35 +0000 (15:19 -0400)]
iowatcher: Add a new movie mode that maps the IOs onto a platter.
The --movie option defaults to spindle mode now,
but you can choose --movie=rect or --movie=spindle
as well.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Tue, 21 Aug 2012 13:18:15 +0000 (09:18 -0400)]
iowatcher: Switch to ffmpeg for movie encoding. Chrome and vlc like these better.
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 20 Aug 2012 20:15:55 +0000 (16:15 -0400)]
iowatcher: Add back missing plot title
Chris Mason [Mon, 20 Aug 2012 19:30:38 +0000 (15:30 -0400)]
iowatcher: Fix --help definition
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Mon, 20 Aug 2012 18:36:19 +0000 (14:36 -0400)]
iowatcher: Add mpstat.[ch] into git
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Fri, 17 Aug 2012 16:18:28 +0000 (12:18 -0400)]
iowatcher: Add movie support
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Thu, 16 Aug 2012 18:46:33 +0000 (14:46 -0400)]
iowatcher: Add mpstat graphing support
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Chris Mason [Wed, 15 Aug 2012 20:10:55 +0000 (16:10 -0400)]
iowatcher: Initial revision
Signed-off-by: Chris Mason <chris.mason@fusionio.com>