From: Marcelo Tosatti <mtosatti@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Nitesh Narayan Lal <nitesh@redhat.com>,
Nicolas Saenz Julienne <nsaenzju@redhat.com>,
Juri Lelli <juri.lelli@redhat.com>,
Frederic Weisbecker <frederic@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Christoph Lameter <cl@gentwo.de>,
Thomas Gleixner <tglx@linutronix.de>
Subject: rt-tests: add task isolation activation to cyclictest/oslat
Date: Tue, 24 Aug 2021 12:42:52 -0300 [thread overview]
Message-ID: <20210824154252.GA105087@fuller.cnet> (raw)
Check whether task isolation is configured, right before the latency
sensitive loop, and if so, activate it.
Use chisol util-linux tool to configure task isolation externally.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Index: rt-tests/src/cyclictest/cyclictest.c
===================================================================
--- rt-tests.orig/src/cyclictest/cyclictest.c
+++ rt-tests/src/cyclictest/cyclictest.c
@@ -509,7 +509,7 @@ static void *timerthread(void *param)
struct itimerval itimer;
struct itimerspec tspec;
struct thread_stat *stat = par->stats;
- int stopped = 0;
+ int ret, stopped = 0;
cpu_set_t mask;
pthread_t thread;
unsigned long smi_now, smi_old = 0;
@@ -617,11 +617,21 @@ static void *timerthread(void *param)
stat->threadstarted++;
+#ifdef PR_ISOL_GET
+ ret = prctl(PR_ISOL_GET, 0, 0, 0, 0);
+ if (ret != -1) {
+ unsigned long mask = ret;
+
+ ret = prctl(PR_ISOL_CTRL_SET, mask, 0, 0);
+ if (ret == -1)
+ fatal("prctl PR_ISOL_CTRL_SET");
+ }
+#endif
while (!shutdown) {
uint64_t diff;
unsigned long diff_smi = 0;
- int sigs, ret;
+ int sigs;
/* Wait for next period */
switch (par->mode) {
@@ -769,6 +779,12 @@ static void *timerthread(void *param)
}
out:
+#ifdef PR_ISOL_GET
+ ret = prctl(PR_ISOL_CTRL_SET, 0, 0, 0);
+ if (ret == -1)
+ fatal("prctl PR_ISOL_CTRL_SET");
+#endif
+
if (refresh_on_max) {
pthread_mutex_lock(&refresh_on_max_lock);
/* We could reach here with both shutdown and allstopped unset (0).
Index: rt-tests/src/oslat/oslat.c
===================================================================
--- rt-tests.orig/src/oslat/oslat.c
+++ rt-tests/src/oslat/oslat.c
@@ -351,9 +351,21 @@ static void insert_bucket(struct thread
static void doit(struct thread *t)
{
+#ifdef PR_ISOL_GET
+ int ret;
+#endif
stamp_t ts1, ts2;
workload_fn workload_fn = g.workload->w_fn;
+#ifdef PR_ISOL_GET
+ ret = prctl(PR_ISOL_GET, 0, 0, 0, 0);
+ if (ret != -1) {
+ unsigned long mask = ret;
+
+ TEST0(prctl(PR_ISOL_CTRL_SET, mask, 0, 0, 0));
+ }
+#endif
+
frc(&ts2);
do {
workload_fn(t->dst_buf, t->src_buf, g.workload_mem_size);
@@ -361,6 +373,10 @@ static void doit(struct thread *t)
insert_bucket(t, ts1 - ts2);
ts2 = ts1;
} while (g.cmd == GO);
+
+#ifdef PR_ISOL_GET
+ TEST0(prctl(PR_ISOL_CTRL_SET, 0, 0, 0, 0));
+#endif
}
static int set_fifo_prio(int prio)
reply other threads:[~2021-08-24 15:43 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20210824154252.GA105087@fuller.cnet \
--to=mtosatti@redhat.com \
--cc=cl@gentwo.de \
--cc=frederic@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nitesh@redhat.com \
--cc=nsaenzju@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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.