diff mbox series

[v2] block: skip start/end time stamping for passthrough IO

Message ID 20231222101707.6921-1-kundan.kumar@samsung.com (mailing list archive)
State New, archived
Headers show
Series [v2] block: skip start/end time stamping for passthrough IO | expand

Commit Message

Kundan Kumar Dec. 22, 2023, 10:17 a.m. UTC
commit 41fa722239b4 ("blk-mq: do not include passthrough requests in I/O
accounting")' disables I/O accounting for passthrough requests. Since tools
like 'iostat' do not show anything useful for passthrough I/O, it's
wasteful to do start/end time-stamping. So do away with that.

Avoiding the time-stamping improves the I/O performance by ~7%

Signed-off-by: Kundan Kumar <kundan.kumar@samsung.com>
Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
---
Changes compared to v1:
- Modified commit description.
- Made code cleaner with bit of separation.

 include/linux/blk-mq.h | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Jens Axboe Dec. 22, 2023, 2:14 p.m. UTC | #1
On Fri, 22 Dec 2023 15:47:07 +0530, Kundan Kumar wrote:
> commit 41fa722239b4 ("blk-mq: do not include passthrough requests in I/O
> accounting")' disables I/O accounting for passthrough requests. Since tools
> like 'iostat' do not show anything useful for passthrough I/O, it's
> wasteful to do start/end time-stamping. So do away with that.
> 
> Avoiding the time-stamping improves the I/O performance by ~7%
> 
> [...]

Applied, thanks!

[1/1] block: skip start/end time stamping for passthrough IO
      commit: 8e6e83d77227d9ba39e0c7b50693f1b4f8728006

Best regards,
diff mbox series

Patch

diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 1ab3081c82ed..a676e116085f 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -830,6 +830,12 @@  void blk_mq_end_request_batch(struct io_comp_batch *ib);
  */
 static inline bool blk_mq_need_time_stamp(struct request *rq)
 {
+	/*
+	 * passthrough io doesn't use iostat accounting, cgroup stats
+	 * and io scheduler functionalities.
+	 */
+	if (blk_rq_is_passthrough(rq))
+		return false;
 	return (rq->rq_flags & (RQF_IO_STAT | RQF_STATS | RQF_USE_SCHED));
 }