Skip to main content

VisionFive 2 - RISC-V - Benchmark

Linux starfive 5.15.0-starfive #1 SMP Sun Jun 11 07:48:39 UTC 2023 riscv64 GNU/Linux

08.07.2023
sbc-bench v0.9.42

Results validation:

  * Measured clockspeed not lower than advertised max CPU clockspeed
  * Background activity (%system) OK
  * No throttling

Memory performance
memcpy: 945.1 MB/s
memset: 832.6 MB/s

7-zip total scores (3 consecutive runs): 4007,4217,4022, single-threaded: 1191

OpenSSL results:
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-cbc      22293.69k    29071.47k    31447.04k    32093.87k    32325.63k    32303.79k
aes-128-cbc      21209.34k    28618.43k    31332.78k    31983.96k    32309.25k    32303.79k
aes-192-cbc      21836.25k    26283.50k    27756.80k    28075.69k    28248.75k    28235.09k
aes-192-cbc      20190.68k    25560.19k    27555.93k    27999.91k    28246.02k    28124.96k
aes-256-cbc      18588.79k    23131.75k    24552.96k    24983.89k    25092.10k    25078.44k
aes-256-cbc      19878.79k    23515.82k    24686.76k    25000.28k    25094.83k    25078.44k
Full results
sbc-bench v0.9.42 StarFive VisionFive V2 (Sat, 08 Jul 2023 10:30:27 +0000)

Distributor ID:	Debian
Description:	Debian GNU/Linux bookworm/sid
Codename:	bookworm

/usr/bin/gcc (Debian 12.3.0-4) 12.3.0

Uptime: 10:30:28 up 45 min,  3 users,  load average: 0.16, 0.39, 0.67,  58.9°C,  324463800

Linux 5.15.0-starfive (starfive) 	07/08/23 	_riscv64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          13.13    0.00    0.49    2.08    0.00   84.30

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
mmcblk1           7.54       145.69       269.50      4721.64     396117     732721   12837420

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       325Mi       3.3Gi       3.3Mi       183Mi       3.5Gi
Swap:             0B          0B          0B

##########################################################################

Checking cpufreq OPP (sifive,u74-mc):

Cpufreq OPP: 1500    Measured: 1501 (1506.695/1498.953/1498.724)
Cpufreq OPP:  750    Measured:  748    (748.943/748.580/748.571)
Cpufreq OPP:  500    Measured:  498    (498.919/498.875/498.875)
Cpufreq OPP:  375    Measured:  373    (373.783/373.764/373.664)

##########################################################################

Hardware sensors:

120e0000.tmon-isa-0000
temp1:        +55.7 C  

##########################################################################

Executing benchmark on cpu0 (sifive,u74-mc):

tinymembench v0.4.9-nuumio (simple benchmark for memory throughput and latency)

CFLAGS: 
bandwidth test min repeats (-b): 2
bandwidth test max repeats (-B): 3
bandwidth test mem realloc (-M): no      (-m for realloc)
      latency test repeats (-l): 3
        latency test count (-c): 1000000

==========================================================================
== Memory bandwidth tests                                               ==
==                                                                      ==
== Note 1: 1MB = 1000000 bytes                                          ==
== Note 2: Test result is the best of repeated runs. Number of repeats  ==
==         is shown in brackets                                         ==
== Note 3: Results for 'copy' tests show how many bytes can be          ==
==         copied per second (adding together read and writen           ==
==         bytes would have provided twice higher numbers)              ==
== Note 4: 2-pass copy means that we are using a small temporary buffer ==
==         to first fetch data into it, and only then write it to the   ==
==         destination (source -> L1 cache, L1 cache -> destination)    ==
== Note 5: If sample standard deviation exceeds 0.1%, it is shown in    ==
==         brackets                                                     ==
==========================================================================

 C copy backwards                                 :    933.5 MB/s (3, 3.3%)
 C copy backwards (32 byte blocks)                :    937.1 MB/s (2)
 C copy backwards (64 byte blocks)                :    937.0 MB/s (3)
 C copy                                           :    945.7 MB/s (3, 2.2%)
 C copy prefetched (32 bytes step)                :    946.5 MB/s (2)
 C copy prefetched (64 bytes step)                :    946.5 MB/s (2)
 C 2-pass copy                                    :    741.4 MB/s (2)
 C 2-pass copy prefetched (32 bytes step)         :    745.0 MB/s (2)
 C 2-pass copy prefetched (64 bytes step)         :    744.3 MB/s (2)
 C scan 8                                         :    578.0 MB/s (3, 0.2%)
 C scan 16                                        :    552.1 MB/s (3)
 C scan 32                                        :   1017.2 MB/s (2)
 C scan 64                                        :   1294.3 MB/s (3, 1.7%)
 C fill                                           :    853.8 MB/s (3, 1.4%)
 C fill (shuffle within 16 byte blocks)           :    832.4 MB/s (2)
 C fill (shuffle within 32 byte blocks)           :    831.4 MB/s (2)
 C fill (shuffle within 64 byte blocks)           :    832.0 MB/s (2)
 ---
 libc memcpy copy                                 :    945.1 MB/s (2)
 libc memchr scan                                 :   1200.9 MB/s (2)
 libc memset fill                                 :    832.6 MB/s (2)

==========================================================================
== Memory latency test                                                  ==
==                                                                      ==
== Average time is measured for random memory accesses in the buffers   ==
== of different sizes. The larger is the buffer, the more significant   ==
== are relative contributions of TLB, L1/L2 cache misses and SDRAM      ==
== accesses. For extremely large buffer sizes we are expecting to see   ==
== page table walk with several requests to SDRAM for almost every      ==
== memory access (though 64MiB is not nearly large enough to experience ==
== this effect to its fullest).                                         ==
==                                                                      ==
== Note 1: All the numbers are representing extra time, which needs to  ==
==         be added to L1 cache latency. The cycle timings for L1 cache ==
==         latency can be usually found in the processor documentation. ==
== Note 2: Dual random read means that we are simultaneously performing ==
==         two independent memory accesses at a time. In the case if    ==
==         the memory subsystem can't handle multiple outstanding       ==
==         requests, dual random read has the same timings as two       ==
==         single reads performed one after another.                    ==
==========================================================================

block size : single random read / dual random read
      1024 :    0.0 ns          /     0.0 ns 
      2048 :    0.0 ns          /     0.0 ns 
      4096 :    0.0 ns          /     0.0 ns 
      8192 :    0.0 ns          /     0.0 ns 
     16384 :    0.0 ns          /     0.0 ns 
     32768 :    0.1 ns          /     0.0 ns 
     65536 :    5.5 ns          /    10.5 ns 
    131072 :    8.3 ns          /    15.8 ns 
    262144 :   10.0 ns          /    18.6 ns 
    524288 :   16.0 ns          /    28.6 ns 
   1048576 :   19.4 ns          /    30.7 ns 
   2097152 :   35.6 ns          /    52.0 ns 
   4194304 :   84.4 ns          /   165.9 ns 
   8388608 :  123.4 ns          /   241.8 ns 
  16777216 :  144.1 ns          /   284.8 ns 
  33554432 :  157.4 ns          /   312.4 ns 
  67108864 :  167.3 ns          /   333.8 ns 

##########################################################################

Executing ramlat on cpu0 (sifive,u74-mc), results in ns:

       size:  1x32  2x32  1x64  2x64 1xPTR 2xPTR 4xPTR 8xPTR
         4k: 2.788 2.859 2.670 2.753 2.002 2.002 2.755 5.589 
         8k: 2.752 2.836 2.670 2.752 2.004 2.007 2.753 5.592 
        16k: 2.757 2.836 2.672 2.753 2.004 2.002 2.755 5.590 
        32k: 2.754 2.839 2.671 2.761 2.003 2.004 2.761 5.594 
        64k: 13.47 24.11 13.36 24.11 13.36 24.03 48.13 96.54 
       128k: 13.47 24.12 13.35 24.11 13.46 24.03 48.19 96.45 
       256k: 13.44 24.11 13.35 24.10 13.36 24.03 48.14 96.42 
       512k: 20.09 31.09 20.02 29.57 18.69 29.37 53.48 101.8 
      1024k: 20.14 29.65 20.02 29.58 18.70 29.46 53.57 113.3 
      2048k: 47.63 80.62 47.47 81.31 45.54 80.30 150.0 281.8 
      4096k: 126.6 220.1 128.1 225.8 125.0 219.9 403.2 768.0 
      8192k: 155.4 262.9 154.8 266.7 153.8 262.8 483.3 925.1 
     16384k: 159.3 269.8 160.0 269.9 157.1 268.8 494.6 947.0 
     32768k: 171.5 283.4 170.6 283.1 170.6 282.2 508.9 965.3 
     65536k: 170.7 284.4 170.7 286.0 170.6 286.8 510.5 966.2 
    131072k: 173.0 287.8 174.1 287.7 172.6 287.0 517.6 982.3 

##########################################################################

Executing benchmark twice on cluster 0 (sifive,u74-mc)

OpenSSL 3.0.7, built on 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-cbc      22293.69k    29071.47k    31447.04k    32093.87k    32325.63k    32303.79k
aes-128-cbc      21209.34k    28618.43k    31332.78k    31983.96k    32309.25k    32303.79k
aes-192-cbc      21836.25k    26283.50k    27756.80k    28075.69k    28248.75k    28235.09k
aes-192-cbc      20190.68k    25560.19k    27555.93k    27999.91k    28246.02k    28124.96k
aes-256-cbc      18588.79k    23131.75k    24552.96k    24983.89k    25092.10k    25078.44k
aes-256-cbc      19878.79k    23515.82k    24686.76k    25000.28k    25094.83k    25078.44k

##########################################################################

Executing benchmark single-threaded on cpu0 (sifive,u74-mc)

7-Zip (a) 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE)

LE
CPU Freq: 64000000 64000000 64000000 - 128000000 256000000 512000000 1024000000 -

RAM size:    3891 MB,  # CPU hardware threads:   4
RAM usage:    435 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:        916   100    892    892  |      17473   100   1493   1492
23:        874   100    891    891  |      17163   100   1486   1486
24:        840   100    904    903  |      16803   100   1476   1475
25:        813   100    929    929  |      16402   100   1460   1460
----------------------------------  | ------------------------------
Avr:             100    904    904  |              100   1479   1478
Tot:             100   1191   1191

##########################################################################

Executing benchmark 3 times multi-threaded on CPUs 0-3

7-Zip (a) 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE)

LE
CPU Freq: - - - - - 256000000 512000000 1024000000 2048000000

RAM size:    3891 MB,  # CPU hardware threads:   4
RAM usage:    882 MB,  # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       2599   324    781   2528  |      67956   399   1453   5798
23:       2276   295    787   2320  |      66696   400   1444   5771
24:       2567   350    789   2761  |      64745   398   1428   5684
25:       1368   186    840   1563  |      63280   399   1413   5632
----------------------------------  | ------------------------------
Avr:             289    799   2293  |              399   1435   5721
Tot:             344   1117   4007

7-Zip (a) 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE)

LE
CPU Freq: 64000000 - - 64000000 - 256000000 512000000 - -

RAM size:    3891 MB,  # CPU hardware threads:   4
RAM usage:    882 MB,  # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       2646   330    781   2574  |      68021   399   1454   5803
23:       2585   337    782   2635  |      66690   400   1444   5770
24:       2539   345    791   2730  |      64869   399   1428   5695
25:       2525   359    802   2884  |      63398   399   1414   5642
----------------------------------  | ------------------------------
Avr:             343    789   2706  |              399   1435   5728
Tot:             371   1112   4217

7-Zip (a) 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C,Utf16=off,HugeFiles=on,64 bits,4 CPUs LE)

LE
CPU Freq: - - - - - 256000000 - - -

RAM size:    3891 MB,  # CPU hardware threads:   4
RAM usage:    882 MB,  # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       2484   308    785   2417  |      67836   399   1451   5788
23:       2592   338    781   2642  |      66305   398   1441   5737
24:       2555   347    791   2747  |      64819   399   1428   5690
25:       1334   182    839   1524  |      63279   399   1412   5632
----------------------------------  | ------------------------------
Avr:             294    799   2332  |              399   1433   5712
Tot:             346   1116   4022

Compression: 2293,2706,2332
Decompression: 5721,5728,5712
Total: 4007,4217,4022

##########################################################################

Testing maximum cpufreq again, still under full load. System health now:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:42:03: 1500MHz  3.30  66%   0%  65%   0%   0%   0%  66.2°C

Checking cpufreq OPP (sifive,u74-mc):

Cpufreq OPP: 1500    Measured: 1498 (1498.914/1498.799/1498.799)

##########################################################################

Hardware sensors:

120e0000.tmon-isa-0000
temp1:        +64.7 C  

##########################################################################

Thermal source: /sys/devices/virtual/thermal/thermal_zone0/ (cpu-thermal)

System health while running tinymembench:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:30:47: 1500MHz  0.40  15%   0%  13%   0%   2%   0%  57.1°C
10:30:57: 1500MHz  0.49  25%   0%  25%   0%   0%   0%  59.5°C
10:31:07: 1500MHz  0.57  25%   0%  25%   0%   0%   0%  59.8°C
10:31:17: 1500MHz  0.64  25%   0%  25%   0%   0%   0%  60.2°C
10:31:27: 1500MHz  0.69  25%   0%  24%   0%   0%   0%  59.7°C

System health while running ramlat:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:31:30: 1500MHz  0.80  15%   0%  13%   0%   2%   0%  59.9°C
10:31:33: 1500MHz  0.80  25%   0%  25%   0%   0%   0%  59.7°C
10:31:36: 1500MHz  0.81  25%   0%  24%   0%   0%   0%  59.7°C
10:31:39: 1500MHz  0.81  25%   0%  25%   0%   0%   0%  59.8°C
10:31:42: 1500MHz  0.83  25%   0%  24%   0%   0%   0%  59.8°C
10:31:45: 1500MHz  0.84  25%   0%  25%   0%   0%   0%  59.9°C
10:31:48: 1500MHz  0.84  25%   0%  25%   0%   0%   0%  59.7°C
10:31:51: 1500MHz  0.86  25%   0%  24%   0%   0%   0%  59.6°C
10:31:54: 1500MHz  0.86  25%   0%  25%   0%   0%   0%  59.5°C
10:31:57: 1500MHz  0.87  25%   0%  24%   0%   0%   0%  59.5°C
10:32:00: 1500MHz  0.88  25%   0%  25%   0%   0%   0%  59.5°C
10:32:03: 1500MHz  0.88  25%   0%  24%   0%   0%   0%  59.5°C
10:32:06: 1500MHz  0.89  25%   1%  24%   0%   0%   0%  59.7°C
10:32:09: 1500MHz  0.89  25%   0%  24%   0%   0%   0%  59.6°C

System health while running OpenSSL benchmark:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:32:11: 1500MHz  0.90  16%   0%  13%   0%   2%   0%  59.9°C
10:32:27: 1500MHz  0.92  25%   0%  24%   0%   0%   0%  60.0°C
10:32:43: 1500MHz  0.94  25%   0%  24%   0%   0%   0%  60.3°C
10:32:59: 1500MHz  0.95  25%   0%  25%   0%   0%   0%  60.3°C
10:33:15: 1500MHz  0.97  25%   0%  25%   0%   0%   0%  60.4°C
10:33:31: 1500MHz  0.97  25%   0%  25%   0%   0%   0%  60.4°C
10:33:47: 1500MHz  0.98  25%   0%  25%   0%   0%   0%  60.4°C

System health while running 7-zip single core benchmark:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:33:59: 1500MHz  0.98  16%   0%  13%   0%   1%   0%  60.7°C
10:34:09: 1500MHz  0.99  25%   0%  24%   0%   0%   0%  60.4°C
10:34:19: 1500MHz  0.99  25%   0%  24%   0%   0%   0%  60.4°C
10:34:29: 1500MHz  0.99  25%   0%  24%   0%   0%   0%  60.4°C
10:34:39: 1500MHz  0.99  25%   0%  24%   0%   0%   0%  60.4°C
10:34:49: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.5°C
10:34:59: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.5°C
10:35:09: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.5°C
10:35:19: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.6°C
10:35:30: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.5°C
10:35:40: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.6°C
10:35:50: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.5°C
10:36:00: 1500MHz  1.00  25%   0%  24%   0%   0%   0%  60.6°C

System health while running 7-zip multi core benchmark:

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
10:36:08: 1500MHz  1.08  16%   0%  14%   0%   1%   0%  60.7°C
10:36:32: 1500MHz  1.50  83%   0%  83%   0%   0%   0%  63.8°C
10:36:53: 1500MHz  2.29  87%   0%  87%   0%   0%   0%  64.5°C
10:37:16: 1500MHz  2.78  93%   1%  92%   0%   0%   0%  65.3°C
10:37:37: 1500MHz  2.99  46%   1%  45%   0%   0%   0%  63.2°C
10:37:58: 1500MHz  3.28  47%   0%  47%   0%   0%   0%  63.1°C
10:38:19: 1500MHz  3.42  78%   1%  77%   0%   0%   0%  64.6°C
10:38:41: 1500MHz  3.48  91%   0%  90%   0%   0%   0%  65.6°C
10:39:02: 1500MHz  3.46  91%   0%  90%   0%   0%   0%  65.8°C
10:39:23: 1500MHz  3.74  91%   1%  90%   0%   0%   0%  66.0°C
10:39:46: 1500MHz  3.98  90%   1%  89%   0%   0%   0%  66.3°C
10:40:07: 1500MHz  3.96  89%   0%  88%   0%   0%   0%  66.4°C
10:40:32: 1500MHz  3.83  92%   0%  91%   0%   0%   0%  66.9°C
10:40:56: 1500MHz  3.87  91%   0%  90%   0%   0%   0%  67.0°C
10:41:18: 1500MHz  3.76  64%   0%  63%   0%   0%   0%  65.1°C
10:41:39: 1500MHz  3.41  46%   0%  45%   0%   0%   0%  64.7°C
10:42:03: 1500MHz  3.30  66%   0%  65%   0%   0%   0%  66.2°C

##########################################################################

Linux 5.15.0-starfive (starfive) 	07/08/23 	_riscv64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          21.06    0.00    0.53    1.66    0.00   76.75

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
mmcblk1           6.18       117.73       215.42      3753.30     402681     736805   12837420

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       321Mi       3.3Gi       3.3Mi       191Mi       3.5Gi
Swap:             0B          0B          0B

CPU sysfs topology (clusters, cpufreq members, clockspeeds)
                 cpufreq   min    max
 CPU    cluster  policy   speed  speed   core type
  0        0        0      375    1500   sifive,u74-mc
  1        0        0      375    1500   sifive,u74-mc
  2        0        0      375    1500   sifive,u74-mc
  3        0        0      375    1500   sifive,u74-mc

Architecture:        riscv64
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3

SoC guess: StarFive JH7110
DT compat: starfive,visionfive-v2
           starfive,jh7110
 Compiler: /usr/bin/gcc (Debian 12.3.0-4) 12.3.0 / riscv64-linux-gnu
 Userland: riscv64
   Kernel: 5.15.0-starfive/riscv64
           CONFIG_HZ=100
           CONFIG_HZ_100=y
           CONFIG_PREEMPT_COUNT=y
           CONFIG_PREEMPT_NONE=y

##########################################################################

Kernel 5.15.0 is not latest 5.15.120 LTS that was released on 2023-07-05.

See https://endoflife.date/linux for details. It is somewhat likely that
a lot of exploitable vulnerabilities exist for this kernel as well as many
unfixed bugs.

But this version string doesn't matter since this is not an official LTS Linux
from kernel.org. This device runs a StarFive vendor/BSP kernel.

##########################################################################

cpu0/index0: 32K, level: 1, type: Instruction
cpu0/index1: 32K, level: 1, type: Data
cpu0/index2: 2048K, level: 2, type: Unified
cpu1/index0: 32K, level: 1, type: Instruction
cpu1/index1: 32K, level: 1, type: Data
cpu1/index2: 2048K, level: 2, type: Unified
cpu2/index0: 32K, level: 1, type: Instruction
cpu2/index1: 32K, level: 1, type: Data
cpu2/index2: 2048K, level: 2, type: Unified
cpu3/index0: 32K, level: 1, type: Instruction
cpu3/index1: 32K, level: 1, type: Data
cpu3/index2: 2048K, level: 2, type: Unified

##########################################################################

   cpu_vdd: 1040 mV (1540 mV max)

   opp-table-0:
       375 MHz    800.0 mV
       500 MHz    800.0 mV
       750 MHz    800.0 mV
      1500 MHz   1040.0 mV

##########################################################################

Results validation:

  * Measured clockspeed not lower than advertised max CPU clockspeed
  * Background activity (%system) OK
  * No throttling

| StarFive VisionFive V2 | 1500 MHz | 5.15 | Debian GNU/Linux bookworm/sid riscv64 | 4080 | 1191 | 25080 | 950 | 830 | - |