Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4517136ybb; Mon, 23 Mar 2020 23:41:24 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuAUhYeZCPCW6rxlnEq5257dUzJBHg9/Ts+jPaQ3ERC8hfHNMmv51Rx1/GP7Tib/j3az7EQ X-Received: by 2002:a9d:62c2:: with SMTP id z2mr8048352otk.155.1585032084015; Mon, 23 Mar 2020 23:41:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585032084; cv=none; d=google.com; s=arc-20160816; b=T6TuaYLfCEAYUED0ytHEdUQIdYQnJY/DkwBxsMfNZyZ7xZjRzLtkkbkoetywAzNdNS Ypx+Ju5OUz0zYSBXBsnTdTMMUFjsKc53suUl4I/ubsjeKgKp2m6cHovkCOulBaJYhXlJ /3FnmrLnn6U52PBm+5TuSt+j7jkwQvIjTxrw3/FIDMNGq+zuQLCF+WWad5LjW4/LS23Z fb5foJrCIFdUPV5awauH6m554cae4f50zQ/qTPja11E2Ag2nVoTCQL77quoBcrbcCSj2 rqlzvqzXx2BmyF8BgzOp2yQGjUFGx3OWIxqLfM2vZZfyN6Ye0pvuIbb1WyYt0nRnBfHt k2EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:cc:to:from :subject:dkim-signature; bh=jyRnU+Asd2uxc7+0qAY2dN85ocWc8XFT/wVXuXTWsBE=; b=S5qYuIMQtGxDLH2EjU3DXDTktF4BYNL30K21rHCfieMReYVAMvG7bALeUHLtqIkK6f 39+IrbXyEVQHZw15JVU5j3GTHQU7iTJC/oZkA40PBoLkfiErhGn5F21hoNMI0AHWYkIh dArFcM6E94AwPm8mOZBEvpnN9P3jwdAqKq9mzXtou7piG4nmoGli1hNIUr+DOsJXIcvf Pp4R49p98oQTH+pDaYqOPcwwZAWFUNZKLLOBbgbpwmWJn4zaO5qHMQSahBjpAsvvlzGk bN1Q3PqsCn23L7M57oz4Zuc6uweAjYXKFFL6vYASOgAXBx6wSLBRdqkY1+N91gdAvDBF 0IFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@yandex-team.ru header.s=default header.b=QDLKKBD8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yandex-team.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x136si8769322oif.122.2020.03.23.23.41.11; Mon, 23 Mar 2020 23:41:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@yandex-team.ru header.s=default header.b=QDLKKBD8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yandex-team.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727407AbgCXGjv (ORCPT + 99 others); Tue, 24 Mar 2020 02:39:51 -0400 Received: from forwardcorp1j.mail.yandex.net ([5.45.199.163]:45114 "EHLO forwardcorp1j.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725867AbgCXGjs (ORCPT ); Tue, 24 Mar 2020 02:39:48 -0400 Received: from mxbackcorp2j.mail.yandex.net (mxbackcorp2j.mail.yandex.net [IPv6:2a02:6b8:0:1619::119]) by forwardcorp1j.mail.yandex.net (Yandex) with ESMTP id D440B2E132A; Tue, 24 Mar 2020 09:39:46 +0300 (MSK) Received: from myt5-70c90f7d6d7d.qloud-c.yandex.net (myt5-70c90f7d6d7d.qloud-c.yandex.net [2a02:6b8:c12:3e2c:0:640:70c9:f7d]) by mxbackcorp2j.mail.yandex.net (mxbackcorp/Yandex) with ESMTP id 8vnLE5EXoi-dkj88Mop; Tue, 24 Mar 2020 09:39:46 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1585031986; bh=jyRnU+Asd2uxc7+0qAY2dN85ocWc8XFT/wVXuXTWsBE=; h=In-Reply-To:Message-ID:References:Date:To:From:Subject:Cc; b=QDLKKBD8Ec4XEAfztaT7qJTJzEani+im95myqbfF5QUF3ZWR4kgoIx7vojWZqduHI /VgRiaD5XWx+lo/D8l4TPDdFANxWU6VyxNsiAY6segjOM4+X/S0Do36/ufhHPEjOme IKRsrQw7aF4BSsP2yieT5Aot3TFEkYA/VIFBPR4E= Authentication-Results: mxbackcorp2j.mail.yandex.net; dkim=pass header.i=@yandex-team.ru Received: from unknown (unknown [2a02:6b8:b080:6410::1:2]) by myt5-70c90f7d6d7d.qloud-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id XsUON6R6Im-dkbaHA5k; Tue, 24 Mar 2020 09:39:46 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) Subject: [PATCH v3 3/3] block/diskstats: replace time_in_queue with sum of request times From: Konstantin Khlebnikov To: linux-block@vger.kernel.org, Jens Axboe , linux-kernel@vger.kernel.org Cc: Mikulas Patocka , Mike Snitzer , Ming Lei Date: Tue, 24 Mar 2020 09:39:46 +0300 Message-ID: <158503198613.1955.12660218488410753545.stgit@buzz> In-Reply-To: <158503038812.1955.7827988255138056389.stgit@buzz> References: <158503038812.1955.7827988255138056389.stgit@buzz> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- block/bio.c | 1 - block/blk-core.c | 1 - block/genhd.c | 7 +++++-- block/partition-generic.c | 6 +++++- include/linux/genhd.h | 1 - 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/block/bio.c b/block/bio.c index b1053eb7af37..a353d5cdf589 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1805,7 +1805,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(); diff --git a/block/blk-core.c b/block/blk-core.c index 4401b30a1751..eaf6cb3887e6 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -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); diff --git a/block/genhd.c b/block/genhd.c index 606e8755f6ed..2b49d997ac72 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -87,7 +87,6 @@ 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; } } #endif /* CONFIG_SMP */ @@ -1487,7 +1486,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], diff --git a/block/partition-generic.c b/block/partition-generic.c index 6d3fcb5187cb..2a9bc78a116f 100644 --- a/block/partition-generic.c +++ b/block/partition-generic.c @@ -143,7 +143,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], diff --git a/include/linux/genhd.h b/include/linux/genhd.h index ead3ffb7f327..019ede22ebd2 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -89,7 +89,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]; };