From 99321ec5ce0d3af4e19a9bab5f0d6b12f7de6eef Mon Sep 17 00:00:00 2001 From: liyulei Date: Thu, 23 Feb 2023 15:46:35 +0800 Subject: [PATCH] Package init --- README.en.md | 33 ----- README.md | 36 +----- ...st-Increase-buffer-to-avoid-overflow.patch | 42 +++++++ ...st-Increase-buffer-to-avoid-overflow.patch | 50 ++++++++ rt-tests-1.5.tar.xz | Bin 0 -> 105072 bytes ...efile-do-not-use-python3-for-rhel7.8.patch | 28 +++++ ...ts-Set-affinity-before-applying-numa.patch | 110 +++++++++++++++++ ...-Assume-libnuma-version-2-by-default.patch | 32 +++++ ...est-Don-t-allow-OPT_SYSTEM-with-OPT_.patch | 42 +++++++ ...est-Fix-warning-cpu-may-be-used-unin.patch | 33 +++++ ...est-Make-tracemark-work-correctly-ag.patch | 68 ++++++++++ ...est.8-Remove-invalid-tracing-options.patch | 116 ++++++++++++++++++ ...tect-use-python-instead-of-python3-f.patch | 26 ++++ rt-tests.spec | 107 ++++++++++++++++ rt-tests.yaml | 7 ++ ...st-Increase-buffer-to-avoid-overflow.patch | 39 ++++++ ...st-Increase-buffer-to-avoid-overflow.patch | 39 ++++++ 17 files changed, 740 insertions(+), 68 deletions(-) mode change 100644 => 100755 README.en.md mode change 100644 => 100755 README.md create mode 100644 deadline_test-Increase-buffer-to-avoid-overflow.patch create mode 100644 pmqtest-Increase-buffer-to-avoid-overflow.patch create mode 100644 rt-tests-1.5.tar.xz create mode 100644 rt-tests-Makefile-do-not-use-python3-for-rhel7.8.patch create mode 100644 rt-tests-Set-affinity-before-applying-numa.patch create mode 100644 rt-tests-cyclictest-Assume-libnuma-version-2-by-default.patch create mode 100644 rt-tests-cyclictest-Don-t-allow-OPT_SYSTEM-with-OPT_.patch create mode 100644 rt-tests-cyclictest-Fix-warning-cpu-may-be-used-unin.patch create mode 100644 rt-tests-cyclictest-Make-tracemark-work-correctly-ag.patch create mode 100644 rt-tests-cyclictest.8-Remove-invalid-tracing-options.patch create mode 100644 rt-tests-hwlatdetect-use-python-instead-of-python3-f.patch create mode 100644 rt-tests.spec create mode 100644 rt-tests.yaml create mode 100644 sigwaittest-Increase-buffer-to-avoid-overflow.patch create mode 100644 svsematest-Increase-buffer-to-avoid-overflow.patch diff --git a/README.en.md b/README.en.md old mode 100644 new mode 100755 index 1aca1b0..506b1b8 --- a/README.en.md +++ b/README.en.md @@ -1,36 +1,3 @@ # rt-tests -#### Description This repository contains some programs that test various rt-linux features. - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md old mode 100644 new mode 100755 index dd02dca..e759e69 --- a/README.md +++ b/README.md @@ -1,37 +1,3 @@ # rt-tests -#### 介绍 -This repository contains some programs that test various rt-linux features. - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +这个仓库包含一些测试各种rt linux功能的程序。 diff --git a/deadline_test-Increase-buffer-to-avoid-overflow.patch b/deadline_test-Increase-buffer-to-avoid-overflow.patch new file mode 100644 index 0000000..c7ae585 --- /dev/null +++ b/deadline_test-Increase-buffer-to-avoid-overflow.patch @@ -0,0 +1,42 @@ +From 33dff61afb032e5374c6ec60d4f88cdf57e83c53 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Mon, 19 Aug 2019 08:43:04 +0200 +Subject: [PATCH 04/10] deadline_test: Increase buffer to avoid overflow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Increase the size of the char buffer. gcc 9.1.1 reports: + +src/sched_deadline/deadline_test.c:1803:24: warning: ‘%d’ directive writing between 1 and 11 bytes into a region of size 10 [-Wformat-overflow=] + 1803 | sprintf(setcpu_buf, "%d", cpu_count - 1); + | ^~ +src/sched_deadline/deadline_test.c:1803:23: note: directive argument in the range [-2147483648, 2147483646] + 1803 | sprintf(setcpu_buf, "%d", cpu_count - 1); + | ^~~~ +src/sched_deadline/deadline_test.c:1803:3: note: ‘sprintf’ output between 2 and 12 bytes into a destination of size 10 + 1803 | sprintf(setcpu_buf, "%d", cpu_count - 1); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Daniel Wagner +Signed-off-by: John Kacur +--- + 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 e2898de328bb..5b5f40dbb74d 100644 +--- a/src/sched_deadline/deadline_test.c ++++ b/src/sched_deadline/deadline_test.c +@@ -1795,7 +1795,7 @@ int main (int argc, char **argv) + + /* -b has us bind to the last CPU. */ + if (!all_cpus && !setcpu) { +- setcpu_buf = malloc(10); ++ setcpu_buf = malloc(12); + if (!setcpu_buf) { + perror("malloc"); + exit(-1); +-- +2.20.1 + diff --git a/pmqtest-Increase-buffer-to-avoid-overflow.patch b/pmqtest-Increase-buffer-to-avoid-overflow.patch new file mode 100644 index 0000000..42a0cab --- /dev/null +++ b/pmqtest-Increase-buffer-to-avoid-overflow.patch @@ -0,0 +1,50 @@ +From f7c39616fe887f35abaa4b81466ab7f167e0a410 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Mon, 19 Aug 2019 08:43:01 +0200 +Subject: [PATCH 01/10] pmqtest: Increase buffer to avoid overflow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Increase the size of the char buffer. gcc 9.1.1 reports: + +src/pmqtest/pmqtest.c: In function ‘main’: +src/pmqtest/pmqtest.c:46:21: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 8 [-Wformat-overflow=] + 46 | #define SYNCMQ_NAME "/syncmsg%d" + | ^~~~~~~~~~~~ + +src/pmqtest/pmqtest.c:445:3: note: ‘sprintf’ output between 10 and 19 bytes into a destination of size 16 + 445 | sprintf(mqname, SYNCMQ_NAME, i); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Daniel Wagner +Signed-off-by: John Kacur +--- + src/pmqtest/pmqtest.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c +index a04fc49872bf..3ce799bd6319 100644 +--- a/src/pmqtest/pmqtest.c ++++ b/src/pmqtest/pmqtest.c +@@ -440,7 +440,7 @@ int main(int argc, char *argv[]) + goto nomem; + + for (i = 0; i < num_threads; i++) { +- char mqname[16]; ++ char mqname[19]; + + sprintf(mqname, SYNCMQ_NAME, i); + receiver[i].syncmq = mq_open(mqname, oflag, 0777, &mqstat); +@@ -567,7 +567,7 @@ int main(int argc, char *argv[]) + } + nanosleep(&maindelay, NULL); + for (i = 0; i < num_threads; i++) { +- char mqname[16]; ++ char mqname[19]; + + mq_close(receiver[i].syncmq); + sprintf(mqname, SYNCMQ_NAME, i); +-- +2.20.1 + diff --git a/rt-tests-1.5.tar.xz b/rt-tests-1.5.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..cb99cca8d1f0722ed1b6ff9cfff6c48cbbbdeee1 GIT binary patch literal 105072 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�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

F&tbikY$udNyQn&md!#L1+_Cn!wuI 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 UBoQgEMzO?a`vL#}000D8TA{u7=>Px# literal 0 HcmV?d00001 diff --git a/rt-tests-Makefile-do-not-use-python3-for-rhel7.8.patch b/rt-tests-Makefile-do-not-use-python3-for-rhel7.8.patch new file mode 100644 index 0000000..ac31605 --- /dev/null +++ b/rt-tests-Makefile-do-not-use-python3-for-rhel7.8.patch @@ -0,0 +1,28 @@ +From 73536483085d27d872b35a3aa459f681b8779020 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 19 Aug 2019 23:12:42 +0200 +Subject: [PATCH] rt-tests: Makefile, do not use python3 for rhel7.8 + +Don't use python3 for installing python files in rhel7.8 + +Signed-off-by: John Kacur +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 51b8dea001e3..536772033776 100644 +--- a/Makefile ++++ b/Makefile +@@ -33,7 +33,7 @@ CFLAGS ?= -Wall -Wno-nonnull + CPPFLAGS += -D_GNU_SOURCE -Isrc/include + LDFLAGS ?= + +-PYLIB ?= $(shell python3 -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_lib())') ++PYLIB ?= $(shell python -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_lib())') + + ifndef DEBUG + CFLAGS += -O2 -g +-- +2.20.1 + diff --git a/rt-tests-Set-affinity-before-applying-numa.patch b/rt-tests-Set-affinity-before-applying-numa.patch new file mode 100644 index 0000000..ac5e841 --- /dev/null +++ b/rt-tests-Set-affinity-before-applying-numa.patch @@ -0,0 +1,110 @@ +From e5f59a301e6585145c5b738a4e9327e943e16404 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Fri, 6 Sep 2019 20:59:42 +0200 +Subject: [PATCH] rt-tests: Set affinity before applying numa + +There are three changes here. + +1. If affinity is not specified, but numa is available, then numa +implies AFFINITY_USEALL. + +2. Move setting affinity before applying numa +We need to set the affinity before applying numa, so that we don't +apply numa settings to cpus we don't intend to run on. + +3. Allow a greater number of threads than cpus to run in a round robin +fashion in the case of numa. + +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.c | 34 +++++++++++++++++++++------------- + 1 file changed, 21 insertions(+), 13 deletions(-) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index d101e3d14854..52f93da7d074 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -1349,8 +1349,12 @@ static void process_options (int argc, char *argv[], int max_cpus) + /* if smp wasn't requested, test for numa automatically */ + if (!smp) { + #ifdef NUMA +- if (numa_available() != -1) ++ if (numa_available() != -1) { + numa = 1; ++ if (setaffinity == AFFINITY_UNSPECIFIED) { ++ setaffinity = AFFINITY_USEALL; ++ } ++ } + #else + warn("cyclictest was not built with the numa option\n"); + numa = 0; +@@ -1716,6 +1720,7 @@ int main(int argc, char **argv) + sigset_t sigset; + int signum = SIGALRM; + int mode; ++ int cpu; + int max_cpus = sysconf(_SC_NPROCESSORS_ONLN); + int i, ret = -1; + int status; +@@ -1877,6 +1882,16 @@ int main(int argc, char **argv) + if (status != 0) + fatal("error from pthread_attr_init for thread %d: %s\n", i, strerror(status)); + ++ switch (setaffinity) { ++ case AFFINITY_UNSPECIFIED: cpu = -1; break; ++ case AFFINITY_SPECIFIED: ++ cpu = cpu_for_thread(i, max_cpus); ++ if (verbose) ++ printf("Thread %d using cpu %d.\n", i, cpu); ++ break; ++ case AFFINITY_USEALL: cpu = i % max_cpus; break; ++ } ++ + node = -1; + if (numa) { + void *stack; +@@ -1884,7 +1899,7 @@ int main(int argc, char **argv) + size_t stksize; + + /* find the memory node associated with the cpu i */ +- node = rt_numa_numa_node_of_cpu(i); ++ node = rt_numa_numa_node_of_cpu(cpu); + + /* get the stack size set for for this thread */ + if (pthread_attr_getstack(&attr, &currstk, &stksize)) +@@ -1895,7 +1910,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, i); ++ stack = rt_numa_numa_alloc_onnode(stksize, node, cpu); + + /* touch the stack pages to pre-fault them in */ + memset(stack, 0, stksize); +@@ -1965,20 +1980,13 @@ int main(int argc, char **argv) + interval += distance; + if (verbose) + printf("Thread %d Interval: %d\n", i, interval); ++ + par->max_cycles = max_cycles; + par->stats = stat; + par->node = node; + par->tnum = i; +- switch (setaffinity) { +- case AFFINITY_UNSPECIFIED: par->cpu = -1; break; +- case AFFINITY_SPECIFIED: +- par->cpu = cpu_for_thread(i, max_cpus); +- if (verbose) +- printf("Thread %d using cpu %d.\n", i, +- par->cpu); +- break; +- case AFFINITY_USEALL: par->cpu = i % max_cpus; break; +- } ++ par->cpu = cpu; ++ + stat->min = 1000000; + stat->max = 0; + stat->avg = 0.0; +-- +2.20.1 + diff --git a/rt-tests-cyclictest-Assume-libnuma-version-2-by-default.patch b/rt-tests-cyclictest-Assume-libnuma-version-2-by-default.patch new file mode 100644 index 0000000..d953efd --- /dev/null +++ b/rt-tests-cyclictest-Assume-libnuma-version-2-by-default.patch @@ -0,0 +1,32 @@ +From b0bd20facc01bd2a3d2bb7a1cbf26d9452c68c41 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Thu, 19 Sep 2019 20:19:17 +0200 +Subject: [PATCH] rt-tests: cyclictest: Assume libnuma version 2 by default + +Most distributions have used libnuma version 2 for awhile now, so make +it the default. + +This doesn't prevent people from defining it as version 1, or compiling +without numa. + +Signed-off-by: John Kacur +--- + src/cyclictest/rt_numa.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h +index e0f4b2e9d8b2..7adeb3c01324 100644 +--- a/src/cyclictest/rt_numa.h ++++ b/src/cyclictest/rt_numa.h +@@ -29,7 +29,7 @@ static int numa = 0; + #include + + #ifndef LIBNUMA_API_VERSION +-#define LIBNUMA_API_VERSION 1 ++#define LIBNUMA_API_VERSION 2 + #endif + + static void * +-- +2.20.1 + diff --git a/rt-tests-cyclictest-Don-t-allow-OPT_SYSTEM-with-OPT_.patch b/rt-tests-cyclictest-Don-t-allow-OPT_SYSTEM-with-OPT_.patch new file mode 100644 index 0000000..801ed1b --- /dev/null +++ b/rt-tests-cyclictest-Don-t-allow-OPT_SYSTEM-with-OPT_.patch @@ -0,0 +1,42 @@ +From 0bf35a2fb58177318353c3a2e02df5b20728d5b9 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 16 Sep 2019 23:43:32 +0200 +Subject: [PATCH 4/5] rt-tests: cyclictest: Don't allow OPT_SYSTEM with + OPT_POSIX_TIMERS + +OPT_SYSTEM means use sys_nanosleep and sys_setitimer +if you try to combine it with OPT_POSIX_TIMERS, it breaks. + +cyclictest becomes unkillable with ctrl-C and only the first thread is +updated. + +Fix this by issuing a warning if the user tries to combine the two +options and then use clock_nanosleep. + +Reported-by: Tom Rix +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index 3a78912b34f8..6be0525822ca 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -1353,6 +1353,13 @@ static void process_options (int argc, char *argv[], int max_cpus) + } + } + ++ if ((use_system == MODE_SYS_OFFSET) && (use_nanosleep == MODE_CYCLIC)) { ++ warn("The system option requires clock_nanosleep\n"); ++ warn("and is not compatible with posix_timers\n"); ++ warn("Using clock_nanosleep\n"); ++ use_nanosleep = MODE_CLOCK_NANOSLEEP; ++ } ++ + /* if smp wasn't requested, test for numa automatically */ + if (!smp) { + #ifdef NUMA +-- +2.20.1 + diff --git a/rt-tests-cyclictest-Fix-warning-cpu-may-be-used-unin.patch b/rt-tests-cyclictest-Fix-warning-cpu-may-be-used-unin.patch new file mode 100644 index 0000000..3822acd --- /dev/null +++ b/rt-tests-cyclictest-Fix-warning-cpu-may-be-used-unin.patch @@ -0,0 +1,33 @@ +From f70d5f0de62114cfcd8d8b5032138111730665e6 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 16 Sep 2019 21:06:28 +0200 +Subject: [PATCH 08/10] =?UTF-8?q?rt-tests:=20cyclictest:=20Fix=20=20warnin?= + =?UTF-8?q?g:=20=E2=80=98cpu=E2=80=99=20may=20be=20used=20uninitialized?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix warning 'cpu' maybe uninitialized by giving it a default value in +the switch statement. Note, this is a false positive, but documenting +the default value in the switch statement isn't a bad thing. + +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index 72fb35da3238..3a78912b34f8 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -1897,6 +1897,7 @@ int main(int argc, char **argv) + printf("Thread %d using cpu %d.\n", i, cpu); + break; + case AFFINITY_USEALL: cpu = i % max_cpus; break; ++ default: cpu = -1; + } + + node = -1; +-- +2.20.1 + diff --git a/rt-tests-cyclictest-Make-tracemark-work-correctly-ag.patch b/rt-tests-cyclictest-Make-tracemark-work-correctly-ag.patch new file mode 100644 index 0000000..5903027 --- /dev/null +++ b/rt-tests-cyclictest-Make-tracemark-work-correctly-ag.patch @@ -0,0 +1,68 @@ +From 33f07f6ee2053dc16dd667c763326515e87f19e3 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 16 Sep 2019 20:37:22 +0200 +Subject: [PATCH 2/5] rt-tests: cyclictest: Make tracemark work correctly again + +commit f5ccfbe4d6641e48f56152be135d901dd31cba7e +was a little too aggressive removing ftrace code. + +We were able to remove ftrace code because this functionality is +available using trace-cmd, in conjunction with the tracemark option in +cyclictest. Put back the parts of tracemark needed to make this work +correctly. + +After this patch you can get tracing info like this as an example. + +trace-cmd record -p function ./cyclictest -t -b100 --tracemark + +Signed-off-by: John Kacur + +Corrected a typo +Reported-by: Kurt Kanzenbach +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index 52f93da7d074..72fb35da3238 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -184,6 +184,7 @@ static void trigger_update(struct thread_param *par, int diff, int64_t ts); + + static int shutdown; + static int tracelimit = 0; ++static int trace_marker = 0; + static int verbose = 0; + static int oscope_reduction = 1; + static int lockall = 0; +@@ -400,6 +401,9 @@ static void debugfs_prepare(void) + + static void enable_trace_mark(void) + { ++ if (!trace_marker) ++ return; ++ + debugfs_prepare(); + open_tracemark_fd(); + } +@@ -1167,6 +1171,7 @@ static void process_options (int argc, char *argv[], int max_cpus) + {"spike", required_argument, NULL, OPT_TRIGGER }, + {"spike-nodes", required_argument, NULL, OPT_TRIGGER_NODES }, + {"threads", optional_argument, NULL, OPT_THREADS }, ++ {"tracemark", no_argument, NULL, OPT_TRACEMARK }, + {"unbuffered", no_argument, NULL, OPT_UNBUFFERED }, + {"verbose", no_argument, NULL, OPT_VERBOSE }, + {"dbg_cyclictest", no_argument, NULL, OPT_DBGCYCLIC }, +@@ -1343,6 +1348,8 @@ static void process_options (int argc, char *argv[], int max_cpus) + fatal("--smi is not available on your arch\n"); + #endif + break; ++ case OPT_TRACEMARK: ++ trace_marker = 1; break; + } + } + +-- +2.20.1 + diff --git a/rt-tests-cyclictest.8-Remove-invalid-tracing-options.patch b/rt-tests-cyclictest.8-Remove-invalid-tracing-options.patch new file mode 100644 index 0000000..c2b0039 --- /dev/null +++ b/rt-tests-cyclictest.8-Remove-invalid-tracing-options.patch @@ -0,0 +1,116 @@ +From 4ecad84cb85bd0335b5d32f84de42cbb5783196e Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Sat, 14 Sep 2019 04:57:35 +0200 +Subject: [PATCH] rt-tests: cyclictest.8: Remove invalid tracing options from + the manpage + +Most tracing options have been removed from cyclictest since the +user can now use trace-cmd together with cyclictest to get the same +functionality. Update the manpage to reflect this. + +Signed-off-by: John Kacur +--- + src/cyclictest/cyclictest.8 | 35 ----------------------------------- + 1 file changed, 35 deletions(-) + +diff --git a/src/cyclictest/cyclictest.8 b/src/cyclictest/cyclictest.8 +index a05d1f4c9d4a..b64a16ae8bbb 100644 +--- a/src/cyclictest/cyclictest.8 ++++ b/src/cyclictest/cyclictest.8 +@@ -52,9 +52,6 @@ Align thread wakeups to a specific offset in microseconds + .B \-b, \-\-breaktrace=USEC + Send break trace command when latency > USEC + .TP +-.B \-B, \-\-preemptirqs +-Both preempt and irqsoff tracing (used with -b) +-.TP + .B \-c, \-\-clock=CLOCK + select clock + .br +@@ -62,9 +59,6 @@ select clock + .br + 1 = CLOCK_REALTIME + .TP +-.B \-C, \-\-context +-context switch tracing (used with \-b) +-.TP + .B \-d, \-\-distance=DIST + Distance of thread intervals in us, default = 500 + .TP +@@ -73,12 +67,6 @@ Specify a length for the test run. + .br + Append 'm', 'h', or 'd' to specify minutes, hours or days. + .TP +-.B \-E, \-\-event +-event tracing (used with \-b) +-.TP +-.B \-f, \-\-ftrace +-Enable function tracing using ftrace as tracer. This option is available only with \-b. +-.TP + .B \-F, \-\-fifo= + Create a named pipe at path and write stats to it + .TP +@@ -94,9 +82,6 @@ Dump the latency histogram to instead of stdout. + .B \-i, \-\-interval=INTV + Set the base interval of the thread(s) in microseconds (default is 1000us). This sets the interval of the first thread. See also \-d. + .TP +-.B \-I, \-\-irqsoff +-Irgsoff tracing (used with \-b) +-.TP + .B \-l, \-\-loops=LOOPS + Set the number of loops. The default is 0 (endless). This option is useful for automated tests with a given number of test cycles. Cyclictest is stopped once the number of timer intervals has been reached. + .TP +@@ -113,26 +98,16 @@ running cyclictest on low-bandwidth connections) + .B \-n, \-\-nanosleep + Use clock_nanosleep instead of posix interval timers. Setting this option runs the tests with clock_nanosleep instead of posix interval timers. + .TP +-.B \-\-notrace +-suppress tracing +-.TP + .B \-N, \-\-nsecs + Show results in nanoseconds instead of microseconds, which is the default unit. + .TP + .B \-o, \-\-oscope=RED + Oscilloscope mode, reduce verbose output by RED. + .TP +-.B \-O, \-\-traceopt=TRACING_OPTION +-Used to pass tracing options to ftrace tracers. May be invoked multiple +-times for multiple trace options. For example trace options look at /sys/kernel/debug/tracing/trace_options +-.TP + .B \-p, \-\-prio=PRIO + Set the priority of the first thread. The given priority is set to the first test thread. Each further thread gets a lower priority: + Priority(Thread N) = max(Priority(Thread N\-1) \- 1, 0) + .TP +-.B \-P, \-\-preemptoff +-Preempt off tracing (used with -b) +-.TP + .B \-\-policy=NAME + set the scheduler policy of the measurement threads + where NAME is one of: other, normal, batch, idle, fifo, rr +@@ -178,10 +153,6 @@ the number of available CPUs. See \-d, \-i and \-p for further information. + .B \-\-tracemark + write a trace mark when \-b latency is exceeded. + .TP +-.B \-T, \-\-tracer=TRACEFUNC +-set the ftrace tracer function. Used with the \-b option. Must be one +-of the trace functions available from /kernel/debug/tracing/available_tracers +-.TP + .B \-u, \-\-unbuffered + force unbuffered output for live processing + .TP +@@ -192,12 +163,6 @@ n:c:v + + where n=task number c=count v=latency value in us. + .TP +-.B \\-w, \-\-wakeup +-task wakeup tracing (used with \-b) +-.TP +-.B \\-W, \-\-wakeuprt +-rt-task wakeup tracing (used with \-b) +-.TP + .B \-\-dbg_cyclictest + Print info userful for debugging cyclictest + +-- +2.20.1 + diff --git a/rt-tests-hwlatdetect-use-python-instead-of-python3-f.patch b/rt-tests-hwlatdetect-use-python-instead-of-python3-f.patch new file mode 100644 index 0000000..6ebaa6d --- /dev/null +++ b/rt-tests-hwlatdetect-use-python-instead-of-python3-f.patch @@ -0,0 +1,26 @@ +From 62782334ffcbf878c3bb6bb55446200f273bab08 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Mon, 19 Aug 2019 23:20:07 +0200 +Subject: [PATCH] rt-tests: hwlatdetect: use python instead of python3 for + rhel7.x + +Use python3 for rhel7.x + +Signed-off-by: John Kacur +--- + src/hwlatdetect/hwlatdetect.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py +index c11a6f8ea5b1..70c2e3827fee 100755 +--- a/src/hwlatdetect/hwlatdetect.py ++++ b/src/hwlatdetect/hwlatdetect.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python3 ++#!/usr/bin/python + + # (C) 2018,2019 Clark Williams + # (C) 2015,2016 Clark Williams +-- +2.20.1 + diff --git a/rt-tests.spec b/rt-tests.spec new file mode 100644 index 0000000..f3f14d3 --- /dev/null +++ b/rt-tests.spec @@ -0,0 +1,107 @@ +%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + +Summary: Programs that test various rt-features +Name: rt-tests +# These will be setup by the "make rpm" logic +# Version: 1.0 +# BuildRequires: numactl-devel +# Numa argument to make: NUMA=1 +# +Version: 1.5 +Release: 9%{?dist} +License: GPLv2 +Group: Development/Tools +URL: git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git +Source0: https://www.kernel.org/pub/linux/utils/rt-tests/%{name}-%{version}.tar.xz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +Obsoletes: cyclictest signaltest pi_tests +ExclusiveArch: x86_64 +BuildRequires: numactl-devel python +Requires: bash python bc + +# Patches +Patch1: rt-tests-Makefile-do-not-use-python3-for-rhel7.8.patch +Patch2: rt-tests-hwlatdetect-use-python-instead-of-python3-f.patch +Patch3: rt-tests-Set-affinity-before-applying-numa.patch +Patch4: rt-tests-cyclictest.8-Remove-invalid-tracing-options.patch +Patch5: rt-tests-cyclictest-Make-tracemark-work-correctly-ag.patch +Patch6: rt-tests-cyclictest-Don-t-allow-OPT_SYSTEM-with-OPT_.patch +Patch7: pmqtest-Increase-buffer-to-avoid-overflow.patch +Patch8: sigwaittest-Increase-buffer-to-avoid-overflow.patch +Patch9: svsematest-Increase-buffer-to-avoid-overflow.patch +Patch10: deadline_test-Increase-buffer-to-avoid-overflow.patch +Patch11: rt-tests-cyclictest-Fix-warning-cpu-may-be-used-unin.patch +Patch12: rt-tests-cyclictest-Assume-libnuma-version-2-by-default.patch + +%description +rt-tests is a set of programs that test and measure various components of +real-time kernel behavior. This package measures timer, signal, and hardware +latency. It also tests the functioning of priority-inheritance mutexes. + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 + +%build +make NUMA=1 HAVE_PARSE_CPUSTRING_ALL=1 + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{python_sitelib} +make DESTDIR=$RPM_BUILD_ROOT prefix=/usr install + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%{python_sitelib}/hwlatdetect.py* +%caps(cap_sys_rawio+ep) /usr/bin/cyclictest +/usr/bin/pi_stress +/usr/bin/signaltest +/usr/bin/hwlatdetect +/usr/bin/rt-migrate-test +/usr/bin/pip_stress +/usr/bin/ptsematest +/usr/bin/sigwaittest +/usr/bin/svsematest +/usr/bin/pmqtest +/usr/bin/hackbench +/usr/bin/cyclicdeadline +/usr/bin/deadline_test +/usr/bin/determine_maximum_mpps.sh +/usr/bin/get_cpuinfo_mhz.sh +/usr/bin/queuelat +/usr/bin/ssdd + +%doc +/usr/share/man/man8/cyclictest.8.gz +/usr/share/man/man8/hackbench.8.gz +/usr/share/man/man8/hwlatdetect.8.gz +/usr/share/man/man8/pi_stress.8.gz +/usr/share/man/man8/pmqtest.8.gz +/usr/share/man/man8/ptsematest.8.gz +/usr/share/man/man8/rt-migrate-test.8.gz +/usr/share/man/man8/signaltest.8.gz +/usr/share/man/man8/sigwaittest.8.gz +/usr/share/man/man8/svsematest.8.gz +/usr/share/man/man8/deadline_test.8.gz +/usr/share/man/man8/pip_stress.8.gz +/usr/share/man/man8/queuelat.8.gz +/usr/share/man/man8/ssdd.8.gz + +%changelog +* Thur Feb 23 2023 liyulei - 1.5-9 +- Package init diff --git a/rt-tests.yaml b/rt-tests.yaml new file mode 100644 index 0000000..ccf9cbd --- /dev/null +++ b/rt-tests.yaml @@ -0,0 +1,7 @@ +name: rt-tests +description: This repository contains some programs that test various rt-linux features. +upstream: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git +branches: +- name: master + type: protected +type: public diff --git a/sigwaittest-Increase-buffer-to-avoid-overflow.patch b/sigwaittest-Increase-buffer-to-avoid-overflow.patch new file mode 100644 index 0000000..a91e436 --- /dev/null +++ b/sigwaittest-Increase-buffer-to-avoid-overflow.patch @@ -0,0 +1,39 @@ +From 2d101866365ac75e29cfc9800ca569802fee64c7 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Mon, 19 Aug 2019 08:43:02 +0200 +Subject: [PATCH 02/10] sigwaittest: Increase buffer to avoid overflow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Increase the size of the char buffer. gcc 9.1.1 reports: + +src/sigwaittest/sigwaittest.c:494:5: note: ‘sprintf’ output between 5 and 14 bytes into a destination of size 8 + 494 | sprintf(f_opt, "-fr%d", i); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~ +src/sigwaittest/sigwaittest.c:522:24: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 5 [-Wformat-overflow=] + 522 | sprintf(f_opt, "-fs%d", i); + | ^~ + +Signed-off-by: Daniel Wagner +Signed-off-by: John Kacur +--- + src/sigwaittest/sigwaittest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/sigwaittest/sigwaittest.c b/src/sigwaittest/sigwaittest.c +index 59f28a5babcb..2d0c04132fa7 100644 +--- a/src/sigwaittest/sigwaittest.c ++++ b/src/sigwaittest/sigwaittest.c +@@ -352,7 +352,7 @@ int main(int argc, char *argv[]) + struct params *sender = NULL; + sigset_t sigset; + void *param = NULL; +- char f_opt[8]; ++ char f_opt[14]; + struct timespec launchdelay, maindelay; + + process_options(argc, argv); +-- +2.20.1 + diff --git a/svsematest-Increase-buffer-to-avoid-overflow.patch b/svsematest-Increase-buffer-to-avoid-overflow.patch new file mode 100644 index 0000000..93dee7d --- /dev/null +++ b/svsematest-Increase-buffer-to-avoid-overflow.patch @@ -0,0 +1,39 @@ +From 06519443224b7da5b336040f07bff8f929148426 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Mon, 19 Aug 2019 08:43:03 +0200 +Subject: [PATCH 03/10] svsematest: Increase buffer to avoid overflow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Increase the size of the char buffer. gcc 9.1.1 reports: + +rc/svsematest/svsematest.c:578:24: warning: ‘%d’ directive writing between 1 and 10 bytes into a region of size 5 [-Wformat-overflow=] + 578 | sprintf(f_opt, "-fr%d", i); + | ^~ +src/svsematest/svsematest.c:606:5: note: ‘sprintf’ output between 5 and 14 bytes into a destination of size 8 + 606 | sprintf(f_opt, "-fs%d", i); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Daniel Wagner +Signed-off-by: John Kacur +--- + src/svsematest/svsematest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/svsematest/svsematest.c b/src/svsematest/svsematest.c +index 8f880786ec0f..15e36af76288 100644 +--- a/src/svsematest/svsematest.c ++++ b/src/svsematest/svsematest.c +@@ -401,7 +401,7 @@ int main(int argc, char *argv[]) + struct params *sender = NULL; + sigset_t sigset; + void *param = NULL; +- char f_opt[8]; ++ char f_opt[14]; + struct timespec launchdelay, maindelay; + + myfile = getenv("_"); +-- +2.20.1 + -- Gitee