forked from luck/tmp_suning_uos_patched
block/diskstats: replace time_in_queue with sum of request times
Column "time_in_queue" in diskstats is supposed to show total waiting time of all requests. I.e. value should be equal to the sum of times from other columns. But this is not true, because column "time_in_queue" is counted separately in jiffies rather than in nanoseconds as other times. This patch removes redundant counter for "time_in_queue" and shows total time of read, write, discard and flush requests. Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ea18e0f0a6
commit
8cd5b8fc00
|
@ -1811,7 +1811,6 @@ void generic_end_io_acct(struct request_queue *q, int req_op,
|
|||
|
||||
update_io_ticks(part, now, true);
|
||||
part_stat_add(part, nsecs[sgrp], jiffies_to_nsecs(duration));
|
||||
part_stat_add(part, time_in_queue, duration);
|
||||
part_dec_in_flight(q, part, op_is_write(req_op));
|
||||
|
||||
part_stat_unlock();
|
||||
|
|
|
@ -1340,7 +1340,6 @@ void blk_account_io_done(struct request *req, u64 now)
|
|||
update_io_ticks(part, jiffies, true);
|
||||
part_stat_inc(part, ios[sgrp]);
|
||||
part_stat_add(part, nsecs[sgrp], now - req->start_time_ns);
|
||||
part_stat_add(part, time_in_queue, nsecs_to_jiffies64(now - req->start_time_ns));
|
||||
part_dec_in_flight(req->q, part, rq_data_dir(req));
|
||||
|
||||
hd_struct_put(part);
|
||||
|
|
|
@ -110,7 +110,6 @@ static void part_stat_read_all(struct hd_struct *part, struct disk_stats *stat)
|
|||
}
|
||||
|
||||
stat->io_ticks += ptr->io_ticks;
|
||||
stat->time_in_queue += ptr->time_in_queue;
|
||||
}
|
||||
}
|
||||
#else /* CONFIG_SMP */
|
||||
|
@ -1265,7 +1264,11 @@ ssize_t part_stat_show(struct device *dev,
|
|||
(unsigned int)div_u64(stat.nsecs[STAT_WRITE], NSEC_PER_MSEC),
|
||||
inflight,
|
||||
jiffies_to_msecs(stat.io_ticks),
|
||||
jiffies_to_msecs(stat.time_in_queue),
|
||||
(unsigned int)div_u64(stat.nsecs[STAT_READ] +
|
||||
stat.nsecs[STAT_WRITE] +
|
||||
stat.nsecs[STAT_DISCARD] +
|
||||
stat.nsecs[STAT_FLUSH],
|
||||
NSEC_PER_MSEC),
|
||||
stat.ios[STAT_DISCARD],
|
||||
stat.merges[STAT_DISCARD],
|
||||
(unsigned long long)stat.sectors[STAT_DISCARD],
|
||||
|
@ -1559,7 +1562,11 @@ static int diskstats_show(struct seq_file *seqf, void *v)
|
|||
NSEC_PER_MSEC),
|
||||
inflight,
|
||||
jiffies_to_msecs(stat.io_ticks),
|
||||
jiffies_to_msecs(stat.time_in_queue),
|
||||
(unsigned int)div_u64(stat.nsecs[STAT_READ] +
|
||||
stat.nsecs[STAT_WRITE] +
|
||||
stat.nsecs[STAT_DISCARD] +
|
||||
stat.nsecs[STAT_FLUSH],
|
||||
NSEC_PER_MSEC),
|
||||
stat.ios[STAT_DISCARD],
|
||||
stat.merges[STAT_DISCARD],
|
||||
stat.sectors[STAT_DISCARD],
|
||||
|
|
|
@ -46,7 +46,6 @@ struct disk_stats {
|
|||
unsigned long ios[NR_STAT_GROUPS];
|
||||
unsigned long merges[NR_STAT_GROUPS];
|
||||
unsigned long io_ticks;
|
||||
unsigned long time_in_queue;
|
||||
local_t in_flight[2];
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user