1common:
2  platform_key:
3    - arch
4  tags:
5    - kernel
6    - benchmark
7  # Native platforms excluded as they are not relevant: These benchmarks run some kernel primitives
8  # in a loop during a predefined time counting how many times they execute. But in the POSIX arch,
9  # time does not pass while the CPU executes. So the benchmark just appears as if hung.
10  arch_exclude:
11    - posix
12  # some slow qemu_* excluded
13  platform_exclude:
14    - qemu_malta/qemu_malta
15    - qemu_malta/qemu_malta/be
16  integration_platforms:
17    - qemu_x86_64
18    - qemu_cortex_a53/qemu_cortex_a53/smp
19  timeout: 300
20  filter: CONFIG_SMP and CONFIG_MP_MAX_NUM_CPUS > 1
21  harness: console
22
23tests:
24  benchmark.ipi_metric.preemptive.broadcast:
25    extra_configs:
26      - CONFIG_IPI_METRIC_PREEMPTIVE=y
27      - CONFIG_IPI_OPTIMIZE=n
28    harness_config:
29      type: multi_line
30      ordered: true
31      regex:
32        # Collect at least 3 measurements for each benchmark:
33        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
34        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
35        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
36        - "(.*)Total Work:[ ]*[0-9]+(.*)"
37        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
38        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
39        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
40        - "(.*)Total Work:[ ]*[0-9]+(.*)"
41        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
42        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
43        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
44        - "(.*)Total Work:[ ]*[0-9]+(.*)"
45
46  benchmark.ipi_metric.preemptive.optimize:
47    extra_configs:
48      - CONFIG_IPI_METRIC_PREEMPTIVE=y
49      - CONFIG_IPI_OPTIMIZE=y
50    filter: ARCH_HAS_DIRECTED_IPIS
51    harness_config:
52      type: multi_line
53      ordered: true
54      regex:
55        # Collect at least 3 measurements for each benchmark:
56        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
57        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
58        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
59        - "(.*)Total Work:[ ]*[0-9]+(.*)"
60        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
61        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
62        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
63        - "(.*)Total Work:[ ]*[0-9]+(.*)"
64        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
65        - "(.*)Preemptive Counter Total:[ ]*[0-9]+(.*)"
66        - "(.*)IPI Count:[ ]*[0-9]+(.*)"
67        - "(.*)Total Work:[ ]*[0-9]+(.*)"
68
69  benchmark.ipi_metric.primitive.broadcast:
70    extra_configs:
71      - CONFIG_IPI_METRIC_PRIMITIVE_BROADCAST=y
72    harness_config:
73      type: multi_line
74      ordered: true
75      regex:
76        # Collect at least 3 measurements for each benchmark:
77        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
78        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
79        - "(.*)Total Work:[ ]*[0-9]+(.*)"
80        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
81        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
82        - "(.*)Total Work:[ ]*[0-9]+(.*)"
83        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
84        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
85        - "(.*)Total Work:[ ]*[0-9]+(.*)"
86
87
88  benchmark.ipi_metric.primitive.directed:
89    extra_configs:
90      - CONFIG_IPI_METRIC_PRIMITIVE_DIRECTED=y
91    filter: ARCH_HAS_DIRECTED_IPIS
92    harness_config:
93      type: multi_line
94      ordered: true
95      regex:
96        # Collect at least 3 measurements for each benchmark:
97        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
98        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
99        - "(.*)Total Work:[ ]*[0-9]+(.*)"
100        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
101        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
102        - "(.*)Total Work:[ ]*[0-9]+(.*)"
103        - "(.*) IPI-Metric(.+) Elapsed Time:[ ]*[0-9]+(.*)"
104        - "(.*)Schedule IPIs Issued:[ ]*[0-9]+(.*)"
105        - "(.*)Total Work:[ ]*[0-9]+(.*)"
106