All of lore.kernel.org
 help / color / mirror / Atom feed
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.