From: Andreas Herrmann <aherrmann@suse.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: fio@vger.kernel.org
Subject: [PATCH 2/2] cgroup: Allow to use weights with cgroup-v2
Date: Fri, 28 Aug 2020 12:06:15 +0200 [thread overview]
Message-ID: <20200828100615.GI6041@suselix> (raw)
In-Reply-To: <20200828100230.GG6041@suselix>
Signed-off-by: Andreas Herrmann <aherrmann@suse.com>
---
cgroup.c | 56 +++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 45 insertions(+), 11 deletions(-)
diff --git a/cgroup.c b/cgroup.c
index 6edb5b14..9fcf44ad 100644
--- a/cgroup.c
+++ b/cgroup.c
@@ -165,6 +165,26 @@ static int write_int_to_file(struct thread_data *td, const char *path,
}
+static int write_str_to_file(struct thread_data *td, const char *path,
+ const char *filename, const char *str,
+ const char *onerr)
+{
+ char tmp[256];
+ FILE *f;
+
+ sprintf(tmp, "%s/%s", path, filename);
+ f = fopen(tmp, "w");
+ if (!f) {
+ td_verror(td, errno, onerr);
+ return 1;
+ }
+
+ fprintf(f, "%s", str);
+ fclose(f);
+ return 0;
+
+}
+
static int cgroup_write_pid(struct thread_data *td, char *path, bool cgroup2)
{
unsigned int val = td->pid;
@@ -213,18 +233,32 @@ int cgroup_setup(struct thread_data *td, struct flist_head *clist, struct cgroup
if (td->o.cgroup_weight) {
if ((*mnt)->cgroup2) {
- log_err("fio: cgroup weight doesn't work with cgroup2\n");
- goto err;
- }
- if (write_int_to_file(td, root, "blkio.weight",
- td->o.cgroup_weight,
- "cgroup open blkio.weight")) {
- td_clear_error(td);
- log_err("Trying to use blkio.bfq.weight\n");
- if (write_int_to_file(td, root, "blkio.bfq.weight",
- td->o.cgroup_weight,
- "cgroup open blkio.bfq.weight"))
+ if (write_str_to_file(td, (*mnt)->path, "cgroup.subtree_control",
+ "+io", "cgroup open cgroup.subtree_control"))
goto err;
+ if (!td->o.cgroup_use_bfq) {
+ if (write_int_to_file(td, root, "io.weight",
+ td->o.cgroup_weight,
+ "cgroup open io.weight"))
+ goto err;
+ } else {
+ if (write_int_to_file(td, root, "io.bfq.weight",
+ td->o.cgroup_weight,
+ "cgroup open io.bfq.weight"))
+ goto err;
+ }
+ } else {
+ if (!td->o.cgroup_use_bfq) {
+ if (write_int_to_file(td, root, "blkio.weight",
+ td->o.cgroup_weight,
+ "cgroup open blkio.weight"))
+ goto err;
+ } else {
+ if (write_int_to_file(td, root, "blkio.bfq.weight",
+ td->o.cgroup_weight,
+ "cgroup open blkio.bfq.weight"))
+ goto err;
+ }
}
}
--
2.28.0
prev parent reply other threads:[~2020-08-28 10:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-28 10:02 [PATCH 0/2] cgroup: Enable weight tests with cgroup-v2 Andreas Herrmann
2020-08-28 10:04 ` [PATCH 1/2] thread_options: Add cgroup_use_bfq Andreas Herrmann
2020-08-28 18:36 ` Elliott, Robert (Servers)
2020-08-28 23:52 ` Jens Axboe
2020-08-29 2:14 ` Elliott, Robert (Servers)
2020-08-31 6:07 ` Andreas Herrmann
2020-08-31 6:03 ` Andreas Herrmann
2020-08-28 10:06 ` Andreas Herrmann [this message]
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=20200828100615.GI6041@suselix \
--to=aherrmann@suse.com \
--cc=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.