linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: <yang.yang29@zte.com.cn>
To: <akpm@linux-foundation.org>, <david@redhat.com>
Cc: <linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
	<linux-doc@vger.kernel.org>, <yang.yang29@zte.com.cn>,
	<wang.yong12@zte.com.cn>
Subject: [PATCH linux-next] delayacct: improve the average delay precision of getdelay tool to microsecond
Date: Mon, 13 Feb 2023 14:08:08 +0800 (CST)	[thread overview]
Message-ID: <202302131408087983857@zte.com.cn> (raw)

From: Wang Yong <wang.yong12@zte.com.cn>

Improve the average delay precision of getdelay tool to microsecond.
When using the getdelay tool, it is sometimes found that the average
delay except CPU is not 0, but display is 0, because the precison is too
low. For example, see delay average of SWAP below when using ZRAM.

print delayacct stats ON
PID	32915
CPU             count     real total  virtual total    delay total  delay average
               339202     2793871936     9233585504        7951112          0.000ms
IO              count    delay total  delay average
                   41      419296904             10ms
SWAP            count    delay total  delay average
               242589     1045792384              0ms
This wrong display is misleading, so improve the millisecond precision
of the  average delay to microsecond just like CPU. Then user would
get more accurate information of delay time.

Signed-off-by: Wang Yong <wang.yong12@zte.com.cn>
Reviewed-by: Yang Yang <yang.yang29@zte.com.cn>
---
 Documentation/accounting/delay-accounting.rst      | 14 ++++++-------
 .../zh_CN/accounting/delay-accounting.rst          | 14 ++++++-------
 tools/accounting/getdelays.c                       | 24 +++++++++++-----------
 3 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/Documentation/accounting/delay-accounting.rst b/Documentation/accounting/delay-accounting.rst
index 7103b62ba6d7..c4ac482262f8 100644
--- a/Documentation/accounting/delay-accounting.rst
+++ b/Documentation/accounting/delay-accounting.rst
@@ -109,17 +109,17 @@ Get sum of delays, since system boot, for all pids with tgid 5::
    CPU             count     real total  virtual total    delay total  delay average
                        8        7000000        6872122        3382277          0.423ms
    IO              count    delay total  delay average
-                   0              0              0ms
+                   0              0          0.000ms
    SWAP            count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    RECLAIM         count    delay total  delay average
-                   0              0              0ms
+                   0              0          0.000ms
    THRASHING       count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    COMPACT         count    delay total  delay average
-                       0              0              0ms
-        WPCOPY          count    delay total  delay average
-                            0              0              0ms
+                       0              0          0.000ms
+   WPCOPY          count    delay total  delay average
+                       0              0          0.000ms

 Get IO accounting for pid 1, it works only with -p::

diff --git a/Documentation/translations/zh_CN/accounting/delay-accounting.rst b/Documentation/translations/zh_CN/accounting/delay-accounting.rst
index a01dc3d5b0db..3c952fde09ff 100644
--- a/Documentation/translations/zh_CN/accounting/delay-accounting.rst
+++ b/Documentation/translations/zh_CN/accounting/delay-accounting.rst
@@ -92,17 +92,17 @@ getdelays命令的一般格式::
    CPU             count     real total  virtual total    delay total  delay average
                        8        7000000        6872122        3382277          0.423ms
    IO              count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    SWAP            count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    RECLAIM         count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    THRASHING       count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
    COMPACT         count    delay total  delay average
-                       0              0              0ms
-    WPCOPY          count    delay total  delay average
-                       0              0              0ms
+                       0              0          0.000ms
+   WPCOPY          count    delay total  delay average
+                       0              0          0.000ms

 获取pid为1的IO计数,它只和-p一起使用::
    # ./getdelays -i -p 1
diff --git a/tools/accounting/getdelays.c b/tools/accounting/getdelays.c
index 938dec0dfaad..89324db33be3 100644
--- a/tools/accounting/getdelays.c
+++ b/tools/accounting/getdelays.c
@@ -198,17 +198,17 @@ static void print_delayacct(struct taskstats *t)
    printf("\n\nCPU   %15s%15s%15s%15s%15s\n"
           "      %15llu%15llu%15llu%15llu%15.3fms\n"
           "IO    %15s%15s%15s\n"
-          "      %15llu%15llu%15llums\n"
+          "      %15llu%15llu%15.3fms\n"
           "SWAP  %15s%15s%15s\n"
-          "      %15llu%15llu%15llums\n"
+          "      %15llu%15llu%15.3fms\n"
           "RECLAIM  %12s%15s%15s\n"
-          "      %15llu%15llu%15llums\n"
+          "      %15llu%15llu%15.3fms\n"
           "THRASHING%12s%15s%15s\n"
-          "      %15llu%15llu%15llums\n"
+          "      %15llu%15llu%15.3fms\n"
           "COMPACT  %12s%15s%15s\n"
-          "      %15llu%15llu%15llums\n"
+          "      %15llu%15llu%15.3fms\n"
           "WPCOPY   %12s%15s%15s\n"
-          "      %15llu%15llu%15llums\n",
+          "      %15llu%15llu%15.3fms\n",
           "count", "real total", "virtual total",
           "delay total", "delay average",
           (unsigned long long)t->cpu_count,
@@ -219,27 +219,27 @@ static void print_delayacct(struct taskstats *t)
           "count", "delay total", "delay average",
           (unsigned long long)t->blkio_count,
           (unsigned long long)t->blkio_delay_total,
-          average_ms(t->blkio_delay_total, t->blkio_count),
+          average_ms((double)t->blkio_delay_total, t->blkio_count),
           "count", "delay total", "delay average",
           (unsigned long long)t->swapin_count,
           (unsigned long long)t->swapin_delay_total,
-          average_ms(t->swapin_delay_total, t->swapin_count),
+          average_ms((double)t->swapin_delay_total, t->swapin_count),
           "count", "delay total", "delay average",
           (unsigned long long)t->freepages_count,
           (unsigned long long)t->freepages_delay_total,
-          average_ms(t->freepages_delay_total, t->freepages_count),
+          average_ms((double)t->freepages_delay_total, t->freepages_count),
           "count", "delay total", "delay average",
           (unsigned long long)t->thrashing_count,
           (unsigned long long)t->thrashing_delay_total,
-          average_ms(t->thrashing_delay_total, t->thrashing_count),
+          average_ms((double)t->thrashing_delay_total, t->thrashing_count),
           "count", "delay total", "delay average",
           (unsigned long long)t->compact_count,
           (unsigned long long)t->compact_delay_total,
-          average_ms(t->compact_delay_total, t->compact_count),
+          average_ms((double)t->compact_delay_total, t->compact_count),
           "count", "delay total", "delay average",
           (unsigned long long)t->wpcopy_count,
           (unsigned long long)t->wpcopy_delay_total,
-          average_ms(t->wpcopy_delay_total, t->wpcopy_count));
+          average_ms((double)t->wpcopy_delay_total, t->wpcopy_count));
 }

 static void task_context_switch_counts(struct taskstats *t)
--
2.15.2


             reply	other threads:[~2023-02-13  6:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-13  6:08 yang.yang29 [this message]
2023-03-02  2:48 ` Bagas Sanjaya
2023-03-02  3:26   ` yang.yang29

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202302131408087983857@zte.com.cn \
    --to=yang.yang29@zte.com.cn \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=wang.yong12@zte.com.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox