Age | Commit message (Collapse) | Author |
|
Avoids the build failures when sys/types.h does not get included
indirectly through other headers.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
|
|
If block device has many request with size less than 1K,
blkparse ignores such requests because it treats each request
in Kb.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
In our experiments blktrace/blkparse file names encode a lot of
infomation about the particular experiment. We noticed that for long
enough file names blkparse does not work.
The reason is that per_cpu_info->fname[] is of 128 bytes. As a result,
in setup_file() function only part of the file name gets to ->fname[].
Then stat() fails and we exit the function. Notice, that no error is
printed in this case.
In the following patch ->fname[] size is increased to POSIX defined
PATH_MAX.
Signed-off-by: Vasily Tarasov <tarasov@vasily.name
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
blk_io_trace->cpu is u32, so use be32_to_cpu instead.
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
|
|
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>
|
|
Just like we do for queues/dispatches/completions etc.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
|
|
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
|
|
Basically, it add buf_size, buf_nr and page_size to the net header and
this info is put into each tip, for easy access in mmap_subbuf(). The
global buf_size, etc is still used by clients, since the global value is
all they need (for clients, the tip is filled in with the global values
anyway, so that mmap_subbuf() can use them, maybe the tip->buf_size
should be used everywhere instead for consistency and only use the
global values for initial args. Also, each tip doesn't really need to
have these values, they could be stored in tip->device but I thought it
would be easier and quicker to access tip->buf_size rather than
tip->device->buf_size). Actually, this data only needs to be sent once
per trace, but since there's no header covering the entire trace, sends
it each time. Could be an optimization to make later...
I've tested it using sendfile over the network with different buffer
sizes, and with normal non-sendfile network and non-network tracing
straight to disk, and haven't seen any problems. Each test generated a
little over 1Gb of trace data in a little under 2 minutes, just under 23
million events after parsing, so it looks to me like it's doing the job
at this point...
|
|
|
|
We now send notify messages out when we see a new process, so we don't
need to repeatedly send the same 16 bytes of name info everytime.
|
|
|
|
Basically just check whether we need to convert the trace or not
in blkparse, then we can get rid of the endianness conversion
in the hot path (blktrace:write_tip_events()).
|
|
|
|
|
|
Cache the blocking state locally and only issue it if changed.
|
|
|
|
Add t_kb(t) and t_sec(t) macros to help with this.
|
|
|
|
|
|
This moves the mask stuff into a seperate file, act_mask.c
|
|
|
|
For some traces, you really don't want to see thousands of cc1
processes in the stats, you want to collect the stats by name
instead. This adds the -n option to blkparse, enabling that.
Switched to Jenkins hash at the same time, as it allows for
easy hash-by-u32 or hash-by-name as we see fit.
|
|
|
|
This bumps the protocol number to 0x05, as device info was added to the
trace structure.
|
|
|
|
|
|
|
|
This patch adds support for doing live traces again, by allowing pipe of
data from blktrace to blkparse. A structural change was needed in blk_io_trace
to pass the CPU number info directly instead of inferring it from the filename.
To parse realtime:
$ blktrace -d /dev/xxx -o - | blkparse -i -
|
|
|
|
|