.. # Copyright (c) 2025, Arm Limited. # # SPDX-License-Identifier: MIT ################## Resultstore Schema ################## ******************** Entity Relationships ******************** .. image:: ../images/resultstoreschema.png *************** BENCHMARK Table *************** One entity per Benchmark configuration. Describes a benchmark including its parameters. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer suite text Benchmark suite as it appears in the plan name text Benchmark name as it appears in the plan type text Benchmark type as it appears in the plan image text Benchmark container image identifier as it appears in the plan params_hash char(64) SHA256 hash of the params dictionary as they appear in the plan ======================== ============== =========== ********* CPU Table ********* One entity per CPU contained within a SUT. Describes the set of CPUs that a SUT contains. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer desc text arch-specific descriptor, encoded in JSON cpu_index smallint Logical CPU index sut_id bigint (FK) SUT ID relates CPUs to SUT ======================== ============== =========== *********** ERROR Table *********** One entity per error that occured during running the benchmark. A single benchmark invocation generates 0 or 1 error entities. If an error is generated, no results are generated for the benchmark. Examples of possible errors include the container side rejecting benchmark parameters, or the benchmark timing out. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer timestamp timestamp Approximate time at which error was emitted. Errors are stamped when passed back to host and there is latency between generating the error on the SUT and passing it to the host sut_id bigint (FK) SUT ID relates error to SUT swprofile_id bigint (FK) swprofile ID relates error to swprofile benchmark_id bigint (FK) Benchmark ID relates error to Benchmark session_uuid uuid Universally Unique ID representing the boot session on the SUT that the result was generated during. Conceptually, a new UUID is generated each time the SUT is rebooted. Used to group results and errors from the same session error int Error code ======================== ============== =========== *********** PARAM Table *********** One entity per param specified for a benchmark. Describes the set of parameters that a benchmark is configured with. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer name text Param name as it appears in the plan value text Param value as it appears in the plan benchmark_id bigint (FK) Benchmark ID relates Param to Benchmark ======================== ============== =========== ************ RESULT Table ************ One entity per result. A single benchmark invocation returns 1 or more results. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer timestamp timestamp Approximate time at which result was collected. Results are stamped when passed back to host and there is latency between generating the result on the SUT and passing it to the host resultclass_id bigint (FK) ResultClass ID relates Result to ResultClass sut_id bigint (FK) SUT ID relates Result to SUT swprofile_id bigint (FK) swprofile ID relates Result to swprofile session_uuid uuid Universally Unique ID representing the boot session on the SUT that the result was generated during. Conceptually, a new UUID is generated each time the SUT is rebooted. Used to group results and errors from the same session value double Numerical result value ======================== ============== =========== ***************** RESULTCLASS Table ***************** One entity per ResultClass. Every Result belongs to a single ResultClass. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer benchmark_id bigint (FK) Benchmark ID relates ResultClass to Benchmark name text Result name (e.g. duration or memory) unit text Unit of the result value (e.g. seconds, ops/sec, etc) improvement enum Either 'bigger' or 'smaller': Determines whether a bigger or smaller value represents an improvement in performance ======================== ============== =========== ********* SUT Table ********* One entity per SUT. Describes a unique SUT independent of its SW profile. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer name text SUT friendly name as it appears in the plan host_name text result of `uname -n` architecture text result of `uname -m` cpu_count smallint Number of CPUs in the system cpu_info_hash char(64) SHA256 hash of all the CPU info structures numa_count smallint Number of NUMA nodes in the system ram_sz bigint Total RAM in the system in bytes hypervisor text The name of the hypervisor if running in a virtual machine. (e.g. 'kvm', 'hyper-v' etc.) else empty product_name text The DMI product_name, if available, else empty product_serial text The DMI product_serial, if available, else empty mac_addrs_hash char(64) SHA256 hash of the sorted list of permanent MAC addresses from physical devices attached to the SUT ======================== ============== =========== *************** SWPROFILE Table *************** One entity per software profile. Describes a software configuration including the kernel under test. ======================== ============== =========== key type description ======================== ============== =========== id bigserial (PK) Primary key. Auto-incrementing integer name text swprofile friendly name as it appears in the plan kernel_name text Output from `uname -r` kernel_git_sha char(40) Git SHA for kernel source (if available) kernel_kconfig_full_hash char(64) SHA256 hash of kernel config (e.g. from /boot/config-$(uname -r), or /proc/config.gz) (if available) kernel_cmdline_full_hash char(64) SHA256 hash of /proc/cmdline userspace_name text Output from `lsb_release -d` cmdline text Alphabetically sorted command line parameters, as specified in plan, as a newline separated string sysctl text Alphabetically sorted applied sysctl settings, as specified in plan, as a newline separated string bootscript text Bootscript passed as it appears in plan ======================== ============== ===========