Makefile: ensure that iowatcher gets cleaned
[blktrace.git] / blkiomon.c
index d2907ec15c56dd9a25061ee541975d6d179c8a61..a895f6525bd287abbeadeb41f04a8621900006ca 100644 (file)
@@ -71,7 +71,7 @@ struct output {
        int pipe;
 };
 
-static char blkiomon_version[] = "0.2";
+static char blkiomon_version[] = "0.3";
 
 static FILE *ifp;
 static int interval = -1;
@@ -168,7 +168,7 @@ static struct dstat *blkiomon_alloc_dstat(void)
                return NULL;
        }
 
-       memset(dstat, 0, sizeof(*dstat));
+       blkiomon_stat_init(&dstat->msg.stat);
        return dstat;
 }
 
@@ -211,8 +211,6 @@ static struct dstat *blkiomon_get_dstat(__u32 device)
                goto out;
 
        dstat->msg.stat.device = device;
-       dstat->msg.stat.size_mm.min = -1ULL;
-       dstat->msg.stat.d2c_mm.min = -1ULL;
 
        rb_link_node(&dstat->node, search.parent, search.node_ptr);
        rb_insert_color(&dstat->node, &dstat_tree[dstat_curr]);
@@ -314,23 +312,26 @@ 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;
+       __u64 thrput = size * 1000 / d2c;
 
        dstat = blkiomon_get_dstat(bit_d->device);
        if (!dstat)
                return 1;
        p = &dstat->msg.stat;
 
-       if (BLK_DATADIR(bit_c->action) & BLK_TC_READ)
-               p->read++;
-       else if (BLK_DATADIR(bit_c->action) & BLK_TC_WRITE)
-               p->write++;
-       else
+       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->thrput_w, thrput);
+               minmax_account(&p->size_w, size);
+               minmax_account(&p->d2c_w, d2c);
+       } else
                p->bidir++;
 
        histlog2_account(p->size_hist, size, &size_hist);
        histlog2_account(p->d2c_hist, d2c, &d2c_hist);
-       minmax_account(&p->size_mm, size);
-       minmax_account(&p->d2c_mm, d2c);
        return 0;
 }
 
@@ -598,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" \
+       "[ -d <file>         | --dump-lldd=<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" \