From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by mail19.linbit.com (LINBIT Mail Daemon) with ESMTP id 0783B4207AE for ; Mon, 12 Oct 2020 17:44:11 +0200 (CEST) Received: by mail-wr1-f67.google.com with SMTP id h7so19745707wre.4 for ; Mon, 12 Oct 2020 08:44:10 -0700 (PDT) Received: from soda.linbit (62-99-137-214.static.upcbusiness.at. [62.99.137.214]) by smtp.gmail.com with ESMTPSA id y10sm19700668wrq.73.2020.10.12.08.43.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 12 Oct 2020 08:43:10 -0700 (PDT) Resent-Message-ID: <20201012154308.GX2116@soda.linbit> Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mail19.linbit.com (LINBIT Mail Daemon) with ESMTP id 2BEBD4203BA for ; Wed, 8 Jul 2020 15:34:02 +0200 (CEST) From: Ming Lei To: Guoqing Jiang Message-ID: <20200708132704.GB3340386@T590> References: <20200708075819.4531-1-guoqing.jiang@cloud.ionos.com> <20200708075819.4531-2-guoqing.jiang@cloud.ionos.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200708075819.4531-2-guoqing.jiang@cloud.ionos.com> Cc: axboe@kernel.dk, linux-block@vger.kernel.org, Lars Ellenberg , Philipp Reisner , drbd-dev@lists.linbit.com Subject: Re: [Drbd-dev] [PATCH RFC 1/5] block: return ns precision from disk_start_io_acct List-Id: "*Coordination* of development, patches, contributions -- *Questions* \(even to developers\) go to drbd-user, please." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 12 Oct 2020 15:46:15 -0000 On Wed, Jul 08, 2020 at 09:58:15AM +0200, Guoqing Jiang wrote: > Currently the duration accounting of bio based driver is converted from > jiffies to ns, means it could be less accurate as request based driver. > > So let disk_start_io_acct return from ns precision, instead of convert > jiffies to ns in disk_end_io_acct. > > Cc: Philipp Reisner > Cc: Lars Ellenberg > Cc: drbd-dev@lists.linbit.com > Signed-off-by: Guoqing Jiang > --- > block/blk-core.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/block/blk-core.c b/block/blk-core.c > index d9d632639bd1..0e806a8c62fb 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -1466,6 +1466,7 @@ unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, > struct hd_struct *part = &disk->part0; > const int sgrp = op_stat_group(op); > unsigned long now = READ_ONCE(jiffies); > + unsigned long start_ns = ktime_get_ns(); > > part_stat_lock(); > update_io_ticks(part, now, false); > @@ -1474,7 +1475,7 @@ unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, > part_stat_local_inc(part, in_flight[op_is_write(op)]); > part_stat_unlock(); > > - return now; > + return start_ns; > } > EXPORT_SYMBOL(disk_start_io_acct); > > @@ -1484,11 +1485,11 @@ void disk_end_io_acct(struct gendisk *disk, unsigned int op, > struct hd_struct *part = &disk->part0; > const int sgrp = op_stat_group(op); > unsigned long now = READ_ONCE(jiffies); > - unsigned long duration = now - start_time; > + unsigned long duration = ktime_get_ns() - start_time; > > part_stat_lock(); > update_io_ticks(part, now, true); > - part_stat_add(part, nsecs[sgrp], jiffies_to_nsecs(duration)); > + part_stat_add(part, nsecs[sgrp], duration); > part_stat_local_dec(part, in_flight[op_is_write(op)]); > part_stat_unlock(); Hi Guoqing, Cost of ktime_get_ns() can be observed as not cheap in high IOPS device, so not sure the conversion is good. Also could you share what benefit we can get with this change? Thanks, Ming