diff options
author | Alan D. Brunelle <Alan.Brunelle@hp.com> | 2009-01-12 18:29:53 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-01-12 18:29:53 +0100 |
commit | 19cfaf3f4d8e53ce43cccd809676f8f2a40f0b34 (patch) | |
tree | 0019f6f20332a905bd13f7a013ece5f84ff5db0c | |
parent | ef02006b0131f298595b37afb07562ee50fae5cc (diff) | |
download | blktrace-19cfaf3f4d8e53ce43cccd809676f8f2a40f0b34.tar.gz blktrace-19cfaf3f4d8e53ce43cccd809676f8f2a40f0b34.tar.bz2 |
Added no messages option to blkparse.c
Added a new option (-M, --no-msgs) option to blkparse: I have found that
the CFQ I/O scheduler sends a *tremendous* amount of messages, that
bloat the .bin file generated when using the -d option. The file sizes
can shrink by >50% when using the -M option in those case.
Signed-off-by: Alan D. Brunelle <alan.brunelle@hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r-- | blkparse.c | 20 | ||||
-rw-r--r-- | doc/blkparse.1 | 9 | ||||
-rw-r--r-- | doc/blktrace.tex | 1 |
3 files changed, 27 insertions, 3 deletions
@@ -104,7 +104,6 @@ static struct per_process_info *ppi_hash_table[PPI_HASH_SIZE]; static struct per_process_info *ppi_list; static int ppi_list_entries; -#define S_OPTS "a:A:b:D:d:f:F:hi:o:Oqstw:vV" static struct option l_opts[] = { { .name = "act-mask", @@ -161,6 +160,12 @@ static struct option l_opts[] = { .val = 'i' }, { + .name = "no-msgs", + .has_arg = no_argument, + .flag = NULL, + .val = 'M' + }, + { .name = "output", .has_arg = required_argument, .flag = NULL, @@ -270,6 +275,7 @@ static int ppi_hash_by_pid = 1; static int verbose; static unsigned int act_mask = -1U; static int stats_printed; +static int bin_output_msgs = 1; int data_is_native = -1; static FILE *dump_fp; @@ -1612,7 +1618,10 @@ static void dump_trace(struct blk_io_trace *t, struct per_cpu_info *pci, pdi->events++; - output_binary(t, sizeof(*t) + t->pdu_len); + if (bin_output_msgs || + !(t->action & BLK_TC_ACT(BLK_TC_NOTIFY) && + t->action == BLK_TN_MESSAGE)) + output_binary(t, sizeof(*t) + t->pdu_len); } /* @@ -2645,7 +2654,7 @@ static int is_pipe(const char *str) return 0; } -#define S_OPTS "a:A:b:D:d:f:F:hi:o:Oqstw:vV" +#define S_OPTS "a:A:b:D:d:f:F:hi:o:Oqstw:vVM" static char usage_str[] = "\n\n" \ "-i <file> | --input=<file>\n" \ "[ -a <action field> | --act-mask=<action field> ]\n" \ @@ -2662,6 +2671,7 @@ static char usage_str[] = "\n\n" \ "[ -s | --per-program-stats ]\n" \ "[ -t | --track-ios ]\n" \ "[ -w <time> | --stopwatch=<time> ]\n" \ + "[ -M | --no-msgs\n" \ "[ -v | --verbose ]\n" \ "[ -V | --version ]\n\n" \ "\t-b stdin read batching\n" \ @@ -2680,6 +2690,7 @@ static char usage_str[] = "\n\n" \ "\t to get queued, to get dispatched, and to get completed\n" \ "\t-w Only parse data between the given time interval in seconds.\n" \ "\t If 'start' isn't given, blkparse defaults the start time to 0\n" \ + "\t-M Do not output messages to binary file\n" \ "\t-v More verbose for marginal errors\n" \ "\t-V Print program version info\n\n"; @@ -2770,6 +2781,9 @@ int main(int argc, char *argv[]) case 'd': dump_binary = optarg; break; + case 'M': + bin_output_msgs = 0; + break; default: usage(argv[0]); return 1; diff --git a/doc/blkparse.1 b/doc/blkparse.1 index e97581c..fde29d0 100644 --- a/doc/blkparse.1 +++ b/doc/blkparse.1 @@ -101,6 +101,15 @@ action specifiers described in ACTION IDENTIFIERS. Print missing entries .RE +\-M +.br +\-\-no-msgs +.RS +When \-d is specified, this will stop messages from being output to the +file. (Can seriously reduce the size of the resultant file when using +the CFQ I/O scheduler.) +.RE + \-h .br \-\-hash\-by\-name diff --git a/doc/blktrace.tex b/doc/blktrace.tex index 1e69240..781bb79 100644 --- a/doc/blktrace.tex +++ b/doc/blktrace.tex @@ -506,6 +506,7 @@ Short & Long & Description \\ \hline\hline & & \emph{start:end-time} -- Display traces from time \emph{start} \\ & & through {end-time} (in ns). \\ \hline +-M & --no-msgs & Do not add messages to binary output file \\\hline -v & --verbose & More verbose marginal on marginal errors \\ \hline -V & --version & Display version \\ \hline |