[rtems-central commit] spec: Specify runtime measurement execution envs

Sebastian Huber sebh at rtems.org
Tue May 9 13:45:26 UTC 2023


Module:    rtems-central
Branch:    master
Commit:    4f6e4139427bf8cbcbece12caff09665e1171dbf
Changeset: http://git.rtems.org/rtems-central/commit/?id=4f6e4139427bf8cbcbece12caff09665e1171dbf

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri May  5 14:41:18 2023 +0200

spec: Specify runtime measurement execution envs

---

 spec/req/perf-runtime-environment-dirty-cache.yml  | 21 +++++++++++++++++
 spec/req/perf-runtime-environment-full-cache.yml   | 20 ++++++++++++++++
 spec/req/perf-runtime-environment-hot-cache.yml    | 20 ++++++++++++++++
 spec/req/perf-runtime-environment-load-steps.yml   | 21 +++++++++++++++++
 spec/req/perf-runtime-environment-load.yml         | 19 +++++++++++++++
 spec/req/perf-runtime-environment.yml              | 17 ++++++++++++++
 .../requirement-performance-runtime-env-name.yml   | 22 ++++++++++++++++++
 spec/spec/requirement-performance-runtime-env.yml  | 27 +++++++++++++---------
 spec/spec/requirement-performance-runtime-envs.yml |  2 +-
 spec/val/perf-environment.yml                      | 20 ++++++++++++++++
 10 files changed, 177 insertions(+), 12 deletions(-)

diff --git a/spec/req/perf-runtime-environment-dirty-cache.yml b/spec/req/perf-runtime-environment-dirty-cache.yml
new file mode 100644
index 00000000..c34c12ef
--- /dev/null
+++ b/spec/req/perf-runtime-environment-dirty-cache.yml
@@ -0,0 +1,21 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime-environment
+name: DirtyCache
+non-functional-type: performance-runtime-environment
+rationale: |
+  This runtime measurement environment is used to measure the runtime of code
+  sections while data and instructions of the code section have to be loaded
+  from main memory and the loaded data has to wait for the write out of dirty
+  data.
+references: []
+requirement-type: non-functional
+text: |
+  A ${/glossary/target:/term} state in which the caches are fully loaded with
+  dirty data and instructions unrelated to the measured code section shall be
+  a runtime measurement environment.
+type: requirement
diff --git a/spec/req/perf-runtime-environment-full-cache.yml b/spec/req/perf-runtime-environment-full-cache.yml
new file mode 100644
index 00000000..2f940078
--- /dev/null
+++ b/spec/req/perf-runtime-environment-full-cache.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime-environment
+name: FullCache
+non-functional-type: performance-runtime-environment
+rationale: |
+  This runtime measurement environment is used to measure the runtime of code
+  sections while data and instructions of the code section have to be loaded
+  from main memory without having to wait for the write out of dirty data.
+references: []
+requirement-type: non-functional
+text: |
+  A ${/glossary/target:/term} state in which the caches are fully loaded with
+  valid data and instructions unrelated to the measured code section shall be
+  a runtime measurement environment.
+type: requirement
diff --git a/spec/req/perf-runtime-environment-hot-cache.yml b/spec/req/perf-runtime-environment-hot-cache.yml
new file mode 100644
index 00000000..d8c12ec4
--- /dev/null
+++ b/spec/req/perf-runtime-environment-hot-cache.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime-environment
+name: HotCache
+non-functional-type: performance-runtime-environment
+rationale: |
+  This runtime measurement environment is used to measure the runtime of code
+  sections while data and instructions of the code section are already in the
+  cache.  This should give a good estimate of best case conditions.
+references: []
+requirement-type: non-functional
+text: |
+  A ${/glossary/target:/term} state in which the caches are fully loaded with
+  data and instructions related to the measured code section shall be a runtime
+  measurement environment.
+type: requirement
diff --git a/spec/req/perf-runtime-environment-load-steps.yml b/spec/req/perf-runtime-environment-load-steps.yml
new file mode 100644
index 00000000..868e174f
--- /dev/null
+++ b/spec/req/perf-runtime-environment-load-steps.yml
@@ -0,0 +1,21 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime-environment-load
+non-functional-type: performance
+rationale: |
+  Having a data bus load task subsequently for each processor on the target is
+  done to get close to worst case conditions in an ${/glossary/smp:/term}
+  system.  Ideally, for this runtime measurement environment data traffic from
+  other bus masters should be generated also, however, this would require
+  specific device support.
+references: []
+requirement-type: non-functional
+text: |
+  The load runtime measurement environment shall be set up with exactly one up
+  the maximum number of processors of the ${/glossary/target:/term} data bus
+  load tasks.
+type: requirement
diff --git a/spec/req/perf-runtime-environment-load.yml b/spec/req/perf-runtime-environment-load.yml
new file mode 100644
index 00000000..9a47c982
--- /dev/null
+++ b/spec/req/perf-runtime-environment-load.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime-environment
+name: Load
+non-functional-type: performance-runtime-environment
+rationale: |
+  This runtime measurement environment is intended to get close to worst case
+  execution conditions.
+references: []
+requirement-type: non-functional
+text: |
+  A ${/glossary/target:/term} state in which the caches are fully loaded with
+  dirty data and instructions unrelated to the measured code section and data
+  bus load from background tasks shall be a runtime measurement environment.
+type: requirement
diff --git a/spec/req/perf-runtime-environment.yml b/spec/req/perf-runtime-environment.yml
new file mode 100644
index 00000000..7e2e1856
--- /dev/null
+++ b/spec/req/perf-runtime-environment.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: requirement-refinement
+  uid: perf-runtime
+non-functional-type: performance
+rationale: |
+  The state of the memory system on the ${/glossary/target:/term} has usually a
+  significant influence on timings.
+references: []
+requirement-type: non-functional
+text: |
+  The runtime measurement shall be done in different runtime measurement
+  environments.
+type: requirement
diff --git a/spec/spec/requirement-performance-runtime-env-name.yml b/spec/spec/requirement-performance-runtime-env-name.yml
new file mode 100644
index 00000000..62286732
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-env-name.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: spec-member
+  uid: root
+spec-description: null
+spec-example: null
+spec-info:
+  str:
+    assert:
+    - in:
+      - FullCache
+      - HotCache
+      - DirtyCache
+    - re: ^Load/[1-9][0-9]*$
+    description: |
+      It specifies the runtime measurement environment name.
+spec-name: Runtime Measurement Environment Name
+spec-type: requirement-performance-runtime-env-name
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-env.yml b/spec/spec/requirement-performance-runtime-env.yml
index 35becdee..e83abf33 100644
--- a/spec/spec/requirement-performance-runtime-env.yml
+++ b/spec/spec/requirement-performance-runtime-env.yml
@@ -1,22 +1,27 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 copyrights:
-- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
 enabled-by: true
 links:
 - role: spec-member
   uid: root
+- role: spec-refinement
+  spec-key: non-functional-type
+  spec-value: performance-runtime-environment
+  uid: requirement-non-functional
 spec-description: null
 spec-example: null
 spec-info:
-  str:
-    assert:
-    - in:
-      - FullCache
-      - HotCache
-      - DirtyCache
-    - re: ^Load/[1-9][0-9]*$
+  dict:
+    attributes:
+      name:
+        description: |
+          It shall be the runtime measurement environment name.  See also
+          ${requirement-performance-runtime-env-name:/spec-name}.
+        spec-type: str
     description: |
-      It specifies the runtime measurement environment.
-spec-name: Runtime Measurement Environment
-spec-type: requirement-performance-runtime-env
+      This set of attributes specifies a runtime measurement environment.
+    mandatory-attributes: all
+spec-name: Runtime Measurement Environment Item Type
+spec-type: requirement-performance-runtime-environment
 type: spec
diff --git a/spec/spec/requirement-performance-runtime-envs.yml b/spec/spec/requirement-performance-runtime-envs.yml
index 9c301a5c..1aa38db8 100644
--- a/spec/spec/requirement-performance-runtime-envs.yml
+++ b/spec/spec/requirement-performance-runtime-envs.yml
@@ -15,7 +15,7 @@ spec-info:
       runtime measurement environments.
     generic-attributes:
       description: null
-      key-spec-type: requirement-performance-runtime-env
+      key-spec-type: requirement-performance-runtime-env-name
       value-spec-type: requirement-performance-runtime-values
     mandatory-attributes: all
 spec-name: Runtime Measurement Environment Table
diff --git a/spec/val/perf-environment.yml b/spec/val/perf-environment.yml
new file mode 100644
index 00000000..a6f3df68
--- /dev/null
+++ b/spec/val/perf-environment.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2023 embedded brains GmbH & Co. KG
+enabled-by: true
+links:
+- role: validation
+  uid: /req/perf-runtime-environment-dirty-cache
+- role: validation
+  uid: /req/perf-runtime-environment-full-cache
+- role: validation
+  uid: /req/perf-runtime-environment-hot-cache
+- role: validation
+  uid: /req/perf-runtime-environment-load-steps
+method: by-review-of-design
+references: []
+text: |
+  The execution environments are set up by the RTEMS Test Framework.  For each
+  runtime performance requirement test code for all execution environments is
+  generated.
+type: validation



More information about the vc mailing list