blk-mq: add optional request->alloc_time_ns
authorTejun Heo <tj@kernel.org>
Wed, 28 Aug 2019 22:05:57 +0000 (15:05 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 29 Aug 2019 03:17:10 +0000 (21:17 -0600)
commit6f816b4b746c2241540e537682d30d8e9997d674
tree367f6fc02a7f8605cb19fd71f683d69bd96fab98
parentbeab17fc2a507e85dd18b3cef83820c5770c5f34
blk-mq: add optional request->alloc_time_ns

There are currently two start time timestamps - start_time_ns and
io_start_time_ns.  The former marks the request allocation and and the
second issue-to-device time.  The planned io.weight controller needs
to measure the total time bios take to execute after it leaves rq_qos
including the time spent waiting for request to become available,
which can easily dominate on saturated devices.

This patch adds request->alloc_time_ns which records when the request
allocation attempt started.  As it isn't used for the usual stats,
make it optional behind CONFIG_BLK_RQ_ALLOC_TIME and
QUEUE_FLAG_RQ_ALLOC_TIME so that it can be compiled out when there are
no users and it's active only on queues which need it even when
compiled in.

v2: s/pre_start_time/alloc_time/ and add CONFIG_BLK_RQ_ALLOC_TIME
    gating as suggested by Jens.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/Kconfig
block/blk-mq.c
include/linux/blkdev.h