From 4054070af867f170e7cf85f1cb3cf4f0a3f138d8 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 13 Jan 2006 15:05:30 +0100 Subject: [PATCH] [PATCH] blkparse: dump requeue info as well --- blkparse.c | 30 +++++++++++++++++++++++++++++- blktrace.h | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/blkparse.c b/blkparse.c index 456f600..5a94dfe 100644 --- a/blkparse.c +++ b/blkparse.c @@ -916,6 +916,30 @@ static inline void account_unplug(struct blk_io_trace *t, } } +static inline void __account_requeue(struct io_stats *ios, + struct blk_io_trace *t, int rw) +{ + if (rw) { + ios->wrqueue++; + ios->iwrite_kb -= t_kb(t); + } else { + ios->rrqueue++; + ios->iread_kb -= t_kb(t); + } +} + +static inline void account_requeue(struct blk_io_trace *t, + struct per_cpu_info *pci, int rw) +{ + __account_requeue(&pci->io_stats, t, rw); + + if (per_process_stats) { + struct io_stats *ios = find_process_io_stats(t->pid, t->comm); + + __account_requeue(ios, t, rw); + } +} + static void log_complete(struct per_dev_info *pdi, struct per_cpu_info *pci, struct blk_io_trace *t, char *act) { @@ -1042,7 +1066,7 @@ static void dump_trace_fs(struct blk_io_trace *t, struct per_dev_info *pdi, log_generic(pci, t, "S"); break; case __BLK_TA_REQUEUE: - account_c(t, pci, w, -t->bytes); + account_requeue(t, pci, w); log_queue(pci, t, "R"); break; case __BLK_TA_ISSUE: @@ -1125,6 +1149,8 @@ static void dump_io_stats(struct io_stats *ios, char *msg) fprintf(ofp, " Read Dispatches: %s, %siB\t", size_cnv(x, ios->ireads, 0), size_cnv(y, ios->iread_kb, 1)); fprintf(ofp, " Write Dispatches: %s, %siB\n", size_cnv(x, ios->iwrites, 0), size_cnv(y, ios->iwrite_kb, 1)); + fprintf(ofp, " Reads Requeued: %s\t\t", size_cnv(x, ios->rrqueue, 0)); + fprintf(ofp, " Writes Requeued: %s\n", size_cnv(x, ios->wrqueue, 0)); fprintf(ofp, " Reads Completed: %s, %siB\t", size_cnv(x, ios->creads, 0), size_cnv(y, ios->cread_kb, 1)); fprintf(ofp, " Writes Completed: %s, %siB\n", size_cnv(x, ios->cwrites, 0), size_cnv(y, ios->cwrite_kb, 1)); fprintf(ofp, " Read Merges: %'8lu%8c\t", ios->mreads, ' '); @@ -1246,6 +1272,8 @@ static void show_device_and_cpu_stats(void) total.mwrites += ios->mwrites; total.ireads += ios->ireads; total.iwrites += ios->iwrites; + total.rrqueue += ios->rrqueue; + total.wrqueue += ios->wrqueue; total.qread_kb += ios->qread_kb; total.qwrite_kb += ios->qwrite_kb; total.cread_kb += ios->cread_kb; diff --git a/blktrace.h b/blktrace.h index cd0caa8..046a1aa 100644 --- a/blktrace.h +++ b/blktrace.h @@ -26,7 +26,7 @@ typedef __u8 u8; struct io_stats { unsigned long qreads, qwrites, creads, cwrites, mreads, mwrites; - unsigned long ireads, iwrites; + unsigned long ireads, iwrites, rrqueue, wrqueue; unsigned long long qread_kb, qwrite_kb, cread_kb, cwrite_kb; unsigned long long iread_kb, iwrite_kb; unsigned long io_unplugs, timer_unplugs; -- 2.25.1