Update to latest upstream
Remove patch included in the update, and add three more
This commit is contained in:
parent
9887e20403
commit
1654d94126
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,6 @@
|
|||||||
|
*.swp
|
||||||
/rt-tests-1.9.tar.xz
|
/rt-tests-1.9.tar.xz
|
||||||
/rt-tests-2.2.tar.xz
|
/rt-tests-2.2.tar.xz
|
||||||
/rt-tests-2.3.tar.xz
|
/rt-tests-2.3.tar.xz
|
||||||
/rt-tests-2.4.tar.xz
|
/rt-tests-2.4.tar.xz
|
||||||
|
/rt-tests-2.5.tar.xz
|
||||||
|
@ -1,116 +0,0 @@
|
|||||||
From 2d910eecf10cd806e22abeb1d96189f87ef74d91 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Stultz <jstultz@google.com>
|
|
||||||
Date: Thu, 28 Jul 2022 20:22:36 +0000
|
|
||||||
Subject: [PATCH] cyclictest: Fix threads being affined even when -a isn't set
|
|
||||||
|
|
||||||
Using cyclictest without specifying affinity via -a, I was
|
|
||||||
noticing a strange issue where the rt threads where not
|
|
||||||
migrating when being blocked.
|
|
||||||
|
|
||||||
After lots of debugging in the kernel, I found its actually an
|
|
||||||
issue with cyclictest.
|
|
||||||
|
|
||||||
When using -t there is no behavioral difference between specifying
|
|
||||||
-a or not specifying -a.
|
|
||||||
|
|
||||||
This can be confirmed by adding printf messages around the
|
|
||||||
pthread_setaffinity_np() call in the threadtest function.
|
|
||||||
|
|
||||||
Currently:
|
|
||||||
|
|
||||||
root@localhost:~/rt-tests# ./cyclictest -t -a -q -D1
|
|
||||||
Affining thread 0 to cpu: 0
|
|
||||||
Affining thread 1 to cpu: 1
|
|
||||||
Affining thread 2 to cpu: 2
|
|
||||||
Affining thread 3 to cpu: 3
|
|
||||||
Affining thread 4 to cpu: 4
|
|
||||||
Affining thread 5 to cpu: 5
|
|
||||||
Affining thread 7 to cpu: 7
|
|
||||||
Affining thread 6 to cpu: 6
|
|
||||||
T: 0 (15034) P: 0 I:1000 C: 1000 Min: 82 Act: 184 Avg: 180 Max: 705
|
|
||||||
...
|
|
||||||
|
|
||||||
root@localhost:~/rt-tests# ./cyclictest -t -q -D1
|
|
||||||
Affining thread 0 to cpu: 0
|
|
||||||
Affining thread 1 to cpu: 1
|
|
||||||
Affining thread 2 to cpu: 2
|
|
||||||
Affining thread 3 to cpu: 3
|
|
||||||
Affining thread 4 to cpu: 4
|
|
||||||
Affining thread 5 to cpu: 5
|
|
||||||
Affining thread 6 to cpu: 6
|
|
||||||
Affining thread 7 to cpu: 7
|
|
||||||
T: 0 (15044) P: 0 I:1000 C: 1000 Min: 74 Act: 144 Avg: 162 Max: 860
|
|
||||||
..
|
|
||||||
|
|
||||||
This issue seems to come from the logic in process_options():
|
|
||||||
/* if smp wasn't requested, test for numa automatically */
|
|
||||||
if (!smp) {
|
|
||||||
numa = numa_initialize();
|
|
||||||
if (setaffinity == AFFINITY_UNSPECIFIED)
|
|
||||||
setaffinity = AFFINITY_USEALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
Here, by setting setaffinity = AFFINITY_USEALL, we effectively
|
|
||||||
pin each thread to its respective cpu, same as the "-a" option.
|
|
||||||
|
|
||||||
This was most recently introduced in commit bdb8350f1b0b
|
|
||||||
("Revert "cyclictest: Use affinity_mask for steering
|
|
||||||
thread placement"").
|
|
||||||
|
|
||||||
This seems erronious to me, so I wanted to share this patch
|
|
||||||
which removes the overriding AFFINITY_UNSPECIFIED with
|
|
||||||
AFFINITY_USEALL by default. Also, some additional tweaks to
|
|
||||||
preserve the existing numa allocation affinity.
|
|
||||||
|
|
||||||
With this patch, we no longer call pthread_setaffinity_np() in the
|
|
||||||
"./cyclictest -t -q -D1" case.
|
|
||||||
|
|
||||||
Cc: John Kacur <jkacur@redhat.com>
|
|
||||||
Cc: Connor O'Brien <connoro@google.com>
|
|
||||||
Cc: Qais Yousef <qais.yousef@arm.com>
|
|
||||||
Signed-off-by: John Stultz <jstultz@google.com>
|
|
||||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
||||||
---
|
|
||||||
src/cyclictest/cyclictest.c | 10 ++++++----
|
|
||||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
|
|
||||||
index decea786268a..82759d1cf67b 100644
|
|
||||||
--- a/src/cyclictest/cyclictest.c
|
|
||||||
+++ b/src/cyclictest/cyclictest.c
|
|
||||||
@@ -1270,8 +1270,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
|
|
||||||
/* if smp wasn't requested, test for numa automatically */
|
|
||||||
if (!smp) {
|
|
||||||
numa = numa_initialize();
|
|
||||||
- if (setaffinity == AFFINITY_UNSPECIFIED)
|
|
||||||
- setaffinity = AFFINITY_USEALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (option_affinity) {
|
|
||||||
@@ -2043,9 +2041,13 @@ int main(int argc, char **argv)
|
|
||||||
void *stack;
|
|
||||||
void *currstk;
|
|
||||||
size_t stksize;
|
|
||||||
+ int node_cpu = cpu;
|
|
||||||
+
|
|
||||||
+ if (node_cpu == -1)
|
|
||||||
+ node_cpu = cpu_for_thread_ua(i, max_cpus);
|
|
||||||
|
|
||||||
/* find the memory node associated with the cpu i */
|
|
||||||
- node = rt_numa_numa_node_of_cpu(cpu);
|
|
||||||
+ node = rt_numa_numa_node_of_cpu(node_cpu);
|
|
||||||
|
|
||||||
/* get the stack size set for this thread */
|
|
||||||
if (pthread_attr_getstack(&attr, &currstk, &stksize))
|
|
||||||
@@ -2056,7 +2058,7 @@ int main(int argc, char **argv)
|
|
||||||
stksize = PTHREAD_STACK_MIN * 2;
|
|
||||||
|
|
||||||
/* allocate memory for a stack on appropriate node */
|
|
||||||
- stack = rt_numa_numa_alloc_onnode(stksize, node, cpu);
|
|
||||||
+ stack = rt_numa_numa_alloc_onnode(stksize, node, node_cpu);
|
|
||||||
|
|
||||||
/* touch the stack pages to pre-fault them in */
|
|
||||||
memset(stack, 0, stksize);
|
|
||||||
--
|
|
||||||
2.37.2
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Name: realtime-tests
|
Name: realtime-tests
|
||||||
Summary: Programs that test various rt-features
|
Summary: Programs that test various rt-features
|
||||||
Version: 2.4
|
Version: 2.5
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
|
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
|
||||||
Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz
|
Source0: https://www.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar.xz
|
||||||
@ -15,7 +15,9 @@ Requires: bash
|
|||||||
Requires: bc
|
Requires: bc
|
||||||
|
|
||||||
#Patches
|
#Patches
|
||||||
Patch1: cyclictest-Fix-threads-being-affined-even-when-a-not-set.patch
|
Patch1: rt-tests-deadline_test-Fix-spelling-to-single-in-com.patch
|
||||||
|
Patch2: rt-tests-hwlatdetect-Add-field-cpu-to-samples-output.patch
|
||||||
|
Patch3: rt-tests-Makefile-Use-sysconfig-instead-of-distutils.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
realtime-tests is a set of programs that test and measure various components of
|
realtime-tests is a set of programs that test and measure various components of
|
||||||
@ -74,6 +76,10 @@ latency. It also tests the functioning of priority-inheritance mutexes.
|
|||||||
%{_mandir}/man8/determine_maximum_mpps.8.*
|
%{_mandir}/man8/determine_maximum_mpps.8.*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Feb 14 2023 John Kacur <jkacur@redhat.com> - 2.5-1
|
||||||
|
- Update to latest upstream
|
||||||
|
- Remove patch included in the update, and add three more
|
||||||
|
|
||||||
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.4-2
|
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.4-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||||
|
|
||||||
|
55
rt-tests-Makefile-Use-sysconfig-instead-of-distutils.patch
Normal file
55
rt-tests-Makefile-Use-sysconfig-instead-of-distutils.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From eb18c75481745cc482b9d968811c626cff54d00f Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Kacur <jkacur@redhat.com>
|
||||||
|
Date: Wed, 15 Feb 2023 17:10:37 -0500
|
||||||
|
Subject: [PATCH 3/3] rt-tests: Makefile: Use sysconfig instead of distutils
|
||||||
|
for PYLIB
|
||||||
|
|
||||||
|
Use sysconfig instead of distutils for PYLIB
|
||||||
|
Version 2 takes into consideration that different versions of python
|
||||||
|
produce different results.
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
Makefile | 2 +-
|
||||||
|
get_pylib.py | 16 ++++++++++++++++
|
||||||
|
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100755 get_pylib.py
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 4df61ece123b..32a9f41198a4 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -34,7 +34,7 @@ CFLAGS ?= -Wall -Wno-nonnull -Wextra
|
||||||
|
CPPFLAGS += -D_GNU_SOURCE -Isrc/include
|
||||||
|
LDFLAGS ?=
|
||||||
|
|
||||||
|
-PYLIB ?= $(shell python3 -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_lib())')
|
||||||
|
+PYLIB ?= $(shell python3 -m get_pylib)
|
||||||
|
|
||||||
|
# Check for errors, such as python3 not available
|
||||||
|
ifeq (${PYLIB},)
|
||||||
|
diff --git a/get_pylib.py b/get_pylib.py
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000000..56253d589fe4
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/get_pylib.py
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
+
|
||||||
|
+# This file is used during the make process
|
||||||
|
+
|
||||||
|
+import sysconfig
|
||||||
|
+
|
||||||
|
+# Older versions of python don't have this scheme
|
||||||
|
+# but produce the answer we expect with 'posix_prefix'
|
||||||
|
+# Newer versions of python insert 'local' in the path unless we use rpm_prefix
|
||||||
|
+SCHEME = 'rpm_prefix'
|
||||||
|
+
|
||||||
|
+if not SCHEME in sysconfig.get_scheme_names():
|
||||||
|
+ SCHEME = 'posix_prefix'
|
||||||
|
+
|
||||||
|
+PYLIB = sysconfig.get_path('purelib', SCHEME)
|
||||||
|
+print(PYLIB)
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
30
rt-tests-deadline_test-Fix-spelling-to-single-in-com.patch
Normal file
30
rt-tests-deadline_test-Fix-spelling-to-single-in-com.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 37b70ea17d5479505cebed409087c6cd28c1a485 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Kacur <jkacur@redhat.com>
|
||||||
|
Date: Fri, 10 Feb 2023 14:57:38 -0500
|
||||||
|
Subject: [PATCH 1/3] rt-tests: deadline_test: Fix spelling to "single" in
|
||||||
|
comment
|
||||||
|
|
||||||
|
Fix the spelling in the comments before bind_cpu()
|
||||||
|
from "sigle" to "single".
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
src/sched_deadline/deadline_test.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/sched_deadline/deadline_test.c b/src/sched_deadline/deadline_test.c
|
||||||
|
index 731073e85180..cd8ef01f7d68 100644
|
||||||
|
--- a/src/sched_deadline/deadline_test.c
|
||||||
|
+++ b/src/sched_deadline/deadline_test.c
|
||||||
|
@@ -931,7 +931,7 @@ static void teardown(void)
|
||||||
|
* bind_cpu - Set the affinity of a thread to a specific CPU.
|
||||||
|
* @cpu: The CPU to bind to.
|
||||||
|
*
|
||||||
|
- * Sets the current thread to have an affinity of a sigle CPU.
|
||||||
|
+ * Sets the current thread to have an affinity of a single CPU.
|
||||||
|
* Does not work on SCHED_DEADLINE tasks.
|
||||||
|
*/
|
||||||
|
static void bind_cpu(int cpu)
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
42
rt-tests-hwlatdetect-Add-field-cpu-to-samples-output.patch
Normal file
42
rt-tests-hwlatdetect-Add-field-cpu-to-samples-output.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From 96e78093832288b705c507b1ee443aeffe126bba Mon Sep 17 00:00:00 2001
|
||||||
|
From: Costa Shulyupin <costa.shul@redhat.com>
|
||||||
|
Date: Mon, 13 Feb 2023 19:11:36 +0200
|
||||||
|
Subject: [PATCH 2/3] rt-tests: hwlatdetect: Add field cpu to samples output
|
||||||
|
|
||||||
|
Information about CPU index is valuable for debugging
|
||||||
|
latency issues
|
||||||
|
|
||||||
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||||
|
---
|
||||||
|
src/hwlatdetect/hwlatdetect.py | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
|
||||||
|
index 68df58f7e2d0..dc28f38b751a 100755
|
||||||
|
--- a/src/hwlatdetect/hwlatdetect.py
|
||||||
|
+++ b/src/hwlatdetect/hwlatdetect.py
|
||||||
|
@@ -237,10 +237,11 @@ class Tracer(Detector):
|
||||||
|
|
||||||
|
class Sample:
|
||||||
|
'private class for tracer sample data'
|
||||||
|
- __slots__ = 'timestamp', 'inner', 'outer'
|
||||||
|
+ __slots__ = 'cpu', 'timestamp', 'inner', 'outer'
|
||||||
|
|
||||||
|
def __init__(self, line):
|
||||||
|
fields = line.split()
|
||||||
|
+ self.cpu = int(fields[1][1:-1])
|
||||||
|
i, o = fields[6].split('/')
|
||||||
|
ts = fields[7][3:]
|
||||||
|
self.timestamp = str(ts)
|
||||||
|
@@ -248,7 +249,7 @@ class Tracer(Detector):
|
||||||
|
self.outer = int(o)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
- return f"ts: {self.timestamp}, inner:{self.inner}, outer:{self.outer}"
|
||||||
|
+ return f"ts: {self.timestamp}, inner:{self.inner}, outer:{self.outer}, cpu:{self.cpu}"
|
||||||
|
|
||||||
|
def display(self):
|
||||||
|
""" convert object to string and print """
|
||||||
|
--
|
||||||
|
2.39.1
|
||||||
|
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (rt-tests-2.4.tar.xz) = ef72a55ed85c4d6717cef4573d684ea87f6e73f9189b2a2b8e9b69eaf6ea59933522769c9ba9c131ef9d0546645152e65f072427c53fcc0e386bd297fac3a6e1
|
SHA512 (rt-tests-2.5.tar.xz) = 4341716aa1a307aeb9f11e922da814ff6f1e16f7a4b9ba05bcc8a3972f411f4b4f8212ffe58bdaa025e164d1ddcfcc199fdb2b53bfe051d58cfd898a751dcc25
|
||||||
|
Loading…
Reference in New Issue
Block a user