time Dump info related to internal time keeping
net Dump info related to networking connections
rate Dump info related to IO rate switching
+ compress Dump info related to log compress/decompress
? or help Show available debug options.
One can specify multiple debug options: e.g. --debug=file,mem will enable
printf("%s [options] [job options] <job file(s)>\n", name);
printf(" --debug=options\tEnable debug logging. May be one/more of:\n"
"\t\t\tprocess,file,io,mem,blktrace,verify,random,parse,\n"
- "\t\t\tdiskutil,job,mutex,profile,time,net,rate\n");
+ "\t\t\tdiskutil,job,mutex,profile,time,net,rate,compress\n");
printf(" --parse-only\t\tParse options only, don't start any IO\n");
printf(" --output\t\tWrite output to file\n");
printf(" --runtime\t\tRuntime in seconds\n");
.help = "Rate logging",
.shift = FD_RATE,
},
+ { .name = "compress",
+ .help = "Log compression logging",
+ .shift = FD_COMPRESS,
+ },
{ .name = NULL, },
};
static size_t inflate_chunk(struct iolog_compress *ic, int gz_hdr, FILE *f,
z_stream *stream, struct inflate_chunk_iter *iter)
{
+ size_t ret;
+
+ dprint(FD_COMPRESS, "inflate chunk size=%lu, seq=%u",
+ (unsigned long) ic->len, ic->seq);
+
if (ic->seq != iter->seq) {
if (iter->seq)
finish_chunk(stream, f, iter);
break;
}
- return (void *) stream->next_in - ic->buf;
+ ret = (void *) stream->next_in - ic->buf;
+
+ dprint(FD_COMPRESS, "inflated to size=%lu\n", (unsigned long) ret);
+
+ return ret;
}
/*
if (log->log_gz_store) {
size_t ret;
+ dprint(FD_COMPRESS, "log write chunk size=%lu, "
+ "seq=%u\n", (unsigned long) ic->len, ic->seq);
+
ret = fwrite(ic->buf, ic->len, 1, f);
if (ret != 1 || ferror(f)) {
iter.err = errno;
stream.next_in = (void *) data->samples;
stream.avail_in = data->nr_samples * log_entry_sz(data->log);
+ dprint(FD_COMPRESS, "deflate input size=%lu, seq=%u\n",
+ (unsigned long) stream.avail_in, seq);
do {
c = get_new_chunk(seq);
stream.avail_out = GZ_CHUNK;
stream.next_out = c->buf;
ret = deflate(&stream, Z_FINISH);
c->len = GZ_CHUNK - stream.avail_out;
+ total += c->len;
flist_add_tail(&c->list, &list);
} while (ret != Z_STREAM_END);
}
+ dprint(FD_COMPRESS, "deflated to size=%lu\n", (unsigned long) total);
+
ret = deflateEnd(&stream);
if (ret != Z_OK)
log_err("fio: deflateEnd %d\n", ret);