From: Damien Le Moal <dlemoal@kernel.org>
To: fio@vger.kernel.org, Vincent Fu <vincentfu@gmail.com>,
Jens Axboe <axboe@kernel.dk>
Cc: Niklas Cassel <niklas.cassel@wdc.com>
Subject: [PATCH 4/4] stats: Add hint information to per priority level stats
Date: Thu, 6 Jul 2023 07:13:02 +0900 [thread overview]
Message-ID: <20230705221302.430678-5-dlemoal@kernel.org> (raw)
In-Reply-To: <20230705221302.430678-1-dlemoal@kernel.org>
From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Introduce the OS dependent ioprio_hint() macro to extract an IO
priority hint from an ioprio value. This macro defaults to always
returning 0 for OSes that do not support IO priority hints.
The json and standard output stats are modified to display the hint
value together with the priority class and level.
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
---
os/os-linux.h | 4 ++++
os/os.h | 3 +++
stat.c | 10 +++++++---
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/os/os-linux.h b/os/os-linux.h
index 6f241d09..b9c07891 100644
--- a/os/os-linux.h
+++ b/os/os-linux.h
@@ -150,6 +150,10 @@ static inline int ioprio_value(int ioprio_class, int ioprio, int ioprio_hint)
ioprio;
}
+#define ioprio_class(ioprio) ((ioprio) >> IOPRIO_CLASS_SHIFT)
+#define ioprio_hint(ioprio) (((ioprio) >> IOPRIO_HINT_SHIFT) & 0x3ff)
+#define ioprio(ioprio) ((ioprio) & 7)
+
static inline bool ioprio_value_is_class_rt(unsigned int priority)
{
return (priority >> IOPRIO_CLASS_SHIFT) == IOPRIO_CLASS_RT;
diff --git a/os/os.h b/os/os.h
index 2217d5f8..0f182324 100644
--- a/os/os.h
+++ b/os/os.h
@@ -120,6 +120,9 @@ extern int fio_cpus_split(os_cpu_mask_t *mask, unsigned int cpu);
#define ioprio_value_is_class_rt(prio) (false)
#define IOPRIO_MIN_PRIO_CLASS 0
#define IOPRIO_MAX_PRIO_CLASS 0
+#define ioprio_hint(prio) 0
+#define IOPRIO_MIN_PRIO_HINT 0
+#define IOPRIO_MAX_PRIO_HINT 0
#endif
#ifndef FIO_HAVE_IOPRIO
#define ioprio_value(prioclass, prio, priohint) (0)
diff --git a/stat.c b/stat.c
index 015b8e28..4f943602 100644
--- a/stat.c
+++ b/stat.c
@@ -597,10 +597,11 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
continue;
snprintf(buf, sizeof(buf),
- "%s prio %u/%u",
+ "%s prio %u/%u/%u",
clat_type,
ioprio_class(ts->clat_prio[ddir][i].ioprio),
- ioprio(ts->clat_prio[ddir][i].ioprio));
+ ioprio(ts->clat_prio[ddir][i].ioprio),
+ ioprio_hint(ts->clat_prio[ddir][i].ioprio));
display_lat(buf, min, max, mean, dev, out);
}
}
@@ -640,10 +641,11 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
continue;
snprintf(prio_name, sizeof(prio_name),
- "%s prio %u/%u (%.2f%% of IOs)",
+ "%s prio %u/%u/%u (%.2f%% of IOs)",
clat_type,
ioprio_class(ts->clat_prio[ddir][i].ioprio),
ioprio(ts->clat_prio[ddir][i].ioprio),
+ ioprio_hint(ts->clat_prio[ddir][i].ioprio),
100. * (double) prio_samples / (double) samples);
show_clat_percentiles(ts->clat_prio[ddir][i].io_u_plat,
prio_samples, ts->percentile_list,
@@ -1522,6 +1524,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
ioprio_class(ts->clat_prio[ddir][i].ioprio));
json_object_add_value_int(obj, "prio",
ioprio(ts->clat_prio[ddir][i].ioprio));
+ json_object_add_value_int(obj, "priohint",
+ ioprio_hint(ts->clat_prio[ddir][i].ioprio));
tmp_object = add_ddir_lat_json(ts,
ts->clat_percentiles | ts->lat_percentiles,
--
2.41.0
next prev parent reply other threads:[~2023-07-05 22:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-05 22:12 [PATCH 0/4] Add support for IO priority hints Damien Le Moal
2023-07-05 22:12 ` [PATCH 1/4] os-linux: add initial " Damien Le Moal
2023-07-18 15:44 ` Niklas Cassel
2023-07-05 22:13 ` [PATCH 2/4] options: add priohint option Damien Le Moal
2023-07-18 15:44 ` Niklas Cassel
2023-07-18 15:55 ` Niklas Cassel
2023-07-05 22:13 ` [PATCH 3/4] cmdprio: Add support for per I/O priority hint Damien Le Moal
2023-07-18 15:45 ` Niklas Cassel
2023-07-05 22:13 ` Damien Le Moal [this message]
2023-07-18 15:45 ` [PATCH 4/4] stats: Add hint information to per priority level stats Niklas Cassel
2023-07-06 8:43 ` [PATCH 0/4] Add support for IO priority hints Avri Altman
2023-07-06 8:57 ` Damien Le Moal
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=20230705221302.430678-5-dlemoal@kernel.org \
--to=dlemoal@kernel.org \
--cc=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
--cc=niklas.cassel@wdc.com \
--cc=vincentfu@gmail.com \
/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