$ blkparse -i <input> [ -o <output> ] [ -b rb_batch ] [ -s ] [ -t ] [ -q ]
[ -w start:stop ] [ -f output format ] [ -F format spec ]
+ [ -d <binary> ]
-i Input file containing trace data, or '-' for stdin.
-D Directory to prepend to input file names.
-q Quiet. Don't display any stats at the end of the trace.
-w Only parse data between the given time interval in seconds. If
'start' isn't given, blkparse defaults the start time to 0.
+ -d Dump sorted data in binary format
-f Output format. Customize the output format. The format field
identifiers are:
static struct per_process_info *ppi_list;
static int ppi_list_entries;
-#define S_OPTS "a:A:i:o:b:stqw:f:F:vVhD:"
+#define S_OPTS "a:A:i:o:b:stqw:f:F:vVhD:d:"
static struct option l_opts[] = {
{
.name = "act-mask",
.flag = NULL,
.val = 'D'
},
+ {
+ .name = "dump-binary",
+ .has_arg = required_argument,
+ .flag = NULL,
+ .val = 'd'
+ },
{
.name = NULL,
}
static int stats_printed;
int data_is_native = -1;
+static int dump_fd;
+static char *dump_binary;
+
static unsigned int t_alloc_cache;
static unsigned int bit_alloc_cache;
#define CPU_IDX(cpu) ((cpu) / CPUS_PER_LONG)
#define CPU_BIT(cpu) ((cpu) & (CPUS_PER_LONG - 1))
+static void output_binary(void *buf, int len)
+{
+ if (dump_binary) {
+ int n = write(dump_fd, buf, len);
+ if (n != len) {
+ perror(dump_binary);
+ close(dump_fd);
+ dump_binary = NULL;
+ }
+ }
+}
+
static void resize_cpu_info(struct per_dev_info *pdi, int cpu)
{
struct per_cpu_info *cpus = pdi->cpus;
pdi->first_reported_time = t->time;
pdi->events++;
+
+ output_binary(t, sizeof(*t) + t->pdu_len);
}
/*
*/
if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY)) {
add_ppm_hash(bit->pid, (char *) bit + sizeof(*bit));
+ output_binary(bit, sizeof(*bit) + bit->pdu_len);
continue;
}
"\t-i Input file containing trace data, or '-' for stdin\n" \
"\t-D Directory to prepend to input file names\n" \
"\t-o Output file. If not given, output is stdout\n" \
+ "\t-d Output file. If specified, binary data is written to file\n" \
"\t-b stdin read batching\n" \
"\t-s Show per-program io statistics\n" \
"\t-h Hash processes by name, not pid\n" \
case 'V':
printf("%s version %s\n", argv[0], blkparse_version);
return 0;
+ case 'd':
+ dump_binary = optarg;
+ break;
default:
usage(argv[0]);
return 1;
return 1;
}
+ if (dump_binary) {
+ dump_fd = creat(dump_binary, 0666);
+ if (dump_fd < 0) {
+ perror(dump_binary);
+ dump_binary = NULL;
+ return 1;
+ }
+ }
+
if (pipeline)
ret = do_stdin();
else
\documentclass{article}
%
-% Copyright (C) 2005 Alan D. Brunelle <Alan.Brunelle@hp.com>
+% Copyright (C) 2005, 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
\title{blktrace User Guide}
\author{blktrace: Jens Axboe (axboe@suse.de)\\
User Guide: Alan D. Brunelle (Alan.Brunelle@hp.com)}
-\date{4 October 2005}
+\date{23 February 2005}
\begin{document}
\maketitle
-o \emph{file} & --output=\emph{file} & Output file \\ \hline
+-d \emph{file} & --dump-binary=\emph{file} & Binary output file \\ \hline
+
-q & --quiet & Quite mode \\ \hline
-s & --per-program-stats & Displays data sorted by program \\ \hline