Skip to content

Milk-V Mars #46

Description

@geerlingguy

DSC06020

Basic information

  • Board URL (official): https://milkv.io/mars
  • Board purchased from: Provided by Milk-V, available at Arace
  • Board purchase date: June 26, 2024
  • Board specs (as tested): MV050-D8 (8GB RAM)
  • Board price (as tested): $68.99

Linux/system information

# output of `screenfetch`
         _,met$$$$$gg.           user@milkv
      ,g$$$$$$$$$$$$$$$P.        OS: Debian  bookworm
    ,g$$P""       """Y$$.".      Kernel: riscv64 Linux 5.15.0
   ,$$P'              `$$$.      Uptime: 19m
  ',$$P       ,ggs.     `$$b:    Packages: 1289
  `d$$'     ,$P"'   .    $$$     Shell: bash 5.2.2
   $$P      d$'     ,    $$P     Disk: 3.1G / 7.3G (43%)
   $$:      $$.   -    ,d$$'     CPU: Unknown @ 4x 1.5GHz
   $$\;      Y$b._   _,d$P'      RAM: 474MiB / 7908MiB
   Y$$.    `.`"Y$$$$P"'         
   `$$b      "-.__              
    `Y$$                        
     `Y$$.                      
       `$$b.                    
         `Y$$b.                 
            `"Y$b._             
                `""""    

# output of `uname -a`
Linux milkv 5.15.0 #1 SMP Mon Nov 13 18:56:24 CST 2023 riscv64 GNU/Linux

Benchmark results

CPU

Power

  • Idle power draw (at wall): 3 W
  • Maximum simulated power draw (stress-ng --matrix 0): 5.3 W
  • During Geekbench multicore benchmark: 5.3 W
  • During top500 HPL benchmark: 4.7 W

Disk

SanDisk Extreme A2 256 GB microSD Card

Benchmark Result
iozone 4K random read 5.79 MB/s
iozone 4K random write 0.00 MB/s
iozone 1M random read 21.66 MB/s
iozone 1M random write 0.00 MB/s
iozone 1M sequential read 21.68 MB/s
iozone 1M sequential write 20.26 MB/s
wget https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh
chmod +x disk-benchmark.sh
sudo MOUNT_PATH=/ TEST_SIZE=1g ./disk-benchmark.sh

Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading.

Also consider running PiBenchmarks.com script.

Network

iperf3 results:

  • iperf3 -c $SERVER_IP: 924 Mbps
  • iperf3 -c $SERVER_IP --reverse: 776 Mbps
  • iperf3 -c $SERVER_IP --bidir: 798 Mbps up, 294 Mbps down

(Be sure to test all interfaces, noting any that are non-functional.)

GPU

glmark2-es2 results:

Heh... it _ran_, but it was painful. Got a score of "0" after many tests reported 0 FPS.

Note: This benchmark requires an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!

TODO: See this issue for discussion about a full suite of standardized GPU benchmarks.

Memory

tinymembench results:

Click to expand memory benchmark result
tinymembench v0.4.10 (simple benchmark for memory throughput and latency)

==========================================================================
== Memory bandwidth tests                                               ==
==                                                                      ==
== Note 1: 1MB = 1000000 bytes                                          ==
== Note 2: 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 3: 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 4: If sample standard deviation exceeds 0.1%, it is shown in    ==
==         brackets                                                     ==
==========================================================================

 C copy backwards                                     :   1006.1 MB/s (0.7%)
 C copy backwards (32 byte blocks)                    :   1008.0 MB/s (1.3%)
 C copy backwards (64 byte blocks)                    :   1006.6 MB/s (0.8%)
 C copy                                               :   1023.0 MB/s
 C copy prefetched (32 bytes step)                    :   1023.8 MB/s
 C copy prefetched (64 bytes step)                    :   1026.2 MB/s (0.2%)
 C 2-pass copy                                        :    754.0 MB/s (1.4%)
 C 2-pass copy prefetched (32 bytes step)             :    763.0 MB/s (0.8%)
 C 2-pass copy prefetched (64 bytes step)             :    877.8 MB/s (4.9%)
 C fill                                               :    871.8 MB/s (2.6%)
 C fill (shuffle within 16 byte blocks)               :    904.8 MB/s (2.9%)
 C fill (shuffle within 32 byte blocks)               :    864.0 MB/s (2.1%)
 C fill (shuffle within 64 byte blocks)               :    861.3 MB/s (2.2%)
 ---
 standard memcpy                                      :   1024.9 MB/s
 standard memset                                      :    815.7 MB/s (0.8%)

==========================================================================
== 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.0 ns          /     0.0 ns 
     65536 :    5.4 ns          /    10.5 ns 
    131072 :    8.1 ns          /    15.8 ns 
    262144 :    9.5 ns          /    18.6 ns 
    524288 :   14.8 ns          /    28.5 ns 
   1048576 :   16.4 ns          /    30.6 ns 
   2097152 :   23.2 ns          /    41.3 ns 
   4194304 :   84.7 ns          /   166.2 ns 
   8388608 :  122.4 ns          /   242.4 ns 
  16777216 :  143.6 ns          /   285.4 ns 
  33554432 :  157.3 ns          /   313.3 ns 
  67108864 :  167.7 ns          /   334.5 ns

sbc-bench results

Run sbc-bench and paste a link to the results here:

https://0x0.st/Xa9J.bin

Phoronix Test Suite

Results from pi-general-benchmark.sh:

  • pts/encode-mp3: N/A (test does not compile)
  • pts/x264 4K: N/A (test does not compile)
  • pts/x264 1080p: N/A (test does not compile)
  • pts/phpbench: 63136
  • pts/build-linux-kernel (defconfig): N/A (test quits with E: ERROR: modpost: "zero" [net/netfilter/nf_nat.ko] undefined!)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions