[rtems-central commit] spec: Add partition manager performance items

Sebastian Huber sebh at rtems.org
Fri Nov 13 10:09:47 UTC 2020


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Nov 11 15:57:38 2020 +0100

spec: Add partition manager performance items

---

 spec/rtems/part/req/perf-get-buffer.yml    | 64 +++++++++++++++++++
 spec/rtems/part/req/perf-get-no-buffer.yml | 52 ++++++++++++++++
 spec/rtems/part/req/perf-return-buffer.yml | 45 ++++++++++++++
 spec/rtems/part/val/performance.yml        | 99 ++++++++++++++++++++++++++++++
 4 files changed, 260 insertions(+)

diff --git a/spec/rtems/part/req/perf-get-buffer.yml b/spec/rtems/part/req/perf-get-buffer.yml
new file mode 100644
index 0000000..09f84fe
--- /dev/null
+++ b/spec/rtems/part/req/perf-get-buffer.yml
@@ -0,0 +1,64 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+  uid: ../val/performance
+limits:
+  sparc/leon3:
+    DirtyCache:
+      max-upper-bound: 0.000005
+      mean-upper-bound: 0.000005
+    FullCache:
+      max-upper-bound: 0.000005
+      mean-upper-bound: 0.000005
+    HotCache:
+      max-upper-bound: 0.000005
+      mean-upper-bound: 0.000005
+    Load/1:
+      max-upper-bound: 0.00001
+      mean-upper-bound: 0.00001
+    Load/2:
+      max-upper-bound: 0.00001
+      mean-upper-bound: 0.00001
+    Load/3:
+      max-upper-bound: 0.00001
+      mean-upper-bound: 0.00001
+    Load/4:
+      max-upper-bound: 0.00001
+      mean-upper-bound: 0.00001
+params: {}
+rationale: null
+references: []
+test-body:
+  brief: |
+    Get a buffer.
+  code: |
+    ctx->status = rtems_partition_get_buffer( ctx->part_many, &ctx->buffer );
+  description: null
+test-cleanup: null
+test-prepare: null
+test-setup: null
+test-teardown:
+  brief: |
+    Return the buffer.
+  code: |
+    rtems_status_code sc;
+
+    T_quiet_rsc_success( ctx->status );
+
+    sc = rtems_partition_return_buffer( ctx->part_many, ctx->buffer );
+    T_quiet_rsc_success( sc );
+
+    return tic == toc;
+  description: null
+text: |
+  When a partition has exactly ${../val/performance:/params/buffer-count} free
+  buffers, the ${.:limit-kind} runtime of exactly
+  ${../val/performance:/params/sample-count} successful calls to
+  ${../if/get-buffer:/name} in the ${.:/environment} shall be
+  ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/req/perf-get-no-buffer.yml b/spec/rtems/part/req/perf-get-no-buffer.yml
new file mode 100644
index 0000000..0115fbe
--- /dev/null
+++ b/spec/rtems/part/req/perf-get-no-buffer.yml
@@ -0,0 +1,52 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+  uid: ../val/performance
+limits: {}
+params: {}
+rationale: null
+references: []
+test-body:
+  brief: |
+    Try to get a buffer.
+  code: |
+    ctx->status = rtems_partition_get_buffer( ctx->part_one, &ctx->buffer );
+  description: null
+test-cleanup:
+  brief: |
+    Return the buffer.
+  code: |
+    rtems_status_code sc;
+
+    sc = rtems_partition_return_buffer( ctx->part_one, ctx->buffer_2 );
+    T_rsc_success( sc );
+  description: null
+test-prepare:
+  brief: |
+    Get the buffer.
+  code: |
+    rtems_status_code sc;
+
+    sc = rtems_partition_get_buffer( ctx->part_one, &ctx->buffer_2 );
+    T_rsc_success( sc );
+  description: null
+test-setup: null
+test-teardown:
+  brief: |
+    Check the status code.
+  code: |
+    T_quiet_rsc( ctx->status, RTEMS_UNSATISFIED );
+
+    return tic == toc;
+  description: null
+text: |
+  When a partition has no free buffers, the ${.:limit-kind} runtime of exactly
+  ${../val/performance:/params/sample-count} unsatisfied calls to
+  ${../if/get-buffer:/name} in the ${.:/environment} shall be
+  ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/req/perf-return-buffer.yml b/spec/rtems/part/req/perf-return-buffer.yml
new file mode 100644
index 0000000..0199c36
--- /dev/null
+++ b/spec/rtems/part/req/perf-return-buffer.yml
@@ -0,0 +1,45 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+  uid: ../val/performance
+limits: {}
+params: {}
+rationale: null
+references: []
+test-body:
+  brief: |
+    Return the buffer.
+  code: |
+    ctx->status = rtems_partition_return_buffer( ctx->part_many, ctx->buffer );
+  description: null
+test-cleanup: null
+test-prepare: null
+test-setup:
+  brief: |
+    Get the buffer.
+  code: |
+    rtems_status_code sc;
+
+    sc = rtems_partition_get_buffer( ctx->part_many, &ctx->buffer );
+    T_quiet_rsc_success( sc );
+  description: null
+test-teardown:
+  brief: |
+    Check the status code.
+  code: |
+    T_quiet_rsc( ctx->status, RTEMS_SUCCESSFUL );
+
+    return tic == toc;
+  description: null
+text: |
+  When a partition has exactly ${../val/performance:/params/buffer-count} minus
+  one free buffers, the ${.:limit-kind} runtime of exactly
+  ${../val/performance:/params/sample-count} successful calls to
+  ${../if/return-buffer:/name} in the ${.:/environment} shall be
+  ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/val/performance.yml b/spec/rtems/part/val/performance.yml
new file mode 100644
index 0000000..110c724
--- /dev/null
+++ b/spec/rtems/part/val/performance.yml
@@ -0,0 +1,99 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links: []
+params:
+  sample-count: 1000
+  buffer-count: 100
+test-brief: |
+  This test case provides a context to run Partition Manager performance tests.
+test-cleanup: null
+test-context:
+- brief: |
+    This member provides a partition with exactly one free buffer.
+  description: null
+  member: |
+    rtems_id part_one
+- brief: |
+    This member provides a partition with exactly ${.:/params/buffer-count}
+    free buffers.
+  description: null
+  member: |
+    rtems_id part_many
+- brief: |
+    This member provides a status code.
+  description: null
+  member: |
+    rtems_status_code status
+- brief: |
+    This member provides a buffer pointer.
+  description: null
+  member: |
+    void *buffer
+- brief: |
+    This member provides a second buffer pointer.
+  description: null
+  member: |
+    void *buffer_2
+test-context-support: null
+test-description: null
+test-includes:
+- rtems.h
+- rtems/chain.h
+test-local-includes: []
+test-prepare: null
+test-setup:
+  brief: |
+    Creates the test partition.
+  code: |
+    rtems_status_code sc;
+    size_t            size;
+    void             *area;
+    uintptr_t         length;
+
+    size = sizeof( rtems_chain_node );
+
+    area = T_malloc( size );
+    sc = rtems_partition_create(
+      rtems_build_name( ' ', 'O', 'N', 'E' ),
+      area,
+      size,
+      size,
+      RTEMS_DEFAULT_ATTRIBUTES,
+      &ctx->part_one
+    );
+    T_assert_rsc_success( sc );
+
+    length = ${.:/params/buffer-count} * size;
+    area = T_malloc( length );
+    sc = rtems_partition_create(
+      rtems_build_name( 'M', 'A', 'N', 'Y' ),
+      area,
+      length,
+      size,
+      RTEMS_DEFAULT_ATTRIBUTES,
+      &ctx->part_many
+    );
+    T_assert_rsc_success( sc );
+  description: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tc-part-performance.c
+test-teardown:
+  brief: |
+    Deletes the test partition.
+  code: |
+    rtems_status_code sc;
+
+    if ( ctx->part_one != 0 ) {
+      sc = rtems_partition_delete( ctx->part_one );
+      T_rsc_success( sc );
+    }
+
+    if ( ctx->part_many != 0 ) {
+      sc = rtems_partition_delete( ctx->part_many );
+      T_rsc_success( sc );
+    }
+  description: null
+type: runtime-measurement-test



More information about the vc mailing list