63 Commits

Author SHA1 Message Date
Michal Lenc
7ca3656c3e benchmarks/osperf/osperf.c: add pipe read-write performance test
This adds a simple pip read-write performance test.

Signed-off-by: Michal Lenc <michallenc@seznam.cz>
2025-06-14 17:20:23 +08:00
Michal Lenc
9a73fb7f4b benchmarks/osperf/osperf.c: fix spelling mistakes
Signed-off-by: Michal Lenc <michallenc@seznam.cz>
2025-06-14 17:20:23 +08:00
chao an
27846ffec7 libc/elf: rename modlib to libelf
Renaming "modlib" to "libelf" is more in line with the implementation content,
which makes it easier for individual developers to understand the capabilities of this module.

CONFIG_LIBC_MODLIB -> CONFIG_LIBC_ELF

Signed-off-by: chao an <anchao.archer@bytedance.com>
2025-04-11 09:43:07 +08:00
Tiago Medicci
cf1d5bb08b benchmarks/mtd: use PRIxxx macro to improve portability
To improve portability, use `PRIxxx` macro instead of int/long int
format specifiers.

Signed-off-by: Tiago Medicci <tiago.medicci@espressif.com>
2025-04-01 09:08:59 +02:00
Tiago Medicci
b80e444aea benchmarks/mtd: Select libc's floating point support
The application requires libc's floating point support. Although
it may be already enabled by other applications and/or hardware
support, it should be explicitly selected by the app too.

Signed-off-by: Tiago Medicci <tiago.medicci@espressif.com>
2025-04-01 09:08:59 +02:00
Tiago Medicci
494554618e benchmark/mtd: Add MTD testing/benchmark application
This test allows measuring write and read operations on an MTD
flash device, evaluating its transfer rates.

Signed-off-by: Tiago Medicci <tiago.medicci@espressif.com>
2025-03-25 09:53:38 +08:00
chenrun1
a7020e45cc benchmarks/osperf: fix warning maybe-uninitialized
Summary:
In function 'performance_gettime',
    inlined from 'hpwork_performance' at osperf.c:245:10:
osperf.c:123:3: error: 'result.end' may be used uninitialized [-Werror=maybe-uninitialized]
  123 |   up_perf_convert(result->end - result->start, &ts);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
osperf.c: In function 'hpwork_performance':
osperf.c:228:29: note: 'result.end' was declared here
  228 |   struct performance_time_s result;
      |                             ^~~~~~
CC:  audio/lib_buffer.c
CC:  common/arm64_initialize.c
CC:  builtin/lib_builtin_getname.c

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2025-03-05 20:00:52 +01:00
Stepan Pressl
91aa0b8ae8 benchmarks/cyclictest/cyclictest.c: periodic output and -q option
Without the -q (--quiet) option, the program outputs the thread
stats every 100ms, which is compatible with the original
rt-tests/cyclictest utility.

Signed-off-by: Stepan Pressl <pressl.stepan@gmail.com>
2025-03-04 06:16:57 +08:00
Stepan Pressl
31daca45ba benchmarks/cyclictest: the rt-tests cyclictest NuttX Port
Despite the existence of the patch in benchmarks/rt-tests,
this commit adds the NuttX Official cyclictest utility.

The main difference is the introduction of different
waiting methods next to POSIX clock_nanosleep:
- The thread can wait for a g_waitsem, posted by board_timerhook()
  if CONFIG_SYSTEMTICK_HOOK is defined.
  Since the semaphore is only one, only one thread can wait.
- The thread can wait for a Timer Device to timeout.
  The timer's timeout determines the waiting time of the thread.
  Since the timer is only one, again, only one thread can wait.

The user can measure the elapsed time using clock_gettime
or the timer device itself. The different waiting and measuring
methods were introduced because NuttX, by default, does not
offer fine measuring capabilities using POSIX time functions
(as of Feb 25).

Signed-off-by: Stepan Pressl <pressl.stepan@gmail.com>
2025-02-27 11:30:37 -03:00
simbit18
b84f93c4df [nxstyle] fix Relative file path
fix Relative file path does not match actual file.

EOL Conversion  -> Unix (LF)

Adding the message header to the Kconfig file

Signed-off-by: simbit18 <simbit18@gmail.com>
2025-02-25 09:31:30 +01:00
Xiang Xiao
cf46792554 apps/testing: Move sd_bench to apps/bechmarks
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2025-01-27 04:53:57 +01:00
Alin Jerpelea
69b6c936d1 benchmarks: migrate license to ASF
Xiaomi has submitted the SGA and we can migrate the licese to ASF

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2024-12-19 15:25:28 +08:00
Alin Jerpelea
41e51e68a2 benchmarks: migrate to SPDX identifier
Most tools used for compliance and SBOM generation use SPDX identifiers
This change brings us a step closer to an easy SBOM generation.

Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2024-12-19 15:25:28 +08:00
buxiasen
fa22f80ee3 ramspeed: fix dest align typo, add not-aligned print
Signed-off-by: buxiasen <buxiasen@xiaomi.com>
2024-12-12 13:48:19 +08:00
xuxin19
4d301988a9 cmake(build):add benchmarks osperf CMakeLists.txt
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-11-17 21:10:55 +08:00
Xiang Xiao
400a8e3264 benchmarks: add .gitignore files
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2024-11-04 10:56:36 +01:00
ouyangxiangzhen
4ba65ccde9 benchmarks: support tacle-bench.
This commit supports tacle-bench for real-time systems.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2024-10-30 23:16:22 +08:00
ouyangxiangzhen
0edb210561 benchmarks: support test-tlb
This commit added support for test-tlb, a memory latency micro-benchmark.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2024-10-30 23:13:01 +08:00
ouyangxiangzhen
ddabb6e0ef benchmarks: support cyclictest
This commit supports cyclictest from RT-Tests for the timer jitter profiling.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2024-10-30 23:10:48 +08:00
ouyangxiangzhen
85094f3eae benchmarks: support tinymembench
This patch adds tinymembench for memory bandwidth and latency measuring.

Signed-off-by: ouyangxiangzhen <ouyangxiangzhen@xiaomi.com>
2024-10-29 12:28:18 +08:00
haopengxiang
df559f1712 fix: git status/git status --ignore normalization check problem
Signed-off-by: dengwenqi <dengwenqi@xiaomi.com>
2024-10-27 22:30:39 +08:00
wangming9
8ed046e2d6 apps/benchmarks/dhrystone: Fix compilation errors
Error details:
dhrystone/v2.2/dry.c:714:3: error: 'Int_2_Loc' may be used uninitialized [-Werror=maybe-uninitialized]
  714 |   fprintf (stderr, "Int_2_Loc:           %d\n", Int_2_Loc);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dhrystone/v2.2/dry.c:543:25: note: 'Int_2_Loc' was declared here
  543 |   REG   One_Fifty       Int_2_Loc;
      |                         ^~~~~~~~~

Signed-off-by: wangming9 <wangming9@xiaomi.com>
Signed-off-by: lipengfei28 <lipengfei28@xiaomi.com>
2024-10-15 10:31:14 +08:00
buxiasen
2429b2ef6a ramspeed: fix -r -w parameter ignored, report align issue
We may want to test ramspeed by specific address, it was previous ignored,
and for the not aligned address from user, just report a error.

Signed-off-by: buxiasen <buxiasen@xiaomi.com>
2024-10-13 11:44:58 +08:00
yinshengkai
524eb0880f osperf: changes irq_t to irqstat_t
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-13 10:49:05 +08:00
Bowen Wang
d0a6dd40c4 coremark/Makefile: avoid crc function multiple definition
/data/project/oh2/rel-4.0/prebuilts/gcc/linux/arm/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: crc16_sw.c.data.project.oh2.rel-4.0.external.zblue.zblue_1.o (symbol from plugin): in function `crc16':
(.text+0x0): multiple definition of `crc16'; core_util.c.data.project.oh2.rel-4.0.apps.benchmarks.coremark_1.o (symbol from plugin):(.text+0x0): first defined here

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:32:58 +08:00
Bowen Wang
6ea8f70ca8 osperf/osperf: move close pipefd after pthread_join
Avoid the new thread write the closed pipe

Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
2024-10-11 19:32:27 +08:00
chenrun1
06d54466fd coremark:Fix renaming issues with other libraries
The crc16 naming implemented in coremark is duplicated in zblue.

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-09-28 09:35:33 +08:00
xuxin19
3a2b74d701 cmake:port benchmarks to CMake build for testing
Signed-off-by: xuxin19 <xuxin19@xiaomi.com>
2024-09-13 23:16:26 +08:00
Fukui Daichi
982636ac4a benchmark: Build osperf only when pipes and hpwork are enabled
Building osperf requires pipes and hpwork, which are disabled
by default. These features should be enabled before osperf is
built. The select directive could cause issues and should be
avoided, so we use the depends on directive.

Signed-off-by: Fukui Daichi <a.dog.will.talk@akane.waseda.jp>
2024-09-05 13:52:35 +08:00
chenrun1
12012f2276 cachespeed:Fixed the problem of printing variables in 32/64-bit environment
Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-18 03:14:24 +08:00
zhangchao53
f841ca16eb enable superpi cmake 2024-08-17 00:08:22 +08:00
chenrun1
875f2fcc1e ramspeed:Fix memleak due to double malloc.
if (allocate_rw_address)
    {
      info->dest = malloc(info->size);
      info->src = malloc(info->size);
    }
  if ((info->dest == NULL && !info->allocate_rw_address) || info->size == 0)
    {
      printf(RAMSPEED_PREFIX "Missing required arguments\n");
      goto out;
    }
  else
    {
      /* We need to automatically apply for memory */
      printf(RAMSPEED_PREFIX "Allocate RW buffers on heap\n");
      info->dest = malloc(info->size);
      if (info->dest == NULL)
        {
          printf(RAMSPEED_PREFIX "Dest Alloc Memory Failed!\n");
          goto out;
        }
      info->src = malloc(info->size);
      if (info->src == NULL)
        {
          printf(RAMSPEED_PREFIX "Src Alloc Memory Failed!\n");
          goto out;
        }
    }

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-08 09:51:55 +08:00
chenrun1
e04782816f ramspeed:Add log printing & improve test accuracy & optional test cases
1.Add more print logs

ramspeed -w 0x61ba15c0 -s 524288 -n 10000 -i
RAM Speed: Write address: 0x0x61ba15c0
RAM Speed: Read address: 0x0
RAM Speed: Size: 524288 bytes
RAM Speed: Value: 0x00
RAM Speed: Repeat number: 10000
RAM Speed: Interrupts disabled: true

2.Improve test accuracy, now print in double type in us time unit

______Perform 32 Bytes access______
RAM Speed: system memset():      Rate = 625000.000 KB/s [cost: 0.500 ms]
RAM Speed: internal memset():    Rate = 240384.615 KB/s [cost: 1.300 ms]

3. Optional test item, if we do not pass in the src address, only memset will be executed

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-08 09:51:55 +08:00
chenrun1
3b6f6ab4e6 ramspeed:Fix the mem leak caused by not releasing memory when the task exits under the -a option
Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-08 09:51:55 +08:00
chenrun1
c87c7c24a8 iozone:add CMakefile.txt
Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-07 15:59:52 +08:00
chenrun1
09fda56f19 fio:add fio CMakelist.txt
Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-07 15:59:52 +08:00
chenrun1
8c0100b193 dhrystone:Ignore warnings. Warnings have no impact on the program itself.
The function implementation does not specify a return type, and is treated as a void return value function during use, so it is ignored.
CC:  icmpv6_ping.c dhrystone/v2.1/dhry_2.c:30:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
   30 | Proc_6 (Enum_Val_Par, Enum_Ref_Par)
      | ^~~~~~

2. The implementation of some functions is opposite to the calling position, and the processing can be ignored
dhrystone/v2.1/dhry_2.c:39:9: warning: implicit declaration of function ‘Func_3’ [-Wimplicit-function-declaration]
   39 |   if (! Func_3 (Enum_Val_Par))

3. This function is called from dhry_2.c and void behavior is expected.
dhrystone/v2.1/dhry_2.c:30:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
   30 | Proc_6 (Enum_Val_Par, Enum_Ref_Par)

4. In the old version of C language, if the function declaration return value is not set, the default is void; in the new version, it is int, but in dhrystone, these functions are called as void type functions by default.
dhrystone/v2.2/dry.c:738:1: warning: control reaches end of non-void function [-Wreturn-type]
  738 | }
      | ^
dhrystone/v2.2/dry.c: In function ‘Proc_1’:
dhrystone/v2.2/dry.c:772:1: warning: control reaches end of non-void function [-Wreturn-type]
  772 | } /* Proc_1 */
      | ^
dhrystone/v2.2/dry.c: In function ‘Proc_2’:
dhrystone/v2.2/dry.c:795:1: warning: control reaches end of non-void function [-Wreturn-type]
  795 | } /* Proc_2 */
      | ^
dhrystone/v2.2/dry.c: In function ‘Proc_3’:
dhrystone/v2.2/dry.c:810:1: warning: control reaches end of non-void function [-Wreturn-type]
  810 | } /* Proc_3 */
      | ^
dhrystone/v2.2/dry.c: In function ‘Proc_4’:
dhrystone/v2.2/dry.c:822:1: warning: control reaches end of non-void function [-Wreturn-type]
  822 | } /* Proc_4 */
      | ^
dhrystone/v2.2/dry.c: In function ‘Proc_5’:
dhrystone/v2.2/dry.c:831:1: warning: control reaches end of non-void function [-Wreturn-type]
  831 | } /* Proc_5 */
      | ^

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-07 13:57:15 +08:00
chenrun1
15ef9781c5 coremark-pro:Ignore the implementation warning
Summary:
  Avoiding warnings caused by source code implementation leads to build failure. Most warnings are undef and the value is 0. We think it is not enabled.

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-08-06 19:30:39 -03:00
raiden00pl
00f9894778 benchmark: update gitignore for superpi and dhrystone
ignore downloaded files for superpi and dhrystone
2024-06-12 23:24:29 +08:00
Stuart Ianna
8b8094ea35 benchmarks/ramspeed: Don't expose interrupt control with kernel
configuration.

enter_critical_section and leave_critical_section aren't reliable
interfaces to expose in usermode, as they aren't available if
CONFIG_IRQCOUNT is enabled.
2024-05-21 09:05:57 +08:00
simbit18
3ff320756a benchmarks/cachespeed/CMakeLists.txt: fix the names of the config entry
CONFIG_TESTING_ -> CONFIG_BENCHMARK_
fix Relative file path does not match actual file.
2024-05-10 20:59:08 +08:00
simbit18
dadbea7e3b fix nxstyle
fix Relative file path does not match actual file.
Add missing Apache Foundation copyright header
2024-04-30 00:02:31 +08:00
Huang Qi
7159f09375 benchmarks: Change options from bool to tristate
This patch changes the enable options of coremark,
coremark-pro and cachespeed from bool to tristate.

This allows the user to select the benchmark to be built
as a elf module, which can be loaded and executed on the
target dynamically.

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
2024-04-17 22:47:22 +08:00
chenrun1
da0c870b94 dhrystone:Add dhrystone download link
Source Code:https://github.com/Keith-S-Thompson/dhrystone

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-04-08 14:11:31 +08:00
chenrun1
e9172a3195 fio:Added fio download link and corresponding fix patch
Source code:https://github.com/ldorau/fio

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-04-08 14:11:31 +08:00
chenrun1
b1e8fc784f coremark-pro:Added coremark-pro download link.
Source Code:https://github.com/eembc/coremark-pro

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-04-08 14:11:31 +08:00
chenrun1
270fa07cbd benchmarks:Move the performance tools to benchmark.
1.dhrystone
2.fio
3.coremark-pro

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-04-08 14:11:31 +08:00
chenrun1
e6c3930b2d apps:Move the performance tools to benchmark.
1.ramspeed
2.cachespeed
3.osperf
4.iozone
5.superPI

Signed-off-by: chenrun1 <chenrun1@xiaomi.com>
2024-04-08 14:11:31 +08:00
raiden00pl
364ca42837 cmake: fix spinlock_bench compilation 2024-02-05 08:46:22 -08:00
Xiang Xiao
083eb5e993 Fix the wrong comment banner
"Private Type"->"Private Types"
"Public Data Type"->"Public Types"

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2023-12-03 14:27:14 -03:00