OSDN Git Service

block: delete part_round_stats and switch to less precise counting
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 6 Dec 2018 16:41:19 +0000 (11:41 -0500)
committerJens Axboe <axboe@kernel.dk>
Mon, 10 Dec 2018 15:30:37 +0000 (08:30 -0700)
commit5b18b5a737600fd20ba2045f320d5926ebbf341a
treefe35e150bf36785dfe3ed8c845e3b043e56f9f90
parent112f158f66cbe25fd561a5dfe9c3826e06abf757
block: delete part_round_stats and switch to less precise counting

We want to convert to per-cpu in_flight counters.

The function part_round_stats needs the in_flight counter every jiffy, it
would be too costly to sum all the percpu variables every jiffy, so it
must be deleted. part_round_stats is used to calculate two counters -
time_in_queue and io_ticks.

time_in_queue can be calculated without part_round_stats, by adding the
duration of the I/O when the I/O ends (the value is almost as exact as the
previously calculated value, except that time for in-progress I/Os is not
counted).

io_ticks can be approximated by increasing the value when I/O is started
or ended and the jiffies value has changed. If the I/Os take less than a
jiffy, the value is as exact as the previously calculated value. If the
I/Os take more than a jiffy, io_ticks can drift behind the previously
calculated value.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c
block/blk-core.c
block/blk-merge.c
block/genhd.c
block/partition-generic.c
include/linux/genhd.h