projects
/
blktrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
blkparse: split off the timestamp correction code in to a separate function
[blktrace.git]
/
blkiomon.c
diff --git
a/blkiomon.c
b/blkiomon.c
index b53dfd947ca823ebf349a68eb3a743e4c52e7ab3..f8b0c9dec00c8f221677da65ee1dd3469baf1d5e 100644
(file)
--- a/
blkiomon.c
+++ b/
blkiomon.c
@@
-71,7
+71,7
@@
struct output {
int pipe;
};
int pipe;
};
-static char blkiomon_version[] = "0.
2
";
+static char blkiomon_version[] = "0.
3
";
static FILE *ifp;
static int interval = -1;
static FILE *ifp;
static int interval = -1;
@@
-168,7
+168,7
@@
static struct dstat *blkiomon_alloc_dstat(void)
return NULL;
}
return NULL;
}
-
memset(dstat, 0, sizeof(*dstat)
);
+
blkiomon_stat_init(&dstat->msg.stat
);
return dstat;
}
return dstat;
}
@@
-198,7
+198,7
@@
static struct dstat *blkiomon_find_dstat(struct rb_search *search, __u32 device)
static struct dstat *blkiomon_get_dstat(__u32 device)
{
struct dstat *dstat;
static struct dstat *blkiomon_get_dstat(__u32 device)
{
struct dstat *dstat;
- struct rb_search search;
+ struct rb_search search
= { 0, }
;
pthread_mutex_lock(&dstat_mutex);
pthread_mutex_lock(&dstat_mutex);
@@
-211,10
+211,6
@@
static struct dstat *blkiomon_get_dstat(__u32 device)
goto out;
dstat->msg.stat.device = device;
goto out;
dstat->msg.stat.device = device;
- dstat->msg.stat.size_r.min = -1ULL;
- dstat->msg.stat.size_w.min = -1ULL;
- dstat->msg.stat.d2c_r.min = -1ULL;
- dstat->msg.stat.d2c_w.min = -1ULL;
rb_link_node(&dstat->node, search.parent, search.node_ptr);
rb_insert_color(&dstat->node, &dstat_tree[dstat_curr]);
rb_link_node(&dstat->node, search.parent, search.node_ptr);
rb_insert_color(&dstat->node, &dstat_tree[dstat_curr]);
@@
-316,6
+312,7
@@
static int blkiomon_account(struct blk_io_trace *bit_d,
struct blkiomon_stat *p;
__u64 d2c = (bit_c->time - bit_d->time) / 1000; /* ns -> us */
__u32 size = bit_d->bytes;
struct blkiomon_stat *p;
__u64 d2c = (bit_c->time - bit_d->time) / 1000; /* ns -> us */
__u32 size = bit_d->bytes;
+ __u64 thrput = size * 1000 / d2c;
dstat = blkiomon_get_dstat(bit_d->device);
if (!dstat)
dstat = blkiomon_get_dstat(bit_d->device);
if (!dstat)
@@
-323,9
+320,11
@@
static int blkiomon_account(struct blk_io_trace *bit_d,
p = &dstat->msg.stat;
if (BLK_DATADIR(bit_c->action) & BLK_TC_READ) {
p = &dstat->msg.stat;
if (BLK_DATADIR(bit_c->action) & BLK_TC_READ) {
+ minmax_account(&p->thrput_r, thrput);
minmax_account(&p->size_r, size);
minmax_account(&p->d2c_r, d2c);
} else if (BLK_DATADIR(bit_c->action) & BLK_TC_WRITE) {
minmax_account(&p->size_r, size);
minmax_account(&p->d2c_r, d2c);
} else if (BLK_DATADIR(bit_c->action) & BLK_TC_WRITE) {
+ minmax_account(&p->thrput_w, thrput);
minmax_account(&p->size_w, size);
minmax_account(&p->d2c_w, d2c);
} else
minmax_account(&p->size_w, size);
minmax_account(&p->d2c_w, d2c);
} else
@@
-600,8
+599,9
@@
static char usage_str[] = "\n\nblkiomon " \
"-I <interval> | --interval=<interval>\n" \
"[ -h <file> | --human-readable=<file> ]\n" \
"[ -b <file> | --binary=<file> ]\n" \
"-I <interval> | --interval=<interval>\n" \
"[ -h <file> | --human-readable=<file> ]\n" \
"[ -b <file> | --binary=<file> ]\n" \
+ "[ -d <file> | --dump-lldd=<file> ]\n" \
"[ -D <file> | --debug=<file> ]\n" \
"[ -D <file> | --debug=<file> ]\n" \
- "[ -Q <path name> | --msg-queue
-name
=<path name>]\n" \
+ "[ -Q <path name> | --msg-queue=<path name>]\n" \
"[ -q <msg queue id> | --msg-queue-id=<msg queue id>]\n" \
"[ -m <msg id> | --msg-id=<msg id>]\n" \
"[ -V | --version ]\n\n" \
"[ -q <msg queue id> | --msg-queue-id=<msg queue id>]\n" \
"[ -m <msg id> | --msg-id=<msg id>]\n" \
"[ -V | --version ]\n\n" \